999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-11-09 11:52:46李太寧
泰州職業(yè)技術學院學報 2013年2期
關鍵詞:頁面語言

葉 鈺,李太寧

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

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

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

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

1 開發(fā)語言

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

2 版本控制

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

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

3 開發(fā)部署

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

4 會話狀態(tài)

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

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

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

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

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

6 模板生成與WebService

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

public interface Controller{

……

public Map objectsMap;

……

protected void returnJSON(){}

……

}

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

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對象保存到數(shù)據(jù)庫中。在save方法接收到question對象以后,先做一些基本的驗證,例如判斷是新建還是保存,如果是新建的請求,則傳來的question的id是空。保存到數(shù)據(jù)庫后,將保存完成的question對象返回到客戶端。

7 結語

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

[1]吳權,賴斌.淺談新網(wǎng)絡技術標準帶來的改變[J].電腦知識與技術,2010,6(15):3937-3938.

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

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

猜你喜歡
頁面語言
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態(tài)分析下的同聲傳譯語言壓縮
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 精品视频免费在线| 网友自拍视频精品区| 少妇人妻无码首页| 婷婷激情亚洲| 激情爆乳一区二区| 女人18毛片久久| 欧美一级一级做性视频| 一级爱做片免费观看久久| 亚洲欧洲自拍拍偷午夜色| 青草视频网站在线观看| 在线免费亚洲无码视频| 在线人成精品免费视频| 久久这里只有精品8| 国产真实乱人视频| 国产高清在线丝袜精品一区| 欧美97欧美综合色伦图| 91啪在线| 国产日韩精品一区在线不卡| aⅴ免费在线观看| 91www在线观看| 亚洲欧美国产高清va在线播放| 亚洲男人的天堂网| 强奷白丝美女在线观看| 国产欧美日韩精品综合在线| 免费va国产在线观看| 日韩人妻精品一区| 伊人久久精品无码麻豆精品| 夜夜操国产| 青草视频免费在线观看| 国产真实乱子伦视频播放| 色综合婷婷| v天堂中文在线| 色有码无码视频| 欧美三級片黃色三級片黃色1| 毛片在线看网站| 欧美午夜在线观看| 国产免费久久精品99re不卡| 1024你懂的国产精品| 91久久国产综合精品女同我| 18黑白丝水手服自慰喷水网站| 欧美一级在线播放| 亚洲欧美色中文字幕| 欧美成在线视频| 熟妇人妻无乱码中文字幕真矢织江| 国产精品亚洲精品爽爽| 久久久国产精品免费视频| 欧美亚洲国产日韩电影在线| 欧美丝袜高跟鞋一区二区| 伊人网址在线| 高清国产在线| 国产成人综合欧美精品久久| 亚洲精品男人天堂| 69视频国产| 欧洲免费精品视频在线| 强乱中文字幕在线播放不卡| 精品国产毛片| 亚洲伊人久久精品影院| 欧美乱妇高清无乱码免费| 国产成人综合久久| 婷婷丁香在线观看| 狠狠综合久久| 国产一级毛片网站| 久久无码高潮喷水| 日本a级免费| 91无码视频在线观看| 青青久久91| 国产视频久久久久| 67194在线午夜亚洲| 激情六月丁香婷婷四房播| 亚洲黄色成人| 国产va视频| 国产美女丝袜高潮| 白浆免费视频国产精品视频 | 欧美亚洲国产精品久久蜜芽| 97国产在线播放| 亚洲高清资源| 免费又爽又刺激高潮网址| 青青青视频蜜桃一区二区| 日韩AV无码一区| 有专无码视频| 人妻丝袜无码视频| 欧美日韩成人|