五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > .Net平臺下的B/S開發(fā)框架

.Net平臺下的B/S開發(fā)框架

文章來源:365jz.com     點(diǎn)擊數(shù):378    更新時間:2011-05-15 10:00   參與評論

一、前言

  本文主要是對.Net平臺下的幾種B/S開發(fā)框架進(jìn)行比較。只對比前端展現(xiàn)和界面業(yè)務(wù)邏輯的部分,對于后臺的數(shù)據(jù)層、業(yè)務(wù)層、持久層等則不作討論,因?yàn)檫@些部分是完全可以共用的。
  主要從如下幾個維度比較:

  • 技術(shù)差異、成熟度 
  • 難易程度、學(xué)習(xí)成本 
  • 適應(yīng)的范圍

.Net平臺下的B/S開發(fā)框架分類

總體來說,目前.Net平臺下的B/S開發(fā)框架基本可以分為三大類:

  1. 基于控件和頁面事件驅(qū)動思想的Web Forms
  2. 基于模型、視圖、控制器的MVC模式
  3. 綜合了Web Forms和MVC的一些特點(diǎn)而產(chǎn)生的框架(不是本文的介紹重點(diǎn))
     

  到目前為止,ASP.NET Web Forms和ASP.NET MVC都有著各自的追捧者,雙方都認(rèn)為各自所使用的技術(shù)才是最好的,我個人很反對這種觀點(diǎn),馬克思等革命先烈告訴我們,看待事物要用辯證、唯物的思想,存在即合理。作為開發(fā)人員的我們,眼光不能太狹隘,多掌握一門技術(shù)總是好的事情。而本文也盡量從客觀、平等的角度出發(fā),做一個相對公正全面的對比,而不是某種技術(shù)框架的推崇。

二、知識準(zhǔn)備

  在進(jìn)行具體的比較之前,我們先回過頭來想一想,什么是B/S結(jié)構(gòu)?而本文介紹的框架都是基于微軟.Net Framework,那么什么又是.Net Framework?

What is B/S?

  毫無疑義、理所當(dāng)然,B/S指的就是B:Browser,S:Server,即我們的B/S程序的客戶端就是瀏覽器(各種各樣的瀏覽器,不管你是IE還是Firefox、Chrome等等),而服務(wù)端又是什么呢?服務(wù)端是指我們利用.Net平臺(當(dāng)然也可以是PHP、Java、Ruby、Python等)開發(fā)出來的應(yīng)用程序,這些程序運(yùn)行在各種Web Server上(例如:IIS、Apache、Tomcat等)。

  而聯(lián)系B和S的就是HTTP協(xié)議,由于HTTP無狀態(tài)的特性,造成了B/S應(yīng)用所有的請求只能從瀏覽器(客戶端)開始,也只能采用拉的模式,即服務(wù)端無法推送消息到客戶端,而這點(diǎn)是和C/S模式的Windows程序有著很大區(qū)別的。

  關(guān)于HTTP協(xié)議,屬于另外一個話題,這里就不詳細(xì)介紹了。具體可參考:http://baike.baidu.com/view/70545.htm,當(dāng)然,要想做一個好的B/S應(yīng)用,是非常有必要對HTTP協(xié)議做一些深入的了解的。

  每一次的HTTP請求通過統(tǒng)一資源定位符(Url)開始,服務(wù)端在接收到一次Http Request之后,會由Web Server接管請求,然后交給具體的服務(wù)端程序進(jìn)行邏輯處理(中間的這個處理過程會因?yàn)閃eb Server的不同而有所區(qū)別,總之是一個比較復(fù)雜的生命周期過程,以ASP.NET為例,詳情可參考:http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx),處理完成之后,最終將生成的結(jié)果發(fā)回給客戶端。這個生成的結(jié)果一般是一段HTML文本、或者是一段二進(jìn)制字節(jié)流。而客戶端在接收到返回到信息之后,將這些信息解析出來,就形成了我們在瀏覽器上看到的實(shí)實(shí)在在的頁面,至此就形成了一個完整的請求過程。

  好吧,上面這些介紹可能和本文的這個議題沒有太直接的關(guān)系,可能也有人為認(rèn)為這些是一個很簡單的問題,可是,你真的理解HTTP協(xié)議了嗎?真的理解應(yīng)用程序生命周期和頁面生命周期了嗎?你真的理解了我們經(jīng)常用的Response.Redirect(“url”)對應(yīng)的HTTP狀態(tài)是301還是302嗎?之所以介紹這么多,還是因?yàn)閭€人認(rèn)為:要想較好的設(shè)計B/S系統(tǒng)結(jié)構(gòu),或者說寫出高效、優(yōu)雅的B/S代碼,這些都是不可或缺的知識。

What is .Net Framework

  先看一段解釋: NET Framework又稱 .Net框架。是由微軟開發(fā),一個致力于敏捷軟件開發(fā)(Agile software development)、快速應(yīng)用開發(fā)(Rapid application development)、平臺無關(guān)性和網(wǎng)絡(luò)透明化的軟件開發(fā)平臺。.NET是微軟為下一個十年對服務(wù)器和桌面型軟件工程邁出的第一步。.NET包含許多有助于互聯(lián)網(wǎng)和內(nèi)部網(wǎng)應(yīng)用迅捷開發(fā)的技術(shù)。   .NET框架是微軟公司繼Windows DNA之后的新開發(fā)平臺。.NET框架是以一種采用系統(tǒng)虛擬機(jī)運(yùn)行的編程平臺,以通用語言運(yùn)行庫(Common Language Runtime)為基礎(chǔ),支持多種語言(C#、VB、C++、Python等)的開發(fā)。 .NET也為應(yīng)用程序接口(API)提供了新功能和開發(fā)工具。這些革新使得程序設(shè)計員可以同時進(jìn)行Windows應(yīng)用軟件和網(wǎng)絡(luò)應(yīng)用軟件以及組件和服務(wù)(web服務(wù))的開發(fā)。.NET提供了一個新的反射性的且面向?qū)ο蟪绦蛟O(shè)計編程接口。.NET設(shè)計得足夠通用化從而使許多不同高級語言都得以被匯集。

  .Net Framework作為微軟面向企業(yè)級應(yīng)用的重要戰(zhàn)略之一,有著十分重要的意義。.Net Framework是運(yùn)行于.Net平臺上所有應(yīng)用程序的基礎(chǔ)。而每一次版本的發(fā)布,都會帶來一些革命性的變化。如下圖就展示了不同F(xiàn)ramework版本之間的關(guān)系,當(dāng)然,還有很多更細(xì)節(jié)、更具體的不同之處,請參考微軟官方站點(diǎn),這里就不詳細(xì)介紹了,只是作為理解本文的一個知識擴(kuò)展。
 

三、技術(shù)比較

ASP.NET Web Forms官方定義:

  ASP.NET Web Forms lets you build dynamic websites using a familiar drag-and-drop, event-driven model. A design surface and hundreds of controls and components let you rapidly build sophisticated, powerful UI-driven sites with data access.

  總結(jié)為如下幾點(diǎn):

  1. 拖拽式的編程模式。
  2. 事件驅(qū)動模型。
  3. 提供大量的控件。

ASP.NET MVC官方定義:

  ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup for enjoyable, agile development. ASP.NET MVC includes many features that enable fast, TDD-friendly development for creating sophisticated applications that use the latest web standards.

  總結(jié)為如下幾點(diǎn):

  1. 基于歷史悠久的MVC模式。
  2. 更加清晰的界面代碼分離。
  3. 對HTML/CSS/JS更加完全的控制權(quán)。
  4. 體現(xiàn)了敏捷、測試驅(qū)動開發(fā)等思想。

關(guān)系圖

  在這里,有必要解釋一下.Net、ASP.NET、ASP.NET Web Forms、ASP.NET MVC之間的關(guān)系,其層次關(guān)系可用如下的圖來表示:

  其中.Net Framework是所有框架的基礎(chǔ),ASP.NET在.Net Framework基礎(chǔ)上提供了Web開發(fā)框架的基礎(chǔ),而ASP.NET Web Forms和ASP.NET MVC是由微軟提供的兩種目前最主流的Web開發(fā)框架。

ASP.NET Web Forms與ASP.NET MVC詳細(xì)對比

  通過從優(yōu)點(diǎn)、缺點(diǎn)、可能存在的風(fēng)險、可能存在的機(jī)會這四個方面,進(jìn)行一個詳細(xì)的比較,具體如下表:

目前的發(fā)展情況

  先看下微軟.Net Framework各個版本的發(fā)布時間、IDE支持、Windows默認(rèn)安裝的版本,來做一個比較:

  可以看出,.Net Framework 1.0的發(fā)布時間為2002年,ASP.NET Web Forms作為當(dāng)時ASP的替代也同時推出。經(jīng)歷了將近10年的發(fā)展,在企業(yè)級B/S系統(tǒng)開發(fā)上,扮演了重要的角色,目前各種框架和第三方控件支持,也讓ASP.NET Web Forms越來越成熟,但同時Web Forms界面和代碼的高度耦合、重量級的頁面尺寸及復(fù)雜的頁面生命周期等,也越來越被開發(fā)人員所詬病。

  而Web Forms在互聯(lián)網(wǎng)開發(fā)方面的不足,導(dǎo)致了廣大的開發(fā)人員在開發(fā)互聯(lián)網(wǎng)應(yīng)用時,首選PHP、Python、Ruby等輕量級快速開發(fā)平臺。為了改善這一現(xiàn)狀,微軟在2009年4月,在.Net Framework 3.5的基礎(chǔ)上,推出了ASP.NET MVC 1.0版,ASP.NET MVC的推出,讓廣大的Web開發(fā)人員耳目一新,拋棄了大量的服務(wù)器端控件、各種各樣的回發(fā)事件,讓ASP.NET MVC的頁面看上去是那么的清爽,而MVC模式也更利于代碼層次的組織,充分體現(xiàn)了Web開發(fā)簡單、高效的本質(zhì)。到目前為止,ASP.NET MVC已經(jīng)發(fā)展到3.0的版本,視圖引擎方面也新增了簡單、清晰的Razor。

四、難易程度及學(xué)習(xí)成本

  于這個方面,是很難比較的,因?yàn)榭傮w來說,不管是ASP.NET Web Forms還是ASP.NET MVC,其底層實(shí)現(xiàn)都是基于.Net Framework的。在具體的Coding層面,他們是完全一樣的。而他們的學(xué)習(xí)難易程度,可能取決于你之前的技術(shù)積累和設(shè)計思想,我想一個Windows開發(fā)人員可能學(xué)習(xí)ASP.NET Web Forms更加容易一些,而一個ASP程序員或者PHP程序員,可能接受MVC思想更加容易一些。

學(xué)習(xí)成本對比表

  而下表,則盡量從多個維度進(jìn)行一個學(xué)習(xí)曲線的綜合比較:
 

五、適用的范圍

  如下圖所示,展示了ASP.NET Web Forms和ASP.NET MVC各自適用的場景。
 

適用場景總結(jié)

  但事情無絕對,對于各自的適用場景,可能還有很多其他因素的影響,總結(jié)為如下幾點(diǎn):

  1. 如果是快速開發(fā)后臺管理系統(tǒng),需要呈現(xiàn)大量的數(shù)據(jù)、表格等,建議采用Web Forms。
  2. 如果是對頁面性能有著更高的要求,建議采用MVC。
  3. 如果是做互聯(lián)網(wǎng)應(yīng)用,對UI有著很高的要求,建議采用MVC。
  4. 如果要采用TDD開發(fā)模式,建議采用MVC。
  5. 具有很復(fù)雜的頁面邏輯,建議采用Web Forms。
  6. 團(tuán)隊(duì)人員的掌握情況也是需要重點(diǎn)考慮的因素之一。
  7. 如果是做系統(tǒng)升級,盡量采用和老系統(tǒng)一致的框架。

六、其他框架介紹

Monorail

  Monorail作為早于微軟官方出現(xiàn)的MVC框架,可以算作第一款基于.Net實(shí)現(xiàn)的MVC框架,屬于開源項(xiàng)目Castle的子項(xiàng)目。目前最新的版本為2.1,作者深厚的設(shè)計功底,讓大家充分領(lǐng)略到了MVC的魅力,以至于后來微軟的ASP.NET MVC里的很多實(shí)現(xiàn),都能在monorail里看到影子。

  官方站點(diǎn):http://www.castleproject.org/monorail/index.html

  參考介紹:http://baike.baidu.com/view/1344802.htm

  MonoRail實(shí)現(xiàn)的模板引擎有3個:

  AspNetViewEngine   用傳統(tǒng)的.aspx文件做模板, 可以照常使用aspx語法和服務(wù)器控件, 但是由于Webform的生命周期和MonoRail完全不同, 有時候會讓人覺得別扭, 有部分特性也受到了限制.   

  NVelocityViewEngine   用NVelocity做模板引擎, 需要學(xué)習(xí)VTL語法, 但是使用很簡單, 特別是很多java程序員已經(jīng)熟悉velocity. 簡單的語法也強(qiáng)迫程序員把邏輯和界面很好的分離開來, 方便跟美工配合.   

  BrailViewEngine 基于Boo的模板引擎, Boo是一種語法類似python的.NET語言, 據(jù)MonoRail的參考說, Brail引擎是功能最強(qiáng), 性能最好的選擇, 但Boo是一種陌生的語言, 這成了Brail引擎應(yīng)用的最大障礙.

  總的來說,Monorail與ASP.NET MVC是如此的相似,如果掌握了其中一個的應(yīng)用,那么切換到另外一種框架是很容易的事情。 唯一的區(qū)別可能在于模板引擎的選擇上,monorail官方推薦的是NVelocity,而ASP.NET MVC官方推薦的是Razor,顯然,對于一個.Net(C#)程序員來講,學(xué)習(xí)Razor比NVelocity還是要簡單一些,盡管NVelocity也是一門非常簡單的模板語言。

  我之前的東家,也一直在使用Monorail作為開發(fā)框架,自己也使用過很長的一段時間,覺得各方面還是非常不錯的。

Web Forms與MVC結(jié)合的框架

  此類框架是一個泛指,前人已經(jīng)有過不少的實(shí)踐??偨Y(jié)來看的話,主要是基于以下目的:

  1. 解耦頁面和頁面邏輯代碼。
  2. 實(shí)現(xiàn)可替換的頁面。
  3. 減少微軟對HTML的過度封裝。
  4. 繼續(xù)沿用Web Forms的頁面生命周期思想和控件思想。
  5. 提供更好的性能。

  這類框架不管是第三方還是個人,實(shí)現(xiàn)的都不少,舉兩個例子:

Discuz!NT

  由康盛創(chuàng)想公司開發(fā),到目前為止,已經(jīng)經(jīng)歷了10多個版本的發(fā)展,到現(xiàn)在已經(jīng)相對成熟,如果想搭建基于.Net的BBS,那Discuz是比較不錯的選擇。

  優(yōu)點(diǎn):

  1. 強(qiáng)大的BBS功能,你能想到的基本上都想到了。
  2. 官方支持,版本持續(xù)更新中。
  3. 快速搭建BBS應(yīng)用,幾乎不用開發(fā)。

  缺點(diǎn):

  1. 定制化開發(fā)麻煩,除非花錢找官方定制。
  2. 不能無縫和現(xiàn)有系統(tǒng)整合。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評論 (378人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號