国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Webpy+Apache HTTP Server 微信小程序架構(gòu)搭建研究

2018-01-29 12:35陳琦
無線互聯(lián)科技 2017年18期
關(guān)鍵詞:微信小程序

陳琦

摘要:微信小程序依托擁有巨大用戶群的微信,極有可能成為繼微信公眾號(hào)之后又一個(gè)亮點(diǎn),其特點(diǎn)為輕量、用戶友好,文章通過使用微信小程序開發(fā)平臺(tái)、Webpy+ApacheHTTPServer,介紹一種開發(fā)微信小程序的輕量級(jí)架構(gòu)以及設(shè)計(jì)思路,以供開

發(fā)者參考。

關(guān)鍵詞:微信小程序;Webpy;Apache HTTPServer;架構(gòu)搭建

2016年9月2舊,微信小程序正式開啟內(nèi)測(cè)。2017年1月9日0點(diǎn),微信第一批小程序正式上線,用戶可以體驗(yàn)到各種各樣小程序提供的服務(wù)[1]。2017年第一季度,騰訊公布的微信月活躍賬戶數(shù)達(dá)到9.38億,比去年同期增長23%[2]。在一個(gè)相對(duì)巨大的用戶群體上微信依然保持高速增長,其生命力非同一般。作為一種新興事物,微信小程序依托擁有巨大用戶群的微信,極有可能成為繼微信公眾號(hào)之后的又一個(gè)亮點(diǎn)。

微信小程序有別于普通APP最顯著的一點(diǎn)是不用下載和安裝,通過搜索或掃碼即可進(jìn)入小程序,那么這就要求小程序要盡量做到輕量級(jí);微信小程序有別于微信公眾號(hào)內(nèi)應(yīng)用的最顯著特點(diǎn)是,小程序更接近于原生APP應(yīng)用,而公眾號(hào)應(yīng)用就是網(wǎng)頁Web程序,因此小程序在用戶友好性上更勝一籌。

小程序,顧名思義,相對(duì)于一般APP而言體量較小,那么對(duì)于開發(fā)者而言一個(gè)快速而輕量級(jí)的開發(fā)架構(gòu)就成了開發(fā)微信小程序的首選,本文介紹一種快速開發(fā)的架構(gòu)及設(shè)計(jì)思路,以供參考。

1架構(gòu)中主要框架的選擇及介紹

在架構(gòu)中,客戶端框架(也稱為前端框架)、服務(wù)器端框架(也稱為后端框架)、以及服務(wù)器中間件的選擇是關(guān)鍵,下面從這3個(gè)方面進(jìn)行相應(yīng)介紹。

1.1微信小程序前端框架

小程序前端開發(fā)框架是騰訊官方提供的小程序開發(fā)框架,要想讓小程序可以在微信上使用,該前端框架為必選項(xiàng)。

該框架提供了自己的視圖層描述標(biāo)簽語言(WeiXmMarkupLanguage)WXML和樣式語言(WeiXmStyleSheets,WXSS)以及基于JavaScript的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),讓開發(fā)者可以方便地聚焦于數(shù)據(jù)與邏輯上[3]。其中WXML是一種類似于Web開發(fā)中HTML的XML語言,用于組織頁面結(jié)構(gòu);WXSS是一種近似于Web開發(fā)中CSS的樣式表用于表述WXML的顯示方式;其邏輯層使用JavaScript語言和Web開發(fā)中一致;其數(shù)據(jù)層可以認(rèn)為集成于邏輯層的JavaSmpt中,每一個(gè)程序頁面都有一個(gè)Page.data用于存放相關(guān)頁面需要使用的數(shù)據(jù)。在使用過程中可以發(fā)現(xiàn),雖然與Web開發(fā)中一樣都是用JavaScript,但是兩者之間也存在一定差異,例如:在Web開發(fā)中修改頁面上數(shù)據(jù),需要先找到HTML上的對(duì)應(yīng)節(jié)點(diǎn)然后修改節(jié)點(diǎn)上的數(shù)據(jù),而小程序中采取的方式是在WXML的節(jié)點(diǎn)上直接使用雙括號(hào)綁定Page.data中的數(shù)據(jù)(形如{{some_data}}),修改Page.data中的數(shù)據(jù)時(shí),頁面顯示內(nèi)容實(shí)時(shí)變換。

1.2月良務(wù)器端開發(fā)框架:Webpy

微信小程序前端框架與后端服務(wù)器交互的協(xié)議主要使用安全超文本傳輸協(xié)議服務(wù)器(HyperTextTransportProtocolServer,HTTPS),而且前后端數(shù)據(jù)傳輸時(shí)主要使用JS0N,與Web開發(fā)中類似,那么可以選取的服務(wù)器端框架就有很多。JAVA,PHP,C#,Ruby,Python等很多開發(fā)語言都有相當(dāng)成熟的Web開發(fā)框架,在眾多框架中選擇合適的框架并不簡(jiǎn)單,本文選擇Webpy作為后端框架主要基于以下幾點(diǎn)考量。

1.2.1足夠輕量

Webpy是一個(gè)非常輕量且功能齊全的PythonWeb框架,最新版本0.38的源文件大小僅為1.1MB,而且Python屬于Linux服務(wù)器原生支持語言,這樣一個(gè)框架部署在Linux服務(wù)器上時(shí),對(duì)服務(wù)器壓力相對(duì)較小。

1.2.2可以很容易地讓頁面模板和后臺(tái)服務(wù)器端程序解耦由于微信小程序的前端必須使用騰訊自己本身的框架,那么開發(fā)小程序的服務(wù)器端框架必然要求其模板語言相對(duì)獨(dú)立,那么類似于PHP,ASP,JSP等技術(shù)就不利于小程序的開發(fā),而Webpy的頁面模板就相對(duì)獨(dú)立,可以輕松地和服務(wù)器端解耦。

1.2.3夠靈活

由于存在微信自身服務(wù)器和小程序服務(wù)器相互溝通的場(chǎng)景,以及考慮到小程序才剛剛起步,以后出現(xiàn)調(diào)整在所難免,那么一個(gè)相對(duì)靈活的后端框架,用于應(yīng)付各種不同變化和需求就很必要。在這一點(diǎn)上,Webpy的核心路由表非常容易維護(hù),便于修改,可以適用于各種場(chǎng)景。

1.3服務(wù)器中間件:ApacheHTTPServer

ApacheHTTPServer(簡(jiǎn)稱Apache)是Apache軟件基

金會(huì)的一個(gè)開放源碼的網(wǎng)頁服務(wù)器,可以在大多數(shù)計(jì)算機(jī)操作系統(tǒng)中運(yùn)行,由于其多平臺(tái)和安全性被廣泛使用,是當(dāng)前世界使用排名第一的Web服務(wù)器軟件。其快速、可靠并且是一個(gè)模塊化的服務(wù)器,可通過簡(jiǎn)單的API擴(kuò)展,將Perl/Python等解釋器編譯到服務(wù)器中,可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,受到廣泛認(rèn)可[4]。

ApacheHTTPServer作為一款優(yōu)良的Web服務(wù)器,其靈活性、穩(wěn)定性均滿足作為微信小程序后端服務(wù)器的需要,同時(shí)只需添加VntualHost(虛擬機(jī))監(jiān)聽443端口,配置SSL相應(yīng)設(shè)置,即可滿足微信小程序使用HTTPS服務(wù)傳輸?shù)男枰?。再者,由于后端框架選擇了Webpy,ApacheHTTPServer對(duì)于Python語言的友好型,也成了被選擇的原因之一。

2主要技術(shù)難點(diǎn)剖析

2.1服務(wù)器端與客戶端資源分配的設(shè)計(jì)思路

對(duì)于擁有客戶端和服務(wù)器端的程序來說,到底是重客戶端(業(yè)務(wù)邏輯多在客戶端進(jìn)行處理)還是重服務(wù)器端(業(yè)務(wù)邏輯多在服務(wù)器端進(jìn)行處理),都需要提前確定。按照常規(guī)瀏覽器/服務(wù)器(Browser/Server,B/S)架構(gòu)的程序,一般是重服務(wù)器端,而客戶端程序/服務(wù)器(CUent/Server,C/S)架構(gòu)的程序一般是重客戶端或者兩者并重。而目前微信小程序,按照對(duì)“小程序”字面的含義,應(yīng)當(dāng)屬于C/S架構(gòu),但其使用的技術(shù),卻大量參照了B/S架構(gòu)Web開發(fā)的內(nèi)容,例如:WXML參照HTML,WXSS參照CSS,JavaScript與Web開發(fā)幾乎一樣用于頁面邏輯層的編寫。經(jīng)過一段時(shí)間的研究,本文認(rèn)為微信小程序應(yīng)當(dāng)參照C/S架構(gòu)程序的思路進(jìn)行編寫,原因如下:endprint

(1)微信小程序區(qū)別于微信公眾號(hào)應(yīng)用的最大特點(diǎn)就是其客戶端友好性,如果采取輕客戶端、重服務(wù)端的做法無疑會(huì)使小程序的優(yōu)勢(shì)被同樣是新近興起的H5開發(fā)所完全取代;

(2)微信小程序運(yùn)行時(shí)以微信APP為依托,而微信在全球眾多用戶的手機(jī)上均表現(xiàn)良好,因此可以推斷重客戶端的微信小程序不會(huì)對(duì)用戶使用的設(shè)備造成過大壓力;

(3)重客戶端的做法可以減少網(wǎng)絡(luò)傳輸?shù)拇螖?shù),讓使用無線網(wǎng)絡(luò)的移動(dòng)用戶更少感覺到網(wǎng)絡(luò)延時(shí)造成的卡頓。

由此本文給出開發(fā)微信小程序時(shí)一些建議:

(1)編寫微信小程序時(shí)應(yīng)當(dāng)將業(yè)務(wù)邏輯寫在客戶端,服務(wù)器端重點(diǎn)作為存儲(chǔ)數(shù)據(jù)、組織數(shù)據(jù)的數(shù)據(jù)層服務(wù)器;

(2)在進(jìn)入微信小程序時(shí),應(yīng)當(dāng)在加載時(shí)盡可能多地加載服務(wù)器端提供的JSON數(shù)據(jù),以便在后續(xù)操作中無需二次加載,減少網(wǎng)絡(luò)延時(shí)對(duì)用戶造成的影響;

(3)在小程序操作過程中,僅在用戶完成操作甚至退出小程序時(shí),向服務(wù)器端提交同步數(shù)據(jù),其他情況均在小程序的內(nèi)存中處理數(shù)據(jù),進(jìn)一步減少小程序操作的響應(yīng)時(shí)間。

2.2微信小程序與服務(wù)器間的交互認(rèn)證

在使用微信小程序時(shí),用戶的身份認(rèn)證是一個(gè)與其他程序開發(fā)很不同的地方,原因在于這里涉及了微信自己的服務(wù)器與小程序服務(wù)器端的交互。完成微信小程序身份認(rèn)證的方式如下:(1)小程序調(diào)用wx.login()接口獲取微信用戶的code,并將code發(fā)送至小程序服務(wù)器;(2)小程序服務(wù)器將code與小程序唯一標(biāo)示appid以及小程序秘鑰AppSecret發(fā)送給微信服務(wù)器;(3)微信服務(wù)器根據(jù)獲得數(shù)據(jù)將用戶的唯一標(biāo)識(shí)opemd發(fā)送給小程序服務(wù)器;(4)微信小程序服務(wù)器根據(jù)openid生成Session會(huì)話,并將Session發(fā)送給小程序客戶端,此后小程序的客戶端與服務(wù)器端的交互均以該會(huì)話進(jìn)行。

2.3Webpy與ApacheHTTPServer之間的整合

Webpy與ApacheHTTPServer之間的整合可以通過ApacheHTTPServer的WSGI模塊mod_wsgi進(jìn)行。

在ApacheHTTPServer的配置文件HTTPd中添加語句:

(1)LoadModulewsgi_modulemodules/mod_wsgi.so#加載wsgi模塊;

(2)WSGIScriptAlias/appname/var/www/Webpy-app/code.py/#為程序入口起別名。

其中code.py文件為Webpy的入口文件。

同時(shí)修改Webpy的code.py文件在文件最后添加如下語句即可:

application=Web.application(urls,globals()).wsgifunc()。

3結(jié)語

通過對(duì)微信小程序的研究及測(cè)試,本文提出了一種可以用于快速開發(fā)微信小程序的架構(gòu),并解決了架構(gòu)中的技術(shù)難點(diǎn),提供了相關(guān)開發(fā)思路,為想要進(jìn)行微信小程序開發(fā)的技術(shù)人員提供了一定的參考。

[參考文獻(xiàn)]

[1]百度百科.微信小程序[EB/OL].(2017-07-11)[2017-09-25].HTTPs://baike.baidu.com/item/-

[2]騰訊.騰訊公布2017年第一季度業(yè)績[EB/OL].(2017-05-17)[2017-09-25].HTTPs://www.tencent.com/zh-cn/articles/8003431495014482.pdf.

[3]騰訊.微信公眾平臺(tái)-小程序-開發(fā)-框架[EB/OL].(2016-09-21)[2017-09-25].HTTPs://mp.weixin.qq.com/debug八vxadoc/dev/framework/MINA.html.

[4]百度百科.apache(Web服務(wù)器)[EB/OL].(2015-09-16)[2017-09-25].HTTPs://baike.baidu_com/item/apache/6265.endprint

猜你喜歡
微信小程序
當(dāng)圖書館遇上微信小程序