asp.net webform設計思路的思考

     我使用asp.net的webform框架進行web應用程序的開發已經差很少四年了,在整個開發生涯中,也使用過一年asp.net的mvc框架。由於網上常常有討論webform框架和mvc框架的優劣,因此本身也對這二者進行了關注,由於本身最熟悉webform框架,因此就會考慮它的優點是什麼?設計思路是什麼?javascript

    要理解asp.net的設計思路,必須考慮它的產生年代,產生的技術基礎,還有觀察同時代其餘動態網頁技術的特色和思路。首先是產生asp.net的技術基礎,如下援引百度百科:php

   「1996年,ASP 1.0(Active Server Pages)版本出現了,它引發了Web開發的新革命,下降了動態網頁開發的難度。之前開發動態網頁須要編寫大量繁雜的C代碼,編程效率很是低下,並且須要Web網頁開發者掌握很是高的編程技巧。而ASP使用簡單的腳本語言,可以將代碼直接嵌入HTML,使設計Web頁面變得更簡單。雖然ASP很是簡單,但卻可以實現很是強大的功能,這一切得益於其組件。特別是ADO組件,使得在網頁中訪問數據庫易如反掌。這一切推進了動態網頁的快速發展與建設,同時使ASP獲得迅速流行。html

    1998年,微軟公司發佈了ASP 2.0,它是做爲Windows NT 4 Option Pack的一部分提供的。ASP 2.0與ASP 1.0的主要區別是外部的組件能夠初始化,使全部的組件都有了獨立的內存空間,而且能夠進行事務處理。內置的Microsoft Transaction Server(MTS)使製做組件變得更容易。
    2000年6月,微軟公司宣佈了本身的.NET框架。.NET框架的基本思想是:把原有的重點從鏈接到互聯網的單一網站或設備轉移到計算機、設備和服務羣組上,而將互聯網自己做爲新一代操做系統的基礎。這樣,用戶將可以控制信息的傳送方式、時間和內容,從而獲得更多的服務。
    2001年,ASP.NET浮出水面。它最初的名字爲ASP+,後來改成ASP.NET。ASP.NET是微軟公司開發的一種創建在.NET之上的Web運行環境,它不是ASP的簡單升級,而是新一代的Active Server Pages。ASP.NET是微軟公司新體系結構Microsoft.NET的一部分,其中全新的技術架構使編程變得更加簡單。藉助於ASP.NET,能夠創造出內容豐富的、動態的、個性化的Web站點。ASP.NET簡單易學、功能強大、應用靈活、擴展性好,可使用任何.NET兼容語言。 [4-5] 
    2002年微軟發佈.NET正式版本.NET Framework 1.0,其中的ASP版本就是ASP.NET 1.0,在此之前發佈了兩個.NET測試版本Betal和Beta2。
    2003年微軟發佈了.NET Frameworrk 1.1正式版,其中ASP版本就是ASP.NET 1.1。
    2005年微軟發佈.NET Framework 2.0正式版本,也就是ASP.NET 2.0。
 
    這是一段引自百度百科,介紹從asp發展到asp.net的記述。閱讀這段記述你應該意識到,asp.net是從asp1.0開始發展來的,可是它不是直接從asp發展到asp.net的,首先是asp1.0,而後是asp2.0,而後是asp+,再而後更名爲asp.net(這裏若是分開看就是asp  、  .net。這是兩個詞,由於在asp的發展過程當中另外一個大的項目.net出現了,.net爲何出現,不在討論範圍,能夠自行百度)。asp.net1.1技術的web框架就是webform。
    雖然我沒打算梳理敘述.net的產生和發展,可是asp.net webform的產生卻和.net平臺很是緊密。
    在asp產生的前兩年,產生了另一個很是有名的動態網頁技術,那就是PHP。這裏援引一下php的概念:
 
   「PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言語法吸取了C語言JavaPerl的特色,利於學習,使用普遍,主要適用於Web開發領域。PHP 獨特的語法混合了CJavaPerl以及PHP自創的語法。它能夠比CGI或者Perl更快速地執行動態網頁。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML標準通用標記語言下的一個應用)文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多;PHP還能夠執行編譯後代碼,編譯能夠達到加密優化代碼運行,使代碼運行更快。」
 
    php的產生早於asp技術,asp應該是吸取有php技術的建造思想的,之因此稱爲建造,是由於php的起點很是低,並無被進行充分的設計,它是從一個小工具快速發展起來的。這裏還想提一下另一個重要的動態網頁技術,再次援引下百度百科:
    「 JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它 [1]  是由Sun Microsystems公司倡導、許多公司參與一塊兒創建的一種動態網頁技術標準。JSP技術有點相似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而造成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其餘操做系統上運行。
它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet同樣,是在服務器端執行的。一般返回給客戶端的就是一個HTML文本,所以客戶端只要有瀏覽器就能瀏覽。
    JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能經過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。
Java Servlet是JSP的技術基礎,並且大型的Web應用程序的開發須要Java Servlet和JSP配合才能完成。JSP具有了Java技術的簡單易用,徹底的面向對象,具備平臺無關性且安全可靠,主要面向因特網的全部特色。
    JSP技術比php、asp技術產生的更晚,JSP技術如今被用來開發超大型網站,可是並非由於JSP技術自己很是優秀,而是由於它產生於java之上。
   這個時代的asp、php、jsp等動態網頁技術,都有一個共同點,就是你訪問url地址,確定是存在一個這樣的文件的。asp.net產生的技術基礎是asp,那麼asp.net的webform框架使用這同一思想就瓜熟蒂落了。webform的頁面文件有兩部分,後綴名是.aspx和.aspx.cs兩部分組成。這個是有別於asp的,asp頁面文件只有一個,後綴名是.asp。從.asp到.aspx咱們能夠看到,aspx是在asp的後面加了x字母,聯想微軟的其餘產品,.docx取代.doc、.xlsx取代.xls,多少能夠窺探到微軟對技術升級的命名思考。
   以上敘述,講到了asp.net  webform將頁面文件拆分紅了兩個部分。這是很大的一個改進,這種改進是爲了解決一些問題(不是一個,是一系列問題)。改進asp技術cs代碼和html混在一塊兒,暴露代碼細節,asp頁面不會被編譯成dll。同時也有其餘優點。
   從asp到asp.net,在webform框架中大量內置了ASP.NET 服務器控件,這是一個很大的改變,這種服務器控件分三種:
  • HTML 服務器控件 - 傳統的 HTML 標籤
  • Web 服務器控件 - 新的 ASP.NET 標籤
  • Validation 服務器控件 - 用於輸入驗證

網上有人說,這是爲了解決開發asp頁面會形成意大利麪條的問題。個人理解服務器控件的改變遠不止於此,假如你建立一個純服務器控件的頁面(asp.net出現不久,不少人就不建議這麼幹了,至於爲何,我知道會生成大量viewstate串,固然還有其餘緣由),而後對頁面元素進行操做,隨着使用的熟練,你可能會意識到webform的頁面文件不是在html字符中間拼東西,或者說不是在一堆服務器沒法理解的東東中間,動態的生成一些字符。它前進了不少步,它把頁面的全部html便籤加上標識,通過頁面引擎處理,變成了能夠被靈活操做的類,程序開發人員能夠隨意操做這些標籤類,而後在一個合適的時候,再將這些類順序的「ToString()」成字符串,拼到頁面上。發明服務器控件技術,做者的思想來源多是桌面應用程序開發技術,從dos操做系統(命令行交互),到視窗操做系統(主要是鼠標點擊、鍵盤按鍵交互),開發桌面應用程序,會大量使用控件技術,控件複用技術能夠大大提高開發效率。爲何猜想做者的思想可能來源於此,由於asp技術出現時,當時桌面應用程序開發仍是主流,做者可能浸染在這種氛圍內,把桌面應用程序開發的設計思想轉移至web程序的開發。這裏要引出另一個東西,就是事件驅動,隨便新建一個aspx頁面,最重要的是事件處理方法,Page_Load。windows操做系統中大量使用事件驅動,是基於「事件驅動模型」的。那麼做者在webform中使用事件驅動,也可能借鑑了windows。java

    無論是服務器控件,仍是事件驅動,這兩種(或者說是一種,由於控件和事件之間本就相互關聯)設計思想很大的影響了webform框架,開發web應用程序的方式。服務器控件加事件驅動雖然利於很快開發一個管理系統型web程序,可是並不符合web應用程序自己的運行思想,這一點被不少人批評,web程序由於不運行在桌面操做系統中,最先的時候它甚至不能交互,只是爲了便於交流信息,只用於展現信息。web程序本質運行原理是,經過瀏覽器向web服務器發送請求處理命令,有web託管程序接收請求命令,進行操做,而後返回處理結果(結果多是展現一篇文章,或者是告訴你文章刪除成功,或者是將你提交的信息內容進行了保存)。webform容易讓人誤會它運行在操做系統或者瀏覽器中,全部代碼執行在客戶端。雖然如今的瀏覽器真的能夠將動態頁面放在瀏覽器端執行,可是webform頁面實際上是有服務器端的程序處理的。web

    若是要評價和審視webform框架的設計思想,不得不對比另一個框架思想,那就是mvc框架(模型)的設計思想。mvc模型的發明,或許不是刻意設計,而是對事情的深刻思考,而後抓住本質的產物。mvc模型是爲了處理問題清晰明瞭,下降耦合性。spring

    因爲不會php和jsp就沒辦法對比這兩種技術了,其實很想把它們也拉進來對比下,特別是jsp技術,由於java的跨平臺性,jsp設計時不會有太多windows的影子,windows經常有種不想告訴你複雜的真相,因此我給你包裝一個簡單的世界給你的感受,而後隨着你的成長,這種早期的包裝可能會是一個大的負擔,或者說微軟的東西有太多windows的影子,過於圍繞windows了。數據庫

    最後總結一下,若是你放開本身緊張的神經,不給本身設限,隨意聯想,隨意設計,不過於考慮完美,你會感受到web技術發展中一些思想的傳承和變革。從簡單的html純文本展現,文本瀏覽器的發明,背後的http協議0.9,再到圖片展現,LiveScript的發明(就是javascript),到CGI程序,再到Servlet拼接html技術,到php腳本,到asp動態頁面技術,到jsp動態頁面技術,到webfrom框架,spring框架,mvc框架這些技術背後隱隱有一系列思想在串聯起來。一個東西的發明不是偶然的,每每有一個不起眼的起始。編程

    

 

 
閱讀本文請注意,假如你感受混亂,那麼就不要閱讀引用的部分,能夠大概先只閱讀其餘內容。
本文並無進行認真的考察和檢驗,有的地方多是錯誤的,一些技術的發明前後也可能並不許確。可是但願文中關注一個技術的發展歷史的思路和方法,能給你學習提供一點助益。
相關文章
相關標籤/搜索