微軟.NET戰略和ASP.NET簡介(3)
2024-07-10 13:01:57
供稿:網友
,歡迎訪問網頁設計愛好者web開發。? 表單應用模板
從概念上講,在服務框架的最上面是兩個應用程序模板:windows應用程序模板和網絡應用程序模板。盡管我把重點放在把微軟.net 框架用作開發網絡服務和網絡應用程序的一種途徑上,但框架也可用于開發較傳統的基于windows的應用程序(當然,這些應用程序也能使用網絡服務)。
編寫windows客戶應用程序的開發人員可使用win表單應用程序模板以利用windows豐富的用戶接口特點,包括現在的activex控件和windows 2000的新特點,如透明的、分層的、浮動窗口??梢赃x擇傳統的windows或網絡外觀。得知它和現在的基于windows表單包的相似性以后,開發人員會發現win表單可編程模板和對設計階段的支持非常直觀。
win 表單利用了microsft .net框架 runtime以減少基于windows的客戶應用程序的開銷。只要應用程序和組件是用win所寫或被win表單應用程序使用,那么它們就能被框架安全模板在客戶機上安全地執行。如果以這種方式使用或執行,那么某人從internet下載下來的生猛游戲就不會對配制信息和數據產生破壞,否則會自動地給用戶地址薄里的每一個人發送電子郵件。
microsft .net框架 裝配模板簡化了應用程序的配制和版本化 。應用程序可被配制為使用它們在編譯和測試所用的共享組件,而不是使用恰好在客戶機器上安裝的隨便什么版本的組件,這就提高了應用程序的可靠性,減少了應用程序所支持調用的主要因素:用戶接口控件和其它共享組件版本的不兼容性。
? 網絡應用程序模板
建立在microsft .net框架 上網絡應用程序共享一個通用應用程序模板。在這個模型中,網絡應用程序是一套起源于基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狀態管理服務?;赼sp.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測試版。它給帶來一陣暴風,它能夠將代碼直接嵌入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的一部分,其中全新的技術架構會讓每個人的編程生活變得更的簡單