.NET架構與網路服務(下)

來源:互聯網
上載者:User
網路 .NET架構與網路服務(下)
(作者:MSDN 2001年02月06日 10:47)

   ■資料訪問服務
  幾乎所有的網路服務都需要查詢和更新永久性資料,不論是以簡單檔案,還是以相關資料庫,或是以其它的儲存類型存在。為了提供對資料的訪問,服務架構套件括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架構上網路應用程式共用一個跨平台 app程式模板。包含用於產生在瀏覽器中觀看的網頁的網路應用程式和網路服務。下面,筆者將詳細介紹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運行語言假定失敗必會發生,因此它通常可以自動地從存取違規、記憶體流失、死結等事故中恢複過來。

  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架構為開發人員提供了一個極為方便的開發環境,從而簡化了安全、可靠、可擴充、高可用性的網路服務的建立、部署和不斷的發展。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。