吳昌錢
(泉州師范學(xué)院)
B/S軟件開發(fā)是現(xiàn)在及未來軟件系統(tǒng)開發(fā)的一個主流趨向,它以輕量級、跨操作系統(tǒng)、動態(tài)數(shù)據(jù)以及炫麗的UI設(shè)計等特點比之傳統(tǒng)的軟件開發(fā)模式.開發(fā)技術(shù)較多,可以使用 asp,jsp,php,asp.ne等.在.net框架下多種技術(shù)相輔相成,擁有更多的開發(fā)人員的擁戴和支持,擁有更高的開發(fā)效率,擁有容易上手的特性.當然,.net框架下的技術(shù)也有些弊端.如對服務(wù)端的硬件要求較高.該文首先對.net下的三種典型B/S開發(fā)技術(shù)進行介紹.而后,對三種技術(shù)進行比較分析.最后,提出在.net框架下開發(fā)模式技術(shù)的選擇建議.
WebForm是微軟在.net 1.1版本最早推出的web開發(fā)技術(shù),并且在.net 2.0版本后有一套完善的組件開發(fā)技術(shù),控件是.netWebForm的主要技術(shù)成分.它的原理是:首先,根據(jù)用戶請求的URL找到相應(yīng)aspx和父類aspx.cs;接著,將html標簽和服務(wù)端標簽(runat=“server”)放入控件庫中;然后,對請求的分析做出相應(yīng)的動作響應(yīng),組織生成htm l,加載客戶端緩存;最后,將生成的響應(yīng)內(nèi)容回發(fā)到客戶端.這樣的處理原理,讓開發(fā)者能以最簡潔的模式進行頁面制作,同時請求事件以及回發(fā)控制變得更加簡易..net技術(shù)整體上說,具有容易上手,開發(fā)效率高的特點.
服務(wù)器端頁面對象分為前臺部分類和后臺部分類.前臺部分類由視覺控件組成,是對象的靜態(tài)元素部分;后臺部分類由實現(xiàn)功能的邏輯代碼構(gòu)成,是對象的動態(tài)元素部分.響應(yīng)客戶端請求時,服務(wù)器端先組合視覺控件與邏輯代碼成分,生成完整的含靜態(tài)和動態(tài)部分的aspx頁面對象.而后,調(diào)用Page類ProcessRequest方法,生成要發(fā)送到客戶端的HTML代碼.該過程具體完成以下功能:(1)創(chuàng)建頁面控件樹,調(diào)用Build-ControlTree方法,把前臺靜態(tài)頁面所有的html控件和標記為runat=server的服務(wù)器端控件轉(zhuǎn)成對應(yīng)的靜態(tài)HTML控件對象,并添加在到前臺靜態(tài)頁面類得Controls集合中;(2)調(diào)用后臺頁面CS部分類中邏輯代碼Page_Load方法,完成初始化控件等;(3)調(diào)用Render_Controls方法,遍歷控件樹中每一個節(jié)點的Render_Controls方法,生成完整的html代碼并發(fā)送到客戶端,完成客戶端請求的響應(yīng).
ASP.NET MVC是微軟官方提供的以MVC模式為基礎(chǔ)的ASP.NET Web應(yīng)用程序框架,ASP.NET MVC框架提供了一個可以代替ASP. NETWebForm的基于MVC設(shè)計模式的應(yīng)用.他將一個web程序分層(Model-View-Controller)三個層次,使得復(fù)雜項目更加容易維護,減少項目之間的耦合..Net MVC原理是以原生的html請求發(fā)送到服務(wù)端,在IIS環(huán)境下,調(diào)用.net中的aspnet_iisapi.dll,通過路由Routing找到url請求的控制類Controller,控制類對數(shù)據(jù)進行加工和運算(如,數(shù)據(jù)庫讀寫和視圖設(shè)計等),返回一個viewdata給view,也就是將model組成view,并且回發(fā)給客戶端.ASP.NET MVC分層層次十分分明,是一種有利于單元測試和代碼維護,擴展的輕量級開發(fā)框架.
url請求含有控制類信息,形式如:
http://localhost:8088/app/orders/customer-ID=101&Name=XXXX
其中“app”為 Controller部分,“orders”為Action部分.
Silverlight是類似Flash插件的一種新型基于NET framework的媒體體驗和豐富的交互式應(yīng)用程序,它具有跨瀏覽器的、跨平臺的、內(nèi)容豐富、視覺效果絢麗的特點.Silverlight在web開發(fā)領(lǐng)域中扮演一種具備豐富的用戶體驗,安全的數(shù)據(jù)訪問,高自由度的編程模式的新型編程技術(shù),是富因特網(wǎng)應(yīng)用的一種體現(xiàn),也是.net框架下一種新型的web開發(fā)技術(shù),它是一種以xam l格式為中心的,在瀏覽器沙箱運行的模式,不同于傳統(tǒng)以WCF,WebService為中間層的數(shù)據(jù)訪問形式.[1]
在IT界,市場占有率是最容易看出一種技術(shù)的成熟程度,可用性的評價標準,軟件市場是多種技術(shù)框架并存的競爭平臺,.net作為一種主流技術(shù),憑借著windows操作系統(tǒng)的超高占有率,asp.net可以算是網(wǎng)站開發(fā)技術(shù)上的一面大旗.其中,Webform市場占有率占有最高的比率,目前外租服務(wù)器,虛擬空間,vps等基本都支持. net2.0的IIS,WebForm出生日期和成名日期比較早,并且在市場穩(wěn)穩(wěn)地站住的了腳跟,而MVC是在.net 3.5后才有支持的版本,所以有一定服務(wù)端框架支持限制,但MVC在一種市場發(fā)展速度極快的步伐前進.SilverLight雖然有許許多多的優(yōu)點,但它并不是第一個吃螃蟹的人,在它的前身有一個性質(zhì)類似Adobe Flash作為競爭對手,F(xiàn)lash已經(jīng)取得大部分用戶的好感和依賴性,所以SilverLight并未被廣泛推用.
性能是軟件開發(fā)中被重點關(guān)注的技術(shù)可靠性指標,一個B/S軟件系統(tǒng)開發(fā)出來的產(chǎn)品性能由許多種因素來共同決定,其中包括:服務(wù)端硬件配置,服務(wù)端操作系統(tǒng),客戶端性能,數(shù)據(jù)傳輸帶寬,開發(fā)技術(shù).在上面WebForm說明中可以看出WebForm具有一種高度效率的開發(fā)能力,但在性能上,包括處理速度,消耗流量需求等考慮,利用Asp.NetWebForm,MVC,SilverLight開發(fā)他們哪個是擁有王牌的性能優(yōu)勢呢.
首先,從處理速度來看WebForm含有頁面狀態(tài)管理以及控件樹,相比之MVC的較為純粹的B/S的開發(fā)結(jié)構(gòu),WebForm的所需要的處理周期會比較長,Silverlight是將本身程序集包. XAP文件傳輸?shù)娇蛻舳俗尀g覽器進行解析運行,利用中間數(shù)據(jù)源訪問層,例如WCF,WebService,Ria等進行與數(shù)據(jù)庫進行數(shù)據(jù)交互,它承受較少的服務(wù)端壓力,具備較高的運行速度和較低性能高壓威脅,所以SilverLight在處理速度性能上較之WebForm和MVC會有一定的優(yōu)勢.
而在消耗流量上的性能比較,WebForm是一種包含ViewState,并且頁面含有頁面管理狀態(tài)的高度封裝開發(fā)框架,它與輕量級MVC比較,數(shù)據(jù)留到客戶端的包含許許多多冗余的HTML代碼,所以WebForm對;流量的需求更高,.ilverLight在流量控制上有多種方案可以選擇,傳統(tǒng)默認的方式是在瀏覽器第一次加載SilverLight網(wǎng)站程序時下載它所需要的素材以及XAP程序集包,其余的流量是按需獲取程序所需的數(shù)據(jù)產(chǎn)生的.因為SilverLight不是頁面級的,而是應(yīng)用程序級的開發(fā)框架,所以從長期來看它所耗費的流量會更小,短期會多.
開發(fā)效率是一個軟件開發(fā)企業(yè)獲得盈利很重視的技術(shù)框架優(yōu)劣指標,.Net開發(fā)工具Visual Studio以其人性化的軟件設(shè)計和用戶體驗造就了在.net開發(fā)的便捷與清晰,所以Visual Studio支持的這三種技術(shù)本身都具有較高的開發(fā)效率,筆者通過較為細致的比較來區(qū)分三種技術(shù)開發(fā)效率的微差.三種技術(shù)都是將頁面和邏輯進行有機分離的設(shè)計模式,然而通俗來講,頁面與邏輯耦合性越高,它的開發(fā)效率就會越低.Web-Form是一種組件開發(fā)模式,以ASPX+CS來構(gòu)建一個頁面,其中Aspx和Cs有較高的依賴性,頁面服務(wù)端事件幾乎都放在cs類中進行處理,這點上MVC要靈活一些,MVC是利用Aspx(或cshtml)+Controler.cs,頁面僅僅只是發(fā)送請求和作為回發(fā)請求的模版,他與作為邏輯處理的控制器沒有什么直接的關(guān)系,所以他是一種低耦合的開發(fā)框架,較低的開發(fā)效率,SilverLight與web-Form類似,前臺頁面與后臺邏輯緊密耦合,也具有較高的開發(fā)效率[2][3].
技術(shù)上手難度是對初學(xué)者學(xué)習并掌握一門新技術(shù)的難易情況,.net框架平臺以面向?qū)ο笳Z言C#為基礎(chǔ)的,它的框架,接口以及編程工具都是由Microsoft一家包辦而成的,對需要更多的配置和第三方插件的要求并不高,所以對手來說,學(xué)習.net一開始并不需要太多復(fù)雜的配置就可以寫出自己的app了.Webform,Mvc,SilverLight都是.net下標準C#集成的,他們同樣不需要許許多多的配置和第三方插件便可以在Visual Studio工具進行編碼.筆者認為這三種技術(shù)框架的上手難度主要由他們設(shè)計模式以及數(shù)據(jù)訪問方式的不同來決定其難度的.WebForm是最直觀的編程模式,初學(xué)者在初始這門技術(shù)時完全可以通過拖拽控件,然后雙擊控件或者在事件視圖中雙擊相應(yīng)事件進行編碼,編碼之后馬上可以通過運行瀏覽查看效果.MVC需要初學(xué)者了解Model-View-Controller整個模式三個層次直接的聯(lián)系和區(qū)別,并且了解asp.net MVC是如何將這三個分層進行配合和調(diào)用的,需要用戶具有一定的軟件體系知識.SilverLight雖然和WebForm在編碼模式類似,但它的數(shù)據(jù)訪問較為特殊,需要建立一個中間層來提供數(shù)據(jù)訪問.所以,筆者認為,Webform是最容易上手的一種web設(shè)計模式.
B/S軟件開發(fā)是現(xiàn)在及未來軟件系統(tǒng)開發(fā)的一個主流趨向,它以輕量級、跨操作系統(tǒng)、動態(tài)數(shù)據(jù)以及炫麗的UI設(shè)計等特點[4].在.net框架下多種技術(shù)相輔相成下筆者不得不佩服微軟的高瞻遠矚,就如該文討論的這三種web開發(fā)技術(shù)他們各有各的神通,各有各的背景,筆者無法以明確的論述來說明哪種技術(shù)最適合目前的web開發(fā),但筆者希望能讓許多做web開發(fā)的人,無論是從事asp,jsp,php,asp.net或者是其他技術(shù)開發(fā)的人了解asp.net,了解文中論述的三種不同開發(fā)模式在asp.net中扮演的角色,了解asp. net因為這三種技術(shù)而展現(xiàn)出來的魅力.
WebForm擁有更多的開發(fā)人員的擁戴和支持,擁有更高的開發(fā)效率,擁有容易上手的特性,但它犧牲了部分開發(fā)成品應(yīng)用程序的性能,對服務(wù)器的硬軟件環(huán)境要求較高.所以它更適合做一些中小型網(wǎng)站,少量用戶訪問,業(yè)務(wù)性不強的的系統(tǒng).比如企業(yè)宣傳網(wǎng)站,cms等網(wǎng)站.Asp.net MVC雖然沒有最高的開發(fā)效率,但MVC本身的設(shè)計模式已經(jīng)決定它具有開發(fā)容易維護,可擴展性強等特點,再加上其輕量級的技術(shù)特征,它更適合做一些支持高流量,業(yè)務(wù)繁雜的網(wǎng)站系統(tǒng).例如企業(yè)管理系統(tǒng),B2C或C2C平臺型網(wǎng)站. SilverLight最大的特點就是其插件式的,不需要像傳統(tǒng)b/s框架軟件需要頻繁的html提交和回發(fā)操作,它可以制作許多炫麗的圖像圖像以及動畫設(shè)計.所以,它更適合做RIA富因特網(wǎng)應(yīng)用的開發(fā)以及多人在線無刷新同步游戲.例如場景模擬,聊天室等網(wǎng)站.
所以,沒有絕對最好技術(shù)去實現(xiàn)一個B/S系統(tǒng)開發(fā)與構(gòu)建,按需選擇最適合好的技術(shù)解決方案才是成功開發(fā)一個B/S系統(tǒng)的最好途徑.
[1] 魏永超.銀光志——Silverlight 3.0開發(fā)詳解與最佳實踐[M].北京:清華大學(xué)出版社,2009.
[2] [美]加洛韋著,孫遠帥,鄒權(quán)譯.ASP.NETMVC 4高級編程[M].北京:清華大學(xué)出版社,2013.
[3] 蔣金楠.ASP.NETMVC 4框架揭秘[M].北京:電子工業(yè)出版社,2013.
[4] 畢國鋒.ASP.net技術(shù)的Web應(yīng)用程序三層設(shè)計模型研究[J].黑龍江科技信息,2013(3):32-36.
[5] 張志成.基于.NET技術(shù)和MVC的新架構(gòu)模式[J].電子制作,2013(9):37-41.