<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    原文引自:http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter1Introduction.mspx

    第 3 章 — 建立連接

    發(fā)布日期: 8/20/2004 | 更新日期: 8/20/2004

    智能客戶端體系結構與設計指南

    David Hill, Brenton Webster, Edward A. Jezierski, Srinath Vasireddy and Mohammad Al-Sabt, Microsoft Corporation; Blaine Wastell, Ascentium Corporation; Jonathan Rasmusson and Paul Gale, ThoughtWorks; and Paul Slater, Wadeware LLC

    相關鏈接

    Microsoft? patterns & practices http://www.microsoft.com/resources/practices/default.mspx

    Application Architecture for .NET: Designing Applications and Services http://msdn.microsoft.com/library/en-us/dnbda/html/distapp.asp

    摘要:本章介紹了應用程序可用來連接和使用網(wǎng)絡資源以及客戶計算機上組件或進程的許多方法,并且討論了每種方法的優(yōu)點和缺點。

    *
    本頁內容
    松耦合系統(tǒng)和緊耦合系統(tǒng) 松耦合系統(tǒng)和緊耦合系統(tǒng)
    通訊選項 通訊選項
    選擇通訊選項 選擇通訊選項
    設計連接的智能客戶端應用程序 設計連接的智能客戶端應用程序
    小結 小結

    按照定義,智能客戶端需要連接到其他資源并與這些資源進行通訊,并且構成分布式應用程序的一部分。這些資源可以是客戶端進程或組件,也可以是網(wǎng)絡資源,如 Web 服務。

    本章分析智能客戶端與其他資源之間的通訊的性質。本章將考察可用來連接和使用其他進程、組件或遠程服務中的資源的不同技術,并且討論如何對它們進行取舍。最后,本章將分析如何最好地設計您的智能客戶端以連接到資源。

    松耦合系統(tǒng)和緊耦合系統(tǒng)

    客戶端應用程序可以用不同的方式連接和使用其他進程(包括本地進程和網(wǎng)絡進程)中的組件和服務。按照服務與客戶端之間存在多少耦合性對不同的方法進行分類是很有用的。

    耦合性是指組件(在分布式系統(tǒng)中)互相依賴的程度。客戶端與它們同其進行通訊的服務之間耦合的性質可能影響智能客戶端設計的許多方面,包括互操作性、脫機功能、網(wǎng)絡通訊性能、部署以及維護注意事項。

    緊耦合系統(tǒng)通常提供直接的對象到對象通訊,并且客戶端上的對象對遠程對象具有詳細的了解。這種緊耦合性可以防止對客戶端或服務器進行單獨更新。因為緊耦合系統(tǒng)涉及直接的對象到對象通訊,所以對象通常比在松耦合系統(tǒng)中更為頻繁地交互,這樣,如果兩個對象位于不同的計算機上并且由網(wǎng)絡連接分隔,則可能導致性能和延遲問題。

    松耦合系統(tǒng)通常是基于消息的系統(tǒng),此時客戶端和遠程服務并不知道對方是如何實現(xiàn)的。客戶端和服務之間的通訊由消息的架構支配。只要消息符合協(xié)商的架構,則客戶端或服務的實現(xiàn)就可以根據(jù)需要進行更改,而不必擔心會破壞對方。

    松耦合通訊機制提供了緊耦合機制所沒有的許多優(yōu)點,并且它們有助于降低客戶端和遠程服務之間的依賴性。但是,緊耦合性通常可以提供性能好處,便于在客戶端和服務之間進行更為緊密的集成(這在存在安全性和事務處理要求時,可能是必需的)。

    所有與遠程服務或組件通訊的分布式客戶端都具有某種程度的耦合性。您需要了解各種松耦合方法和緊耦合方法具有的不同特征,以便為您的應用程序選擇合適程度的耦合性。

    返回頁首返回頁首

    通訊選項

    當您設計智能客戶端應用程序時,您可以從多種將其連接到其他資源的方法中進行選擇,這些方法包括:

    ?

    Microsoft_ .NET Enterprise Services

    ?

    Microsoft .NET remoting

    ?

    Microsoft Windows_ 消息隊列(也稱為 MSMQ)。

    ?

    Web 服務。

    .NET Enterprise Services

    您可以使用 .NET Enterprise Services 提供對托管代碼組件和應用程序的 COM+ 服務基礎結構的訪問。.NET 組件依賴 COM+ 為其提供許多組件服務,如:

    ?

    Transaction support.

    ?

    Role-based security.

    ?

    Loosely coupled events.

    ?

    Object pooling.

    ?

    Queued components.

    ?

    Just-in-time activation.

    使用 COM+ 服務的 .NET 組件稱為服務組件。因為您的服務組件以 COM+應用程序為宿主,所以它們必須可供該應用程序訪問。這就為服務組件帶來了一些注冊和配置要求:

    ?

    程序集必須從 System.EnterpriseServices 命名空間中的 ServicedComponent 類派生。

    ?

    程序集必須是強命名的。

    ?

    程序集必須在 Microsoft Windows 注冊表中注冊。

    ?

    必須將程序集的類型庫定義注冊和安裝到特定的 COM+應用程序中。

    如果程序集包含被配置為進程外應用程序的服務組件,則應該將相應的程序集放到全局程序集緩存中。如果程序集包含被配置為進程內庫的服務組件,則不必將其放到全局程序集緩存中,除非它們位于與應用程序不同的目錄中。如果您以這種方式部署同一版本服務組件的多個副本,則 COM+ 目錄包含該組件的所有實例的全局配置;您無法逐個副本地對它們進行配置。

    下面的代碼示例顯示了一個需要事務的組件,并且提供了一種在該事務內向數(shù)據(jù)庫中寫入數(shù)據(jù)的方法。

    using System.EnterpriseServices; 
    [Transaction( TransactionOption.Required )] 
    public class CustomerAccount : ServicedComponent 
    { 
    [AutoComplete] 
    public bool UpdateCustomerName( int customerID, string customerName ) 
    { 
                // Updates the database, no need to call SetComplete. 
                // Calls SetComplete automatically if no exception is thrown. 
    } 
    } 
    

    服務組件通常可以在首次運行時動態(tài)注冊。這種類型的注冊稱為惰性注冊。當托管代碼應用程序首次嘗試創(chuàng)建服務組件的實例時,公共語言運行庫 (CLR) 將注冊程序集和類型庫,并且配置 COM+ 目錄。對于特定版本的程序集,注冊只發(fā)生一次。通過惰性注冊,您可以使用 Xcopy 部署來部署服務組件,并且無須顯式注冊服務組件就可以在開發(fā)周期中使用它們。

    惰性注冊是注冊服務組件的最容易的方法,但它只在運行這些服務組件的進程具有管理特權時才有效。而且,任何被標記為 COM+ 服務器應用程序的程序集都要求顯式注冊;對于調用托管服務組件的非托管客戶端而言,動態(tài)注冊不起作用。如果使用服務組件的進程不具有動態(tài)注冊所需的特權,則您需要使用 .NET 框架隨附的 Regsvcs.exe 工具顯式注冊包含該服務組件的程序集。

    惰性注冊和 Regsvcs.exe 都需要客戶計算機上的管理權限,因此如果您的應用程序包含服務組件,則無法使用非接觸式部署來部署它。有關詳細信息,請參閱第 7 章:部署和更新智能客戶端

    可以用多種不同的方式托管和訪問服務組件。它們可以由 ASP.NET應用程序托管并通過 HTTP 訪問,或者可以通過 SOAP 或 DCOM(默認設置)訪問它們。但是,如果 COM+ 服務需要與調用一起流動(例如,如果您需要用戶的標識或分布式事務從您的應用程序流動到服務組件),則 DCOM 是唯一可行的解決方案。

    如果您使用 DCOM 與 COM+ 應用程序通訊,則需要將 interop 程序集部署到客戶計算機,就像您部署傳統(tǒng) COM 組件那樣。

    Enterprise Services 具有許多您可以在智能客戶端應用程序中使用的強大組件功能。然而,您通常只應該在單個進程內、在單臺客戶計算機上或者在服務器上的服務邊界內使用這些功能。由于 Enterprise Services 所具有的緊耦合性質,它們通常不是在智能客戶端應用程序和位于遠程系統(tǒng)上的服務之間進行通訊的最佳選擇。如果您的智能客戶端應用程序需要在本地使用 COM+ 服務(例如,事務支持、對象池或基于角色的安全性),請使用 Enterprise Services。

    有關 Enterprise Services 的詳細信息,請參閱 .NET Framework Developer's Guide 中的“Writing Serviced Components”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconwritingservicedcomponents.asp?frame=true

    .NET remoting

    .NET remoting 提供了靈活且可擴展的遠程過程調用 (RPC) 機制,.NET 組件可以通過該機制進行通訊。通過 .NET remoting,您可以使用多種通訊協(xié)議(如 HTTP 或 TCP)、數(shù)據(jù)編碼選項(包括 XML、SOAP 和二進制編碼)和各種對象激活模型。它可以提供在對象之間進行通訊的快速而有效的手段。

    .NET remoting 使您可以通過使用顯示為遠程對象的代理對象,像調用本地對象一樣調用遠程對象。.NET remoting 基礎結構通過屬性和方法調用處理客戶端代碼和遠程對象之間的交互,在此期間對在它們之間傳遞的數(shù)據(jù)進行編碼,并且管理遠程目標對象的創(chuàng)建和刪除。

    .NET remoting 基礎結構要求客戶端具有關于遠程對象的公共方法和屬性的詳細知識,以便提供客戶端代理。確保客戶端具有該知識的一種方法是向客戶端分發(fā)該遠程對象的完整實現(xiàn)。然而,更為有效的方法是將公共方法和屬性包括到接口定義中,并且將這些接口編譯為它們自己的程序集。然后,客戶端可以使用接口程序集來提供適當?shù)拇恚h程對象可以使用接口程序集來實現(xiàn)必要的功能。而且,使用該技術時,您無須將完整的遠程對象重新分發(fā)到客戶端,就能夠更新這些遠程對象的實現(xiàn)。

    您可以用多種方法來管理遠程對象的生存期。可以按照需要創(chuàng)建對象以滿足單個請求,或者可以通過使用租用機制更細致地控制它們的生存期 — 此時,客戶端維護對遠程對象的租用,并且只要客戶端希望使用遠程對象,就必須使遠程對象保持活動。.NET remoting 還可以保證對于所有客戶端,只存在一個對象實例。您可以根據(jù)您對狀態(tài)管理和可伸縮性的要求,選擇應用程序的生存期。

    .NET remoting 的可擴展基礎結構使您可以創(chuàng)建自定義信道和接收器。自定義信道使您可以定義通過網(wǎng)絡傳輸數(shù)據(jù)的方式。例如,您可以定義自定義信道以實現(xiàn)自定義有線協(xié)議。自定義接收器使您可以截獲在對象之間發(fā)送的數(shù)據(jù),并對其執(zhí)行操作。例如,您可以定義自定義接收器在傳輸前后對數(shù)據(jù)進行加密或壓縮。

    .NET remoting 具有用于在對象之間進行通訊的強大且可擴展的機制。但是,由于它的緊耦合性質,在某些情形下它可能并不適合。.NET remoting 在客戶端和服務器都需要 .NET 實現(xiàn)的對象;因此,對于要求在不同環(huán)境之間具有互操作性的情形,它并不適合。對于在客戶端和服務器之間采用緊耦合 RPC 風格交互并不適當?shù)那樾危?NET remoting 也是不適合的。默認情況下,.NET remoting 不會提供任何內置的加密機制或用于在對象之間傳遞用戶標識或事務的機制。對于這些情形,應該使用 Enterprise Services。

    但是,對于在客戶計算機上或服務邊界內不同進程中的對象之間的通訊而言,以及對于不同應用程序域中的對象而言,.NET remoting 都是一種很好的選擇。

    有關使用 .NET remoting 的詳細信息,請參閱“An Introduction to Microsoft .NET remoting Framework”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/dndotnet/html/introremoting.asp?frame=true

    有關對 Web 服務和遠程處理進行取舍的信息,請參閱“ASP.NET Web Services or Remoting: How to Choose”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/dnbda/html/bdadotnetarch16.asp?frame=true

    消息隊列

    借助于 Microsoft Windows 消息隊列,您可以很容易地通過發(fā)送和接收消息,快速而可靠地與應用程序通訊。消息處理為您提供了有保證的消息傳遞以及執(zhí)行許多業(yè)務過程的可靠方式。消息隊列提供了一種您可以在智能客戶端應用程序內使用的松耦合通訊機制。消息隊列具有下列功能:

    ?

    有保證的消息傳遞。消息隊列通過將消息存儲在隊列中直到其可以傳遞,保證了即使遠程系統(tǒng)失敗或不存在,消息也能夠傳遞。因此,與組件之間的直接調用相比,消息受失敗的影響的程度要小得多。

    ?

    消息優(yōu)先級化。更為緊急或重要的消息可以在不太重要的消息之前收到,從而有助于保證為關鍵應用程序提供足夠的響應時間。

    您只能為非事務性消息設置消息優(yōu)先級。

    ?

    脫機功能。如果消息因為客戶端脫機而無法傳遞,則會將它們存儲在待發(fā)隊列中,并且在客戶端重新聯(lián)機時自動傳遞它們。用戶在無法訪問目標隊列時可以繼續(xù)執(zhí)行操作。同時,其他操作可以像消息已被處理一樣繼續(xù)執(zhí)行,因為當網(wǎng)絡連接還原時可以保證傳遞消息。

    ?

    事務性消息處理。您將消息作為事務的一部分發(fā)送。這樣,您就可以發(fā)送多個相關消息,或者將您的應用程序設計為參與分布式事務,并且確保所有消息都按順序傳遞并且只傳遞一次。如果事務內發(fā)生任何錯誤,則整個事務都將被取消,并且不會發(fā)送任何消息。

    ?

    安全性。MessageQueue 組件所基于的消息隊列技術使用 Windows 安全性來確保訪問控制的安全、提供審核以及對您的組件發(fā)送和接收的消息進行加密和身份驗證。可以在網(wǎng)絡上對消息隊列消息進行加密,以使其不會被包嗅探器截獲。您還可以禁止隊列接收未加密的消息。

    使用消息隊列的應用程序可以通過使用 System.Messaging 命名空間中的類來發(fā)送消息以及從隊列中讀取消息。Message 類用于封裝要發(fā)送到隊列的消息,而 MessageQueue 類提供了對特定隊列及其屬性的訪問。

    您需要在任何使用消息隊列的計算機上安裝和配置它。Windows 桌面操作系統(tǒng)和 Microsoft Windows CE .NET 都可以使用消息隊列,從而使您可以在移動設備(如 Pocket PC 設備)上使用它。

    要與提供基于消息的訪問的服務交互,消息隊列是一種很好的選擇。您可以使用消息隊列與其他裝有消息隊列的系統(tǒng)通訊。盡管您可以使用連接工具包與其他消息處理系統(tǒng)(如 IBM 的 MQSeries)通訊,但與其他系統(tǒng)之間的互操作性是有限的。

    有關使用消息隊列的詳細信息,請參閱 Microsoft Platform SDK 文檔資料中的“Message Queuing (MSMQ)”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/msmq/msmq_overview_4ilh.asp?frame=true

    有關 MSMQ-MQSeries 跨接編程的信息,請參閱“Programming Considerations Using MSMQ-MQSeries Bridge Extensions”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/his/htm/_sna_programming_considerations_using_msmq_mqseries_bridge_extensions_appl.asp

    Web 服務

    Web 服務是具有下列功能的應用程序組件:

    ?

    通過標準的 Web 服務協(xié)議向其他 Web 服務和應用程序公開有用的功能。

    ?

    提供其接口的詳細說明,使您可以生成與它通訊的客戶端應用程序。說明是在名為 Web 服務描述語言 (WSDL) 文檔的 XML 文檔中提供的。

    ?

    通過使用 XML 架構說明其消息。

    Web 服務的基于 SOAP 的 XML 消息可以具有顯式(結構化和類型化)部分或寬松定義部分(使用任意 XML)。這意味著 Web 服務既可以是松耦合的,也可以是緊耦合的,并且可用于實現(xiàn)基于消息或 RPC 風格的系統(tǒng),具體取決于環(huán)境的準確性要求。

    您可以使用 Web 服務在異類環(huán)境中的組織內部以及組織之間生成模塊化的應用程序。這些應用程序可以與種類繁多的實現(xiàn)、平臺和設備互操作。任何能夠通過 HTTP 發(fā)送 XML 的系統(tǒng)都可以使用 Web 服務。因為 Web 服務是基于標準的,所以用不同語言編寫以及位于不同平臺上的系統(tǒng)可以相互使用對方的服務。這通常被稱為面向服務的體系結構。

    用于 Web 服務的主要標準是 HTTP、SOAP、UDDI 和 WSDL。Web 服務與傳輸協(xié)議無關。但是,HTTP 是最常見的用于傳輸 SOAP 消息的機制。因此,Web 服務非常適合于橫跨網(wǎng)絡和企業(yè)防火墻的應用程序,如需要通過 Internet 與服務通訊的智能客戶端。

    許多 Web 服務標準正在出現(xiàn),以擴展 Web 服務的功能。Microsoft Web Services Enhancements (WSE) 2.0 支持正在出現(xiàn)的 Web 服務標準,如 WS-Security、WS-SecureConversation、WS-Trust、WS-Policy、WS-Addressing、WS-Referrals、WS-Attachments 和 Direct Internet Message Encapsulation (DIME)。WSE 提供了編程模型,以實現(xiàn)它所支持的各種規(guī)范。有關詳細信息,請參閱“Web Service Enhancements (WSE)”,網(wǎng)址為:http://msdn.microsoft.com/webservices/building/wse/default.aspx

    有關 SOAP 的詳細信息,請參閱“Understanding SOAP”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/dnsoap/html/understandsoap.asp

    有關 WS-Security 的詳細信息,請參閱“Web Services Security Specifications Index Page”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/dnglobspec/html/wssecurspecindex.asp

    Web 服務通訊可以是粗粒度的、獨立的和無狀態(tài)的。但是,與其他形式的通訊相比,Web 服務通常是非常詳細的。

    Web 服務是生成大多數(shù)智能客戶端應用程序的最佳方法。高度的互操作性使 Web 服務能夠與各種各樣的應用程序通訊。使用廣泛采用的標準意味著它們通常只須進行最低限度的額外配置(與要求打開專用端口的其他技術比較),就可以通過網(wǎng)絡基礎結構和防火墻,Microsoft Visual Studio? 開發(fā)系統(tǒng)中對于 Web 服務的強大支持意味著您可以在單個開發(fā)環(huán)境中使用它們。

    在性能極高的應用程序中,Web 服務可能并不適當,因為它們太詳細,并且與其他消息處理技術(如 .NET remoting 和消息隊列)相比,它們包含相當繁重的消息有效負載。

    有關使用和生成 Web 服務的詳細信息,請參閱 .NET Framework Developer's Guide 中的“XML Web Services Created Using ASP.NET and XML Web Service Clients”,網(wǎng)址為:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconaspnetbuildingwebservicesaspnetwebserviceclients.asp?frame=true

    返回頁首返回頁首

    選擇通訊選項

    不同的通訊選項適用于不同的場合。表 3.1 概括了用于建立連接的不同選項。

    3.1 智能客戶端選項

    選項 優(yōu)點 缺點

    Enterprise Services

    提供對 COM+ 服務的訪問

    使標識能夠與調用一起流動

    要求在客戶端安裝服務組件

    僅適合于同一進程或計算機

    .NET remoting

    快速

    可插接

    支持自定義協(xié)議

    要求 .NET 框架運行

    專用

    無法在不打開 RPC 端口的情況下通過防火墻

    無安全性基礎結構

    Message Queuing

    對于與消息處理系統(tǒng)通訊很有用

    安全

    有保證的消息傳遞

    要求在客戶端上配置消息隊列

    不能容易地與其他系統(tǒng)集成

    Web services

    支持集成

    可擴展

    強大的行業(yè)支持

    定義明確的標準

    供應商/語言無關

    安全

    詳細

    性能比 .NET remoting 低

    如表 3.1 所示,在某些情況下,Enterprise Services、NET remoting 和消息隊列可能是用于在智能客戶端和連接的資源之間進行通訊的適當技術。但是,在大多數(shù)情況下,Web 服務是用于將智能客戶端應用程序連接到服務的最佳機制。

    圍繞 Web 服務通訊生成的體系結構可以在連接的環(huán)境和脫機環(huán)境中很好地工作,并且支持能夠自我描述且獨立的粗粒度、無狀態(tài)消息。對于 Internet 協(xié)議的依賴使得客戶端能夠廣泛分發(fā)給 Internet 上的每個人。

    返回頁首返回頁首

    設計連接的智能客戶端應用程序

    當您設計您的智能客戶端時,您應該考慮一些建議,包括:

    ?

    使用粗粒度的、封裝的消息。

    ?

    避免分布式 ACID 事務。

    ?

    避免在網(wǎng)絡中發(fā)送數(shù)據(jù)集。

    ?

    將大型數(shù)據(jù)集分解。

    ?

    將您的 Web 服務和程序集版本化。

    使用粗粒度的、封裝的消息

    分布式網(wǎng)絡調用是代價高昂的操作。您不應該使用與設計本地接口相同的細粒度方法來設計您的外部接口。要避免消息之間存在消息依賴性,比較好的做法是將接口方法生成為獨立函數(shù)。這樣做可以使您不必編寫復雜的跟蹤協(xié)調代碼來處理依賴于其他消息成功完成的消息的失敗。

    避免分布式 ACID 事務

    分布式 ACID(原子、一致、獨立、持久)事務是資源密集型的,伴隨大量網(wǎng)絡通信以及掛起本地事務上的大量相互依賴的系統(tǒng)鎖。如果您的智能客戶端或服務正在等待答復,并且在收到該答復之前無法繼續(xù)工作,則分布式 ACID 事務可能阻止業(yè)務過程。

    如果您的智能客戶端可能不加警告就切換到脫機模式,則分布式 ACID 事務的問題將會惡化。在此情況下,客戶端可能對數(shù)據(jù)加鎖,并且在可以在服務器釋放該鎖之前進入脫機模式。

    如果您無法通過將接口分解為單獨的不連續(xù)消息來避免消息依賴性,則您具有許多處理事務的選項,并且還可以避免分布式 ACID 事務:

    ?

    將緊耦合消息提交給服務器,并且讓事務協(xié)調器(如 Microsoft BizTalk? Server)來處理消息依賴性。

    ?

    自己在客戶端或服務器上編寫事務補償代碼。使用相應的通訊協(xié)議,以便服務器可以用來決定何時啟動事務,以及如何通知客戶端要完整處理的事務成功完成或失敗。

    避免在網(wǎng)絡中發(fā)送數(shù)據(jù)集

    數(shù)據(jù)集可能太大、太詳細,因而無法用作在多個層之間發(fā)送數(shù)據(jù)的通訊有效負載機制。取而代之,您應該使用數(shù)據(jù)傳輸對象 (DTO) 來減少發(fā)送到外部接口的消息有效負載。對于數(shù)據(jù)更改,您應該考慮只發(fā)送已更改的數(shù)據(jù),而不是發(fā)送整個數(shù)據(jù)集。

    有關 DTO 的詳細信息,請參閱第 2 章:處理數(shù)據(jù)

    將大型數(shù)據(jù)集分解

    如果您試圖同時顯示大型數(shù)據(jù)集的所有內容,則它們可能在客戶端導致性能問題。因此,您應該將它們分解為較小的數(shù)據(jù)集。以這種方式分解數(shù)據(jù)稱為分頁。例如,與顯示電話目錄的全部內容不同,您可以選擇一次顯示一頁(例如,每屏按字母順序顯示 20 個記錄)。如果您將客戶端設計為使用分頁,則應該確保對用戶界面進行相應的設計,以便使用戶可以容易地在各個頁之間導航。

    這一分解大型數(shù)據(jù)集的概念還適用于通過網(wǎng)絡與服務器進行的通訊。如果您可以將數(shù)據(jù)分解為可管理的數(shù)據(jù)塊,則您隨后可以按照需要加載所需的數(shù)據(jù),這種技術稱為惰性加載。在電話目錄示例中,只有當前操作需要的數(shù)據(jù)將被加載,從而減小了對應用程序和網(wǎng)絡的影響,并且可能使二者的響應更為迅速。

    要改善用戶體驗,可以在對即將到來的用戶請求進行預測的基礎上,使用附加線程執(zhí)行后臺處理以及與服務之間的通訊。

    盡管對惰性加載的支持可能是智能客戶端應用程序設計的重要方面,但您應該記住應用程序的脫機要求。通過網(wǎng)絡傳輸?shù)亩栊约虞d數(shù)據(jù)可能會妨礙應用程序像您希望的那樣脫機工作。

    將您的 Web 服務和程序集版本化

    當您將新版本的智能客戶端軟件發(fā)布到客戶端或者對該軟件進行升級時,應該創(chuàng)建新版本的程序集。如果您使用版本化的程序集,并且如果您將服務器服務設計為支持向后兼容接口,則可以支持多個版本的客戶端軟件。在發(fā)布新版本的 Web 服務時,您應該通過規(guī)范的命名約定來區(qū)分它們。可以改變各個版本的命名空間,以便它們包含日期信息,從而能夠清楚正在與哪個版本的 Web 服務客戶端通訊。

    有關處理多個版本的程序集的詳細信息,請參閱第 7 章:部署和更新智能客戶端

    返回頁首返回頁首

    小結

    智能客戶端需要訪問資源(包括本地資源和遠程資源)才能正常工作。要成功地設計可靠的并且能夠迅速響應用戶操作的智能客戶端,您如何處理這一通訊可能非常關鍵。諸如性能、安全性和靈活性之類的要求會影響到哪種連接選擇適合于您的環(huán)境。使用本章中的指導,您應該能夠確定哪些形式的連接適合于您的智能客戶端,然后相應地設計您的智能客戶端以及它們與之進行通訊的資源。

    轉到原英文頁面

    posted on 2006-02-10 14:52 TrampEagle 閱讀(407) 評論(0)  編輯  收藏 所屬分類: 技術文摘
    主站蜘蛛池模板: 亚洲熟妇少妇任你躁在线观看无码 | 黄色短视频免费看| 国产成人一区二区三区免费视频| 亚洲人成影院在线高清| 亚欧在线精品免费观看一区| 亚洲国产日韩一区高清在线| 久草免费手机视频| 亚洲精品亚洲人成在线观看麻豆| 一级毛片全部免费播放| 亚洲高清中文字幕| 最近免费中文字幕4| 337P日本欧洲亚洲大胆艺术图 | 成人嫩草影院免费观看| 久久久久久A亚洲欧洲AV冫| 中文字幕不卡免费视频| 久久久亚洲精品国产| 黄色网址免费大全| 亚洲色大成网站www永久网站| 国产免费av片在线播放| 一边摸一边爽一边叫床免费视频| 中文字幕精品亚洲无线码二区| 久久久国产精品无码免费专区| 亚洲视频在线观看| 日本阿v免费费视频完整版| 亚洲精品无码高潮喷水A片软| 亚洲AV中文无码乱人伦在线视色| 精品人妻系列无码人妻免费视频| 亚洲五月激情综合图片区| 黄页网站免费观看| 一级成人a免费视频| 亚洲精选在线观看| 免费无码看av的网站| 国产vA免费精品高清在线观看| 亚洲天堂男人天堂| 日美韩电影免费看| 成全视频高清免费观看电视剧| 亚洲人成人77777在线播放| 亚洲成A人片77777国产| 日韩中文字幕免费视频| 成人精品国产亚洲欧洲| 亚洲av无码成h人动漫无遮挡|