微軟.NET戰略和ASP.NET簡介(3)
來源:互聯網
上載者:User
asp.net|微軟|戰略 ? 表單應用模板
從概念上講,在服務架構的最上面是兩個應用程式模板:Windows應用程式模板和網路應用程式模板。儘管我把重點放在把微軟.NET 架構用作開發網路服務和網路應用程式的一種途徑上,但架構也可用於開發較傳統的基於Windows的應用程式(當然,這些應用程式也能使用網路服務)。
編寫Windows客戶應用程式的開發人員可使用Win表單應用程式模板以利用Windows豐富的使用者介面特點,包括現在的ActiveX控制項和Windows 2000的新特點,如透明的、分層的、浮動視窗。可以選擇傳統的Windows或網路外觀。得知它和現在的基於Windows表單包的相似性以後,開發人員會發現Win表單可程式化模板和對設計階段的支援非常直觀。
Win 表單利用了Microsft .NET架構 runtime以減少基於Windows的客戶應用程式的開銷。只要應用程式和組件是用Win所寫或被Win表單應用程式使用,那麼它們就能被架構安全模板在客戶機上安全地執行。如果以這種方式使用或執行,那麼某人從Internet下載下來的生猛遊戲就不會對配製資訊和資料產生破壞,否則會自動地給使用者地址薄裡的每一個人寄送電子郵件。
Microsft .NET架構 裝配模板簡化了應用程式的配製和版本化 。應用程式可被配製為使用它們在編譯和測試所用的共用組件,而不是使用恰好在客戶機器上安裝的隨便什麼版本的組件,這就提高了應用程式的可靠性,減少了應用程式所支援調用的主要因素:使用者介面控制項和其它共用組件版本的不相容性。
? 網路應用程式模板
建立在Microsft .NET架構 上網路應用程式共用一個跨平台 app程式模板。在這個模型中,網路應用程式是一套起源於基URL 的URLs。因此它包含用於產生在瀏覽器中觀看的網頁的網路應用程式和網路服務。在本節中,我將詳細介紹稱為Active Server Pages+ (ASP.NET)的網路應用程式可程式化模板
如同你從名字猜到的那樣,ASP.NET是由活動伺服器頁面發展而來。ASP.NET利用common language runtime 和服務架構網路應用程式提供了一個可靠的、自動化的、可擴充的主機環境。ASP.NET也受益於common language runtime 整合模板,簡化了應用程式的配製。另外,它提供簡化應用程式開發的服務(如狀態管理服務)以及高水平的編程模板(如ASP.NET Web Forms和ASP.NET Web Services)。
ASP.NET的核心是HTTP運行語言,一個高效能的用於處理基於低級結構的HTTP請求的運行語言,而基於的結構與MicroSoft Internet Information Services (IIS)所提供的ISAPI結構相似。如同你在圖5所看到的,HTTP 運行語言是在象伺服器上的IIS或客戶機上的IE之類的unmanaged 主機過程中啟動並執行受控代碼。HTTP runtime負責處理引入的所有HTTP請求,並對每個請求應用程式的URL進行解析,然後把請求分配到應用程式以進行進一步的處理。HTTP 運行語言是多線程的,並非同步處理請求,因此劣質的應用程式代碼阻礙不了它對新請求的處理。而且HTTP 運行語言假定失敗必會發生,因此它被控製為盡最大力量自動地從存取違規、記憶體流失、死結等事故中恢複過來。除非是硬體故障,運行語言的目標是100%的可靠性。
ASP.NET使用基於構件的Microsft .NET架構配製模板,因此它獲得了如XCOPY配製、構件並行配製、基於XML配製等優點。ASP.NET另一個主要優點是,它支援應用程式的即時更新。管理員不必關掉網路伺服器或者甚至不用停止應用程式的運行就可以更新應用檔案。應用程式檔案永遠不會被加鎖,因此甚至在程式運行時檔案就可以被覆蓋。當檔案更新後,系統會溫和地轉換到新的版本。系統檢測檔案變化,並用新的應用程式代碼建立一個新的應用程式執行個體,然後將引入的請求路由到應用程式。當所有被現存的應用程式執行個體處理的未完成的請求處理完後,該執行個體就被銷毀了。
在應用程式中,HTTP請求是通過HTTP模組的一個管道路由的,最終到達請求處理常式。HTTP模組和請求處理常式是一些實現特殊介面的受控類,而這些介面是由ASP.NET定義的。這種管道結構使得為應用程式增加服務非常方便:只需補充一個HTTP模組。例如,安全,狀態管理及跟蹤都被實現為HTTP模組。進階可程式化模組,如網路服務和網路表單,通常被實現為請求處理常式。一個應用程式能連結與多個請求處理常式——每個處理常式一個URL,但是所有的HTTP請求都通過同樣的管道路由。
網路基本上是一個無狀態模型,並且在HTTP請求間沒有聯絡,這使得編寫網路應用程式很困難,因為應用程式通常需要維護跨多個請求的狀態。ASP.NET增強了由ASP引入的狀態管理服務,以便為網路應用程式提供三種類型的狀態:應用程式、會話、使用者。就象在ASP中一樣,應用程式狀態特定於一個應用程式執行個體,並且不會持久。工作階段狀態是特定於一個使用者與應用程式間的會話的。與ASP工作階段狀態不同,ASP.NET工作階段狀態儲存在一個獨立的過程中,並且可把它配製成可以儲存到一個獨立的機器上。這使得工作階段狀態當應用程式在網路群(Web farm)擴充時非常有用。使用者狀態類似於工作階段狀態,但通常它不會逾時,並且是永久性的。因此,使用者狀態對儲存使用者參數和其它個人化的資訊是有用的。所有狀態管理服務都被實現為HTTP模組,因此它們容易增加到應用程式管道中,或從中刪除。如果除了由ASP.NET提供的服務外,還需要額外的狀態管理服務,那麼可由第三方的模組提供。
ASP.NET同樣提供高速緩衝服務,以改善效能。輸出緩衝可完全節省網頁翻譯,段緩衝儲存部分的網頁。由於提供了相應的類,所以只要需要,應用程式、HTTP模組以及請求處理常式可以在快取中儲存任意數量的對象。
下面快速探索一下建立在ASP.NET可程式化模組之上的兩個進階可程式化模組:ASP.NET 網路 表單和 ASP.NET 網路 服務。
? ASP.NET 網路表單
網路表單把基於Visual Basic?的表單的高生產性的優點帶到了網路應用程式的開發中來。網路表單支援傳統的將HTML內容與角本代碼混合的ASP文法,但是它提出了一種將應用程式代碼和使用者介面內容分離的更加結構化的方法。引入的網路表單控制項用於為封裝通用使用者介面元素提供了一種機制。這些新的特點使得開發工具在支援VB小應用程式的同時,也支援設計時模組,使得WUSIWYG工具支援網頁布局。
網路表單控制項負責產生使用者介面,典型情況是在HTML表單中。ASP.NET是提供了一套映射傳統的HTML使用者介面小組件(包括列表框,文字框和按鈕)的網路表單控制項和一套附加的更加複雜的網路控制項(如日曆和廣告轉板)。這些控制項的一個重要特點是,它們可以被編寫以適應用戶端的能力;同一網頁把大範圍的用戶端平台和表單因素作為目標。換句話說,網路表單控制項能“嗅”到正在尋找表單的客戶,然後返回合適的使用者經驗――可能是適合低級瀏覽器的HTML3.2或是適於IE5.0的動態HTML。
考慮到網路是一種無狀態的聯結模型,網路應用程式開發人員所面臨的一個很複雜的問題是,他們要對使用者與基於網路的介面的互動作用作出反應。網路利用ASP.NET的體系架構提供了一套豐富的服務,以協助開發人員建立互動式網頁。這些服務的淨作用是使基於組件的、事件驅動的可程式化模組,對開發人員來說,非常象用戶端的表單程式設計。使用者與網頁互動作用的狀態管理的複雜性被ASP.NET 網路 表單和網路表單控制項隱藏起來了。對開發人員來說,提供的豐富資料繫結服務使得顯示通過資料訪問服務得到的資料變得非常容易。
代碼與內容的分離使ASP.NET網頁能動態地編譯到受控類中,用以提高效能。每個引入的HTTP請求都被傳遞到一個新的網頁執行個體,因此開發人員不需要關心代碼中的執行緒安全性。
? ASP.NET 網路 服務
ASP.NET 網路 服務體系架構為用ASP.NET建立網路 服務提供了一進階可程式化模板。雖然建立網路服務並不需要使用網路 服務平台,但是它提供許多的優點將簡化開發過程,並且它使用的編程模型對用ASP或VB工作的開發人員來說是很熟悉的。使用這個可程式化模型,開發人員不需要理解HTTP、SOAP或其它任何網路服務規範。
開發人員用ASP.NET產生一個副檔名為.asmx的檔案,並把此檔案配製為網路應用程式的一部分,就建立起了一個網路 服務。ASMX檔案或者包含對在其它地方定義的受控類的引用,或者包含這個類的定義。這個類是由ASP.NET提供的WebService類所派生。公有的類方法在標記上WebMethod屬性後,就會成為網路服務方法,把HTTP請求發送到ASMX檔案中的URL後,這些方法就會被調用。你不必手工為你的網路服務建立一個契約。當被調用者請求時,ASP.NET檢查類的中繼資料,以自動產生SCL檔案。
客戶可通過SOAP,HTTP GET 和HTTP POST提交請求。對方法和參數進行編碼的約定是:對HTTP GET,將被編碼為查詢字串;對HTTP POST,將被編碼為表單資料。HTTP GET 和HTTP POST 的機制不如SOAP有力,但是它們使得客戶在訪問網路服務時不必支援SOAP。
ASP.NET 網路服務模型假定了一個無狀態服務結構。無狀態結構通常比有狀態結構更具可擴充性。每次收到一個服務要求後,就產生一個新對象,請求被轉化為一個方法調用,當方法調用返回時對象被銷毀。如果這些服務需要跨請求維護狀態,那麼它們將使用ASP.NET狀態管理服務。基於ASP.NET的網路服務在網路應用程式模型中運行,因此它們得到了該模型的所有安全、配製和其它優點。
ASP.NET 網路服務還提供了一個為在SCL檔案中描述的網路服務產生分類的受控代理工具。代理產生器把SCL檔案中描述的訊息映射成受控類中的方法。代理對應用程式程式碼後置了所有的網路和引導裝置,因此使用網路服務看起來就象使用其它受控代碼一樣。代理將優先使用SOAP連結網路服務,但是它同樣支援HTTP GET和 HTTP POST機制。因此HTTP GET和 HTTP POST同樣也能被使用。
網路服務為在Internet上繫結應用程式提供了一個利用現存體系架構和應用程式的簡單的、靈活的、基於許多標準的模型。網路應用程式很容易與當地開發的服務或已存在的服務整合在一起,而不用考慮開發平台、開發語言或使用的物件模型,以用於實現任何組成的服務或應用程式。
Microsft .NET架構在現有開發人員技巧之上,提供了一個應用程式模板和關鍵技術,用於簡化安全、可靠、可擴充、高可用性的網路服務的建立、部署和不斷的發展。
通過上面的介紹,我們能夠感覺到MicroSoft .NET對於我們今後的程式設計將產生巨大的影響。
1.1.3 ASP.NET曆史
我們在講述ASP.NET曆史之前,讓我們來回顧一下ASP。
ASP的第一個版本是0.9測試版。它給WEB開發帶來一陣暴風,它能夠將代碼直接嵌入HTML,使得設計WEB頁面變得更簡單,更強大,並且通過內建的組件能夠實現強大功能,最明顯的就是ActiveX Data Objects (ADO),它使得建立一個動態網頁面如小孩子玩遊戲一樣簡單。
最終出場的是Active Server Page 1.0,它做為IIS的附屬產品免費發送。並且不久就在Windows平台上廣泛使用。ASP與ADO的結合使用開發人員很容易地在一個資料庫中建立和開啟一個記錄集。這不無疑是它如此快就被福士接受的因素,因為你現在能使用這些指令碼建立和開啟一個記錄集,處理和輸出任何資料,以任何順序,幾乎只要你能想到的,它就能完成。
1998年,微軟公司又發布了ASP 2.0 。ASP 1.0和ASP 2.0主要區別是外部的組件需要執行個體化。有了ASP 2.0 和IIS 4.0,我們就有可能建立ASP應用了,而且每個組件就有了自已單獨的記憶體空間。內建的MicroSoft Transaction Server(MTS)也使用製做組件便得簡單。
微軟公司接著開發了Windows 2000作業系統。 這個Windows版本給我們帶上了IIS 5.0 以及 ASP 3.0。此次並不是簡單對ASP進行補充,核心的不同實際上是把很多的事情交給了COM來做。在windows 2000中,微軟結合了MTS與COM核心環境做出了COM+,這就讓主機有了一種新的方法來使用組件,同樣給主機帶來了更多的穩定性,成了一個可以升級的效率高的工作平台。IIS 5.0在表面上似乎沒有改什麼,但是在介面上動的手術比較大。在內部,它使用COM+ 元件服務來對組件提供一個更好的執行的環境。
有了這些,微軟公司推出了ASP.NET,ASP.NET又叫ASP.NET,他不是ASP的簡單升級,而是MicroSoft推出的新一代Active Server Pages。ASP.NET是微軟發展的新的體繫結.NET的一部分,其中全新的技術架構會讓每個人的編程生活變得更的簡單