亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        服務(wù)器端WEB開發(fā)新興技術(shù)的最佳實(shí)踐

        2013-11-09 11:52:46李太寧
        關(guān)鍵詞:開發(fā)人員服務(wù)器端代碼

        葉 鈺,李太寧

        (1. 泰州職業(yè)技術(shù)學(xué)院 信息工程學(xué)院;

        2. 新生網(wǎng)絡(luò)科技有限公司,江蘇 泰州 225300)

        傳統(tǒng)意義上,WEB開發(fā)中服務(wù)器端與客戶端是密不可分的。無論是基本的ASP、JSP、PHP技術(shù),還是稍上層一點(diǎn)的Struts、Spring、JSF、Seam等技術(shù),都將生成WEB頁面的代碼編寫包含在服務(wù)器端開發(fā)過程中。從解耦與分層方面分析,需要服務(wù)器端代碼完全不考慮頁面顯示,但在實(shí)際開發(fā)過程中,由于移動(dòng)WEB應(yīng)用的火爆,移動(dòng)終端的普及,目前終端種類的數(shù)量已經(jīng)無法讓項(xiàng)目在設(shè)計(jì)階段就考慮周全,所以在編寫服務(wù)器端代碼的時(shí)候完全隔離WEB界面有關(guān)代碼將成為所有WEB開發(fā)人員必備的素質(zhì)之一[1]。

        下文將從技術(shù)選型與最佳實(shí)踐上探討解決服務(wù)器端WEB開發(fā)的一些重點(diǎn)、難點(diǎn)和需要使用到的技術(shù)。

        1 開發(fā)語言

        本文選擇Java這一最普遍的WEB開發(fā)語言,對(duì)比種種新興的腳本語言,Java的功能并不強(qiáng)大,也因?yàn)榉N種限制(例如缺少閉包、不完全面向?qū)ο?、語法不夠靈活等),使代碼量相對(duì)較大。但也正是因?yàn)檫@種限制,讓Java成為了團(tuán)隊(duì)開發(fā)與大型項(xiàng)目的首選語言,長(zhǎng)期占據(jù)著開發(fā)語言的前三名。Java語言即使沒有注釋,團(tuán)隊(duì)成員也能分辨基本的功能實(shí)現(xiàn)。同時(shí),使用Java語言開發(fā)的人員較多,其學(xué)習(xí)成本與二次開發(fā)成本相對(duì)為所有語言中最低的。這樣可提高項(xiàng)目的可持續(xù)性,大大降低項(xiàng)目的成本。其他開發(fā)語言,如Ruby等新興語言由于太過靈活,同樣的功能,每個(gè)開發(fā)人員寫出來的代碼都會(huì)有根本的變化,這雖然讓個(gè)人的開發(fā)效率得到了提高,但卻大大降低了團(tuán)隊(duì)的開發(fā)效率。所以Java語言可作為WEB服務(wù)器端開發(fā)的最佳實(shí)踐語言。

        2 版本控制

        在軟件開發(fā)過程中,調(diào)優(yōu)、調(diào)試、測(cè)試的時(shí)間占據(jù)了開發(fā)流程的大部分時(shí)間,在這過程中,如果沒有對(duì)代碼進(jìn)行版本控制,那么一旦出現(xiàn)錯(cuò)誤,則很難對(duì)錯(cuò)誤進(jìn)行追溯。同時(shí)需求的變更、團(tuán)隊(duì)開發(fā)、版本測(cè)試等許多情況都讓版本控制成為開發(fā)過程中必不可少的工具之一。版本控制軟件的選擇很多,其中GIT版本控制系統(tǒng)[2],其穩(wěn)定性與適用性經(jīng)歷了大量的考驗(yàn),排名第一的市場(chǎng)占有率使其成為了當(dāng)之無愧首選版本控制工具。

        Git的主要優(yōu)勢(shì)在于其分布式的管理方式。由于采用了去中心化的版本管理思想,Git不用安裝服務(wù)器端,不同的客戶端都可以作為完整的服務(wù)器端進(jìn)行部署,各客戶端之間的傳輸方式?jīng)]有任何限制。同時(shí)Git的快速分支功能使得快速迭代開發(fā)的成本可以忽略不計(jì),任何一個(gè)標(biāo)點(diǎn)的修改都可以作為新的分支或版本保存,并隨時(shí)回溯,大大增加了開發(fā)效率。

        3 開發(fā)部署

        部署與測(cè)試的效率是Java等編譯型語言的弱項(xiàng)。每次修改Java代碼后,想要看到運(yùn)行效果都必須經(jīng)歷重新編譯、部署、重啟web server等繁瑣的過程。即使這些過程完全自動(dòng)化運(yùn)行,最快也需要5~10秒的時(shí)間,這幾秒的時(shí)間常常會(huì)中斷開發(fā)思路,造成開發(fā)人員精力分散。如何實(shí)現(xiàn)快速開發(fā)部署,以至于如何實(shí)現(xiàn)瞬時(shí)熱部署(hot deploy)就成為WEB開發(fā)非常重要的一環(huán)。近兩年,隨著相關(guān)技術(shù)的成熟,已經(jīng)有四五種實(shí)現(xiàn)快速開發(fā)部署的工具,不過技術(shù)原理都無非是修改Java的編譯過程,讓Java代碼的修改直接作用到Java字節(jié)碼生成階段。例如JBoss的Application Server 7.0以后版本使用的hot deploy方式。對(duì)于這方面,不同的工具適用性都有種種的限制,需要開發(fā)人員在項(xiàng)目初期根據(jù)自己的需要來選擇。

        4 會(huì)話狀態(tài)

        本文主要探討的是服務(wù)器端的WEB開發(fā),保持用戶狀態(tài)的細(xì)節(jié)問題就全部交由客戶端去操作。大致的方向有cookie加密、Local Storage等。篇幅原因,這里不詳細(xì)闡述。

        5 實(shí)體關(guān)系映射與雙向數(shù)據(jù)綁定

        實(shí)體關(guān)系映射(ORM)是軟件開發(fā)中重要的思想與手段,充分使用ORM后,軟件的結(jié)構(gòu)與開發(fā)效率都會(huì)得到巨大的提升。得益于Hibernate,Java成為了ORM發(fā)揮優(yōu)勢(shì)的最佳環(huán)境。

        自1970年MVC模式被提出,如今已經(jīng)成為服務(wù)器端WEB開發(fā)的標(biāo)準(zhǔn)模型[3]。但MVC模型(如圖1所示)并不能很好的適應(yīng)本文提出的思想。由于完全屏蔽了用戶界面的生成,所以與客戶端的交互需要全部使用對(duì)象來實(shí)現(xiàn)。

        如圖2所示,客戶端與服務(wù)器端交互的數(shù)據(jù)需要全部組織并處理成對(duì)象,而這些對(duì)象與Java程序中的Model是對(duì)應(yīng)的,從而實(shí)現(xiàn)了Controller在處理的時(shí)候只需要根據(jù)對(duì)象的屬性與狀態(tài)來進(jìn)行有關(guān)的業(yè)務(wù)處理,并由ORM持久化到數(shù)據(jù)庫中。服務(wù)器端與客戶端交互的對(duì)象全部由JSON Object來實(shí)現(xiàn)。

        6 模板生成與WebService

        所有接受客戶端請(qǐng)求的地址全部以web service的方式實(shí)現(xiàn)。每個(gè)web service請(qǐng)求均會(huì)產(chǎn)生兩條請(qǐng)求,一個(gè)請(qǐng)求返回具體的HTML頁面文件,另一個(gè)請(qǐng)求返回JSON Object。所有HTML頁面均使用靜態(tài)地址獲得,由web server來自動(dòng)處理,不再需要controller參與HTML頁面的處理過程,不同的controller只需要根據(jù)請(qǐng)求返回JSON Object,下面以考試系統(tǒng)的項(xiàng)目中用來處理Question對(duì)象的controller為例。具體代碼如下:

        public interface Controller{

        ……

        public Map objectsMap;

        ……

        protected void returnJSON(){}

        ……

        }

        其中objectsMap存儲(chǔ)所有需要返回的對(duì)象,returnJSON則將對(duì)象組織成需要的格式寫入HTTP Response中。在具體的實(shí)現(xiàn)中,需要有一個(gè)Class來實(shí)現(xiàn)這個(gè)接口,并處理通用的處理代碼,例如對(duì)objectsMap的存取,HTTP Response的生成等,同時(shí)加入一些通用的業(yè)務(wù)邏輯,例如異常的如理,數(shù)據(jù)的驗(yàn)證。然后由具體的controller來集成這個(gè)Class,實(shí)現(xiàn)具體的業(yè)務(wù)邏輯。例如以下代碼:

        public class QuestionAction extends Ctrl{

        ……

        public static void save(Question question){

        if(Common.isEmpty(question.id)){question.create();

        }else question.save();

        objectsMap.put("o",question);

        returnJSON();

        }

        ……

        }

        其中Ctrl為處理一些通用操作的Class。save方法為將客戶端傳來的question對(duì)象保存到數(shù)據(jù)庫中。在save方法接收到question對(duì)象以后,先做一些基本的驗(yàn)證,例如判斷是新建還是保存,如果是新建的請(qǐng)求,則傳來的question的id是空。保存到數(shù)據(jù)庫后,將保存完成的question對(duì)象返回到客戶端。

        7 結(jié)語

        從上面的例子可以看出,采用本文提到的各種技術(shù)后,服務(wù)器端的代碼變得異常清晰明了。無論是擁有多年經(jīng)驗(yàn)的資深開發(fā)人員,還是剛接觸項(xiàng)目的新手都能輕松讀懂代碼,同時(shí)由于版本控制的充分使用,使得維護(hù)成本大大降低。服務(wù)器端WEB開發(fā)效率因此得到巨大提升。本文提及的最佳實(shí)踐系筆者多年開發(fā)經(jīng)驗(yàn)的總結(jié)和長(zhǎng)期觀察目前國(guó)外各大公司的WEB APP開發(fā)趨勢(shì)所得,越來越多的新興應(yīng)用也已經(jīng)采用類似思想,例如Sony's PlayStation 3的YouTube應(yīng)用(http://us.playstation.com/youtube/)和在開發(fā)人員中非常流行的Plunker(http://plnkr.co/)等。筆者在幾個(gè)實(shí)際項(xiàng)目中使用了該思想,各項(xiàng)目穩(wěn)定上線運(yùn)行,反響良好,達(dá)到了預(yù)期效果。

        [1]吳權(quán),賴斌.淺談新網(wǎng)絡(luò)技術(shù)標(biāo)準(zhǔn)帶來的改變[J].電腦知識(shí)與技術(shù),2010,6(15):3937-3938.

        [2] 劉悅之.基于Git的分布式版本控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技傳播,2012,(22):197-198.

        [3] Liu, Chamond.SmallTalk, Objects, and Design[K].iUniverse, 2000.

        猜你喜歡
        開發(fā)人員服務(wù)器端代碼
        Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        在Windows中安裝OpenVPN
        讓W(xué)indows 10進(jìn)入開發(fā)者模式
        電腦迷(2015年12期)2015-04-29 23:22:51
        后悔了?教你隱藏開發(fā)人員選項(xiàng)
        電腦愛好者(2015年6期)2015-04-03 01:20:56
        網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
        国产一区二区三区四区色| 亚洲色丰满少妇高潮18p| 天天爽天天爽天天爽| 精品九九视频| 一二三四在线观看韩国视频| 蜜桃视频插满18在线观看| 成人免费毛片aaaaaa片| 男人的天堂在线无码视频| 中文字幕亚洲精品高清| 久久熟妇少妇亚洲精品| 人人妻人人妻人人片av| 久久AV中文综合一区二区| 亚洲综合偷拍一区二区| 亚洲国产精品久久精品| 欧洲极品少妇| 亚洲国产成人精品激情| 亚洲永久免费中文字幕| 人妻精品久久久久中文字幕69| 后入内射欧美99二区视频| 国产精品涩涩涩一区二区三区免费| 激情都市亚洲一区二区| 大地资源网高清在线播放| 久久AⅤ无码精品为人妻系列 | 1234.com麻豆性爰爱影| 久久午夜av一区二区| 未满十八勿入av网免费| 国内免费AV网站在线观看| 手机在线观看亚洲av| 日韩综合无码一区二区| 黑人玩弄人妻中文在线| 久久久精品中文无码字幕| 蜜桃视频在线免费视频| 免费大黄网站| 国模精品二区| 97人妻中文字幕总站| 乱中年女人伦av三区| 最新国产日韩AV线| 久久蜜臀av一区三区| 亚洲s色大片在线观看| 人妻少妇精品视中文字幕国语| 日本一区二区三区在线|