• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      陳琦

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

      發(fā)者參考。

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

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

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

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

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

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

      1.1微信小程序前端框架

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

      該框架提供了自己的視圖層描述標簽語言(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ù)層可以認為集成于邏輯層的JavaSmpt中,每一個程序頁面都有一個Page.data用于存放相關(guān)頁面需要使用的數(shù)據(jù)。在使用過程中可以發(fā)現(xiàn),雖然與Web開發(fā)中一樣都是用JavaScript,但是兩者之間也存在一定差異,例如:在Web開發(fā)中修改頁面上數(shù)據(jù),需要先找到HTML上的對應節(jié)點然后修改節(jié)點上的數(shù)據(jù),而小程序中采取的方式是在WXML的節(jié)點上直接使用雙括號綁定Page.data中的數(shù)據(jù)(形如{{some_data}}),修改Page.data中的數(shù)據(jù)時,頁面顯示內(nèi)容實時變換。

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

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

      1.2.1足夠輕量

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

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

      1.2.3夠靈活

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

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

      ApacheHTTPServer(簡稱Apache)是Apache軟件基

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      2.3Webpy與ApacheHTTPServer之間的整合

      Webpy與ApacheHTTPServer之間的整合可以通過ApacheHTTPServer的WSGI模塊mod_wsgi進行。

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

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

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

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

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

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

      3結(jié)語

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

      [參考文獻]

      [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]騰訊.微信公眾平臺-小程序-開發(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

      猜你喜歡
      微信小程序
      圖書館微信小程序的應用現(xiàn)狀及前景分析
      基于CNKI的微信小程序研究文獻計量分析
      信息技術(shù)與專業(yè)課程融合路徑探索
      決策探索(2017年12期)2017-07-13 11:11:12
      當圖書館遇上微信小程序
      圖書與情報(2016年6期)2017-04-17 23:54:02
      炎陵县| 边坝县| 深州市| 岗巴县| 台北县| 富顺县| 凤山市| 上林县| 曲水县| 九江市| 香河县| 金乡县| 登封市| 白玉县| 报价| 剑阁县| 台北县| 金川县| 定南县| 和平区| 临潭县| 芷江| 柳州市| 高密市| 临洮县| 湖口县| 镇宁| 鄂托克旗| 上栗县| 晋江市| 镇原县| 闽清县| 乃东县| 牙克石市| 资阳市| 泊头市| 沂南县| 余江县| 武平县| 泽普县| 五原县|