国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.NET框架與網絡服務(下)

2019-11-18 21:15:06
字體:
來源:轉載
供稿:網友



  ■數據訪問服務


  幾乎所有的網絡服務都需要查詢和更新永久性數據,不論是以簡單文件,還是以相關數據庫,或是以其它的存儲類型存在。為了提供對數據的訪問,服務框架包括ActiveX Data Objects+ (ADO+)類庫。如同名字所暗示的那樣,ADO+由ADO發展而來。ADO+為基于網絡的應用程序和服務提供數據訪問服務。圖1闡明了ADO+的體系結構,表明任何數據,不論這些數據實際上如何存儲的,都以xml或相關數據的格式被操作。


  ADO+定義了那些鏈接數據倉庫、對數據倉庫發送命令及從中獲取結果的類。這些類由受控數據提供者(managed data PRovider)實現。ADO+中鏈接和命令對象看上去和ADO中的是一樣的,并且一個名為DataReader的新類提供了通過高性能API流獲取結果的能力。DataReader在功能上與ADO的記錄集(Recordset)是相似的,但是DataReader被設計用來最小化內存中生成的對象的數量,用以提高性能、避免垃圾積累。在.NET Framework中包含了針對Microsoft SQL Server的受控數據提供者以及可通過OLE DB訪問的任何數據倉庫。


  ADO+的一個主要創新是引入了數據集(Dataset)。一個數據集是內存中提供數據關系圖的高速緩沖區。數據集對數據源一無所知,它們可以由程序或通過從數據倉庫中調入數據而被生成、填充。不論數據從何處獲取,數據集都是通過使用同樣的程序模板而被操作的,并且它使用相同的數據緩沖區。使用.NET平臺的開發人員能夠用數據集代替傳統ADO中無連接的記錄集。


  受控數據提供者為數據倉庫和數據集公開的、名為DataSetCommand的接口對象。DataSetCommand使用ADO+鏈接和命令從數據倉庫中提取數據集,并把在數據集中發生的變化解析到數據倉庫中。


  就像DataReaders顯示了對于相關數據的有效的流訪問一樣,XmlReaders顯示了對XML數據的流訪問。開發人員使用DataNavigator可以滾動和編輯內存中的XML文檔。DataNavigator在功能上和Document Object Model (DOM)是一樣的,但它更有效,并提供了能很好映射關系數據表的對象模板。ADO+為那些希望繼續使用DOM作為XML對象模板而不是使用更有效的DataNavigator模板的開發人員提供了一個XMLDocument類。


    


  圖1 ADO+體系結構


  ■表單應用模板


  從概念上講,在服務框架的最上面是兩個應用程序模板:Windows表單應用模板和網絡應用程序模板。盡管本文把重點放在把Microsft.NET框架用作開發網絡服務和網絡應用程序的一種途徑上,但框架也可用于開發較傳統的基于Windows的應用程序(當然,這些應用程序也能使用網絡服務)。


  編寫Windows客戶應用程序的開發人員可使用Win表單應用程序模板以利用Windows豐富的用戶接口特點,包括現在的ActiveX控件和Windows 2000的新特點,如透明的、分層的浮動窗口。開發人員會發現Win表單可編程模板和對設計階段的支持非常直觀。


  Win表單利用了Microsft.NET框架 runtime以減少基于Windows的客戶應用程序的開銷。只要應用程序和組件是用于Win表單應用程序的,那么它們就能被框架安全模板在客戶機上安全地執行。


  Microsft.NET框架裝配模板簡化了應用程序的配制和版本化。應用程序可被配制為使用它們在編譯和測試中所用的共享組件,而不是使用恰好在客戶機器上安裝的隨便什么版本的組件,這就提高了應用程序的可靠性,減少了應用程序所支持調用的主要因素:用戶接口控件和其它共享組件版本的不兼容性。


  ■網絡應用程序模板


  建立在Microsft.NET框架上網絡應用程序共享一個通用應用程序模板。包含用于生成在瀏覽器中觀看的網頁的網絡應用程序和網絡服務。下面,筆者將詳細介紹Active Server Pages+ (asp+)的網絡應用程序可編程模板,如圖2所示。


  ASP+是由活動服務器頁面(ASP)發展而來。ASP+利用common language runtime和服務框架網絡應用程序提供了一個可靠的、自動化的、可擴展的主機環境。ASP+也受益于common language runtime集成模板,簡化了應用程序的配制。另外,它提供簡化應用程序開發的服務(如狀態管理服務)以及高水平的編程模板(如ASP+網絡表單和ASP+網絡服務)。


  ASP+的核心是HTTP運行語言,一個高性能的用于處理基于低級結構的HTTP請求的運行語言,而基于的結構與Microsoft Internet Information Services (IIS)所提供的ISAPI結構相似。由圖2可知,HTTP運行語言(HTTP runtime)負責處理引入的所有HTTP請求,并對每個請求應用程序的URL進行解析,然后把請求分配到應用程序以進行進一步的處理。HTTP 運行語言是多線程的,并異步處理請求,因此劣質的應用程序代碼阻礙不了它對新請求的處理。而且HTTP運行語言假定失敗必會發生,因此它通??梢宰詣拥貜脑L問沖突、內存泄漏、死鎖等事故中恢復過來。


  ASP+使用基于構件的Microsft .NET框架配制模板,因此它獲得了如XCOPY配制、構件并行配制、基于XML配制等優點。ASP+另一個主要優點是,它支持應用程序的實時更新。管理員不必關掉網絡服務器,甚至不用停止應用程序的運行就可以更新應用文件。應用程序文件永遠不會被加鎖,甚至在程序運行時文件就可以被覆蓋。當文件更新后,系統會檢測到文件變化,并用新的應用程序代碼建立一個新的應用程序實例,然后將引入的請求傳遞到應用程序。當所有被現存的應用程序實例處理的未完成的請求處理完后,該實例就被銷毀。


  在應用程序中,HTTP請求(HTTP Request)通過HTTP模塊的管道路由,最終到達請求處理程序。HTTP模塊和請求處理程序是一些實現特殊接口的受控類,而這些接口是由ASP+定義的。這種管道結構使得為應用程序增加服務非常方便:只需補充一個HTTP模塊。例如安全、狀態管理及跟蹤都被實現為HTTP模塊。高級可編程模塊,如網絡服務和網絡表單,通常被用于請求處理程序。一個應用程序能鏈接多個請求處理程序,每個處理程序對應一個URL,但是所有的HTTP請求都要通過同樣的管道路由。


  網絡基本上是一個無狀態模型,并且在HTTP請求間沒有聯系,這使得編寫網絡應用程序很困難,因為應用程序通常需要維護跨多個請求的狀態。ASP+增強了由ASP引入的狀態管理服務,以便為網絡應用程序提供三種類型的狀態:應用程序、會話和用戶。就像在ASP中一樣,應用程序狀態特定于一個應用程序實例,并且不會持久。會話狀態是特定于一個用戶與應用程序間的會話的。與ASP會話狀態不同,ASP+會話狀態儲存在一個獨立的過程中,并且可把它配制成可以儲存到一個獨立的機器上。這使得會話狀態當應用程序在網絡群(Web farm)擴展時非常有用。用戶狀態類似于會話狀態,但通常它不會超時,并且是永久性的。因此,用戶狀態對儲存用戶參數和其它個性化的信息是有用的。所有狀態管理服務都被實現為HTTP模塊,因此它們容易增加到應用程序管道中,或從中刪除。


    


  圖2 ASP+網絡應用模型


  如果除了由ASP+提供的服務外,還需要額外的狀態管理服務,那么可由第三方的模塊提供。


  ASP+同樣提供高速緩沖服務,以改善性能。輸出緩沖可完全節省網頁翻譯,段緩沖儲存部分的網頁。由于提供了相應的類,所以只要需要,應用程序、HTTP模塊以及請求處理程序就可以在高速緩存中儲存任意數量的對象。


  下面讓我們認識一下建立在ASP+可編程模塊之上的兩個高級可編程模塊:ASP+網絡表單和ASP+網絡服務。


  ■ASP+網絡表單


  網絡表單把基于Visual Basic表單的高生產性優點帶到了網絡應用程序的開發中來。網絡表單支持傳統的將HTML內容與腳本代碼混合的ASP語法,但是它提出了一種將應用程序代碼和用戶接口內容分離的更加結構化的方法。引入的網絡表單控件用于為封裝通用用戶接口元素提供了一種機制。這些新的特點使得開發工具在支持VB小應用程序的同時,也支持設計模塊。


    


  圖3 ASP+網絡服務


  網絡表單控件負責生成用戶接口,典型情況是在HTML表單中。ASP+提供了一套映射傳統的HTML用戶接口小部件(包括列表框,文本框和按鈕)的網絡表單控件和一套附加的網絡控件(如日歷和廣告轉板)。這些控件的一個重要特點是,它們可以被編寫以適應客戶端的能力;同一網頁把大范圍的客戶端平臺和表單因素作為目標。換句話說,網絡表單控件能“嗅”到正在查找表單的客戶,然后返回合適的用戶經驗——可能是適合低級瀏覽器的HTML3.2或是適于IE5.0的動態HTML。


  考慮到網絡是一種無狀態的聯接模型,網絡應用程序開發人員所面臨的一個很復雜的問題是,他們要對用戶與基于網絡的接口的交互作用作出反應。網絡利用ASP+的體系架構提供了一套豐富的服務,以幫助開發人員建立交互式網頁。用戶與網頁交互作用的狀態管理的復雜性被ASP+網絡表單和網絡表單控件隱藏起來了。對開發人員來說,提供的豐富數據綁定服務使得顯示通過數據訪問服務得到的數據變得非常容易。


  代碼與內容的分離使ASP+網頁能動態地編譯到受控類中,用以提高性能。每個引入的HTTP請求都被傳遞到一個新的網頁實例中,因此開發人員不需要關心代碼中的線程安全性問題。


  ■ASP+網絡服務


  ASP+網絡服務體系架構為用ASP+建立網絡服務提供了一個高級可編程模板。雖然建立網絡服務并不需要使用網絡服務平臺,但是它提供許多的優點將簡化應用程序的開發過程,并且它使用的編程模型對用ASP或VB工作的開發人員來說是很熟悉的。使用這個可編程模型,開發人員可以不需要理解HTTP、SOAP或其它任何網絡服務規范。ASP+網絡服務可編程模型如圖3所示。


  開發人員用ASP+生成一個擴展名為 .ASMX的文件,并把此文件配制為網絡應用程序的一部分,就建立起了一個網絡服務。ASMX文件包含受控類的引用,或這個類的定義。這個類是由ASP+提供的WebService類所派生的。公有的類方法在標記上WebMethod屬性后,就會成為網絡服務方法,把HTTP請求發送到ASMX文件中的URL后,這些方法就會被調用。你不必手工為你的網絡服務建立一個契約。當被調用者發出請求時,ASP+會檢查類的元數據,從而自動生成SCL文件。


  客戶可通過SOAP、HTTP GET和HTTP POST提交請求。對方法和參數進行編碼的約定是:HTTP GET,將被編譯為查詢字符串;HTTP POST,將被編譯為表單數據。HTTP GET和HTTP POST 的機制不如SOAP有力,但是它們使得客戶在訪問網絡服務時不必支持SOAP。


  ASP+網絡服務模型假定了一個無狀態服務結構。無狀態結構通常比有狀態結構更具可擴展性。每次收到一個服務請求后,就生成一個新對象,請求被轉化為一個方法調用,當方法調用返回時對象被銷毀。如果這些服務需要跨請求維護狀態,那么它們將使用ASP+狀態管理服務。基于ASP+的網絡服務在網絡應用程序模型中運行,因此它們得到了該模型的所有安全、配制和其它優點。


  ASP+網絡服務還提供了一個為在SCL文件中描述的網絡服務生成分類的受控代理工具。代理生成器把SCL文件中描述的消息映射成受控類中的方法。代理對應用程序代碼隱藏了所有的網絡和引導設備,因此使用網絡服務看起來就象使用其它受控代碼一樣。代理將優先使用SOAP鏈接網絡服務,但是它同樣支持HTTP GET和HTTP POST機制。


  ■結論


  網絡服務為在Internet上綁定應用程序提供了簡單的、靈活的、基于多標準的模型,同時,最大可能地重用現存體系架構和應用程序。網絡應用程序可以很容易地與本地開發的服務或已存在的服務集成在一起,而不用考慮開發平臺、開發語言或使用的對象模型,以用于實現任何組成的服務或應用程序。


  Microsft.NET框架為開發人員提供了一個極為方便的開發環境,從而簡化了安全、可靠、可擴展、高可用性的網絡服務的建立、部署和不斷的發展。


  <全文完>


 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河间市| 精河县| 青阳县| 弋阳县| 浠水县| 岳普湖县| 玉门市| 台江县| 蓝山县| 茂名市| 门头沟区| 扬州市| 闽侯县| 洮南市| 陵水| 裕民县| 南城县| 禄劝| 阿尔山市| 山阴县| 喜德县| 玉环县| 延安市| 高平市| 保康县| 出国| 肥东县| 乌拉特前旗| 江阴市| 临沂市| 邹平县| 健康| 麟游县| 黄陵县| 台山市| 五峰| 门源| 曲周县| 奉新县| 宁城县| 信阳市|