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文檔 縱橫頁面并存
主站蜘蛛池模板: 性视频一区| 亚洲精品无码AⅤ片青青在线观看| 亚洲欧美日本国产综合在线 | 999国内精品久久免费视频| 亚洲另类色| 亚洲男人的天堂视频| 秋霞一区二区三区| 国产主播在线观看| 在线无码av一区二区三区| 午夜高清国产拍精品| 九九视频在线免费观看| 男人天堂亚洲天堂| 精品国产毛片| 国产丝袜91| 日韩大乳视频中文字幕 | 欧美特黄一级大黄录像| 亚洲天堂自拍| 精品伊人久久大香线蕉网站| 在线观看91精品国产剧情免费| 国产白浆在线| 九九久久精品国产av片囯产区| 亚洲天堂视频在线免费观看| 国内99精品激情视频精品| 日本草草视频在线观看| 亚洲中文精品久久久久久不卡| 香蕉色综合| 亚洲黄色激情网站| 国产福利在线免费观看| 国产成人亚洲欧美激情| 亚洲精品国产综合99| 无码精品一区二区久久久| 日韩区欧美国产区在线观看| 在线观看国产黄色| 69av免费视频| 老色鬼欧美精品| 91在线视频福利| 一级爆乳无码av| 国语少妇高潮| 日本高清有码人妻| 国产理论精品| 日本在线欧美在线| 四虎永久在线精品国产免费| 国产精品9| 青青国产在线| 五月婷婷综合网| 福利视频99| 婷婷五月在线| 国产精品无码在线看| 日韩不卡免费视频| 国产乱子伦手机在线| 日韩欧美国产综合| 国产a v无码专区亚洲av| 亚洲娇小与黑人巨大交| 国产亚洲美日韩AV中文字幕无码成人| 国产一区二区三区在线观看视频| 国产精品高清国产三级囯产AV| 成人免费黄色小视频| 91毛片网| 国产裸舞福利在线视频合集| jizz亚洲高清在线观看| 日韩欧美中文| 又黄又湿又爽的视频| 国产精品美女自慰喷水| 国产第八页| 色综合成人| 中文字幕啪啪| 亚洲专区一区二区在线观看| 久久亚洲日本不卡一区二区| 亚洲AV永久无码精品古装片| 91福利免费视频| 99在线观看免费视频| 国产亚洲精品91| 亚洲天堂在线免费| 狠狠v日韩v欧美v| 国产精品一区二区不卡的视频| 亚洲国产精品一区二区第一页免| 天堂在线视频精品| 久久亚洲天堂| 一级毛片在线播放| 国产噜噜噜| 国产专区综合另类日韩一区| 欧美国产日韩另类|