第 1 章 — 簡介
發布日期: 8/20/2004 | 更新日期: 8/20/2004
本頁內容
歡迎閱讀《智能客戶端體系結構與設計指南》。智能客戶端應用程序是瘦客戶端應用程序的強大替代產品。它們可以為用戶提供內容豐富且響應迅速的用戶界面,提供脫機工作的能力,并且提供利用本地硬件和軟件資源的方法。此外,可以將它們設計為在各種各樣的客戶端設備上運行,包括桌面 PC、平板 PC 以及手持移動設備(如 Pocket PC 和 Smartphone)。智能客戶端為用戶提供了在強大且直觀的客戶端環境中訪問信息和遠程服務的能力,并且是一種用來開發靈活的、面向用戶的應用程序以及提高用戶工作效率和滿意度的有效的解決方案。
經過設計,智能客戶端應用程序可以將胖客戶端應用程序的傳統優點與瘦客戶端應用程序的可管理性優點結合起來。然而,要完全實現智能客戶端應用程序的優點,需要考慮許多體系結構和設計問題。本指南描述了您在設計和實現智能客戶端應用程序時將面臨的體系結構和設計難題。它提供了有關如何克服這些難題的指導,從而使您能夠在盡可能短的時間內實現智能客戶端應用程序的優點。
注 有關智能客戶端的其他技術資源,請參考“智能客戶端開發人員中心”,網址為:http://msdn.microsoft.com/smartclient/。在位于 http://www.microsoft.com/net/smartclient/default.mspx 的 Microsoft .NET 站點上討論了智能客戶端的業務價值。
什么是智能客戶端?
要完全了解智能客戶端如何將胖客戶端與瘦客戶端的優點結合起來,有用的做法是分析胖/瘦客戶端應用程序模型背后的歷史和基礎原理,并且回顧一些與它們相關聯的優點和缺點。
胖客戶端應用程序
在二十世紀九十年代中期,為 Microsoft? Windows? 操作系統開發的胖客戶端應用程序的數量急劇增長。設計這些客戶端的目的是利用本地硬件資源以及客戶端操作系統平臺的功能。
盡管許多上述應用程序的功能令人印象深刻,但它們都具有局限性。許多上述應用程序是獨立的并且在客戶計算機上工作,對它們的工作環境所知甚少或一無所知。該環境包括其他計算機和網絡上的任何服務,以及用戶計算機上的任何其他應用程序。非常常見的情況是,應用程序之間的集成局限于使用 Windows 提供的剪切或復制并粘貼功能在應用程序之間傳輸少量的數據。
有一些有助于提高胖客戶端應用程序連接性的技術。例如,兩層應用程序使多個用戶可以訪問駐留在網絡上的公用數據,而 DCOM 使應用程序可以具有更高的分布性。(就 DCOM 而言,不再將邏輯和狀態與客戶計算機相聯系,而是將其封裝在對象內,然后在多臺計算機中分布這些對象。)但是,連接的應用程序的開發要復雜得多。隨著這些分布式應用程序的規模和復雜性逐漸增加,將越來越難以維持客戶端應用程序及它們使用的服務之間的緊耦合。
盡管胖客戶端通常提供了高質量、響應迅速的用戶體驗,并且具有良好的開發人員和平臺支持,但它們非常難于部署和維護。隨著應用程序和客戶端平臺的復雜性不斷增加,以可靠且安全的方式將應用程序部署到客戶計算機的難度也將不斷增加。如果部署了不兼容的共享組件或軟件庫,則一個應用程序可以很容易地破壞另一個應用程序,這種現象稱為應用程序脆弱性。新版本的應用程序通常通過重新部署整個應用程序來提供,這可能使應用程序脆弱性問題變得更加嚴重。
瘦客戶端應用程序
Internet 提供了傳統胖客戶端模型的替代模型,它解決了許多與應用程序部署和維護相關聯的問題。基于瀏覽器的瘦客戶端應用程序是在中央 Web 服務器上部署和更新的;因此,它們消除了將應用程序的任何部分顯式部署到客戶計算機并加以管理的必要性。
該模型使各個公司可以非常高效地將它們的應用程序公開給規模龐大、多種多樣的外部受眾。因為瘦客戶端已被證明能夠高效地解決一些部署和可管理性問題,所以它們現在用于向組織內的用戶提供對許多業務線 (LOB) 應用程序的訪問,以及向客戶和合作伙伴提供對面向外界的應用程序的訪問。盡管事實上這兩種用戶的需要和期望通常是根本不同的,也是如此。
瘦客戶端應用程序具有一些缺點。瀏覽器必須總是具有網絡連接。這意味著移動用戶在斷開連接時將無法訪問應用程序,因此當他們返回辦公室時,必須重新輸入數據。而且,常用的應用程序功能(如拖放、撤消-重復以及上下文相關幫助)可能不可用,這可能降低應用程序的可用性。
因為應用程序的大部分邏輯和狀態位于服務器上,所以瘦客戶端會頻繁地向服務器發回數據和處理請求。瀏覽器必須等待響應到達,然后用戶才能繼續使用該應用程序;因此,該應用程序的響應速度通常要比胖客戶端應用程序慢得多。該問題在低帶寬或高延遲的情況下被惡化了,并且產生的性能問題可能導致應用程序可用性和用戶效率大幅度下降。要求輸入大量數據以及/或者在多個窗口中頻繁導航的 LOB 應用程序尤其會受到這一問題的影響。
智能客戶端應用程序
經過設計,智能客戶端應用程序可以將胖客戶端應用程序的優點與瘦客戶端應用程序的部署和可管理性優點結合起來,盡管這兩種方法之間的平衡的準確性質取決于確切的情況。
智能客戶端應用程序通常具有形形色色的要求,因此在設計和實現方面會有極大的差異。但是,所有智能客戶端都具有下列部分或全部特征:
? |
利用本地資源 |
? |
利用網絡資源 |
? |
支持偶爾連接的用戶 |
? |
提供智能安裝和更新 |
? |
提供客戶端設備靈活性 |
許多應用程序不需要具有上述所有特征。當您設計您的智能客戶端時,將需要仔細考慮您的應用程序方案,并且決定您的智能客戶端應用程序要求具備上述哪些特征。要將上述所有特征合并到您的應用程序中,將需要進行非常認真的計劃和設計,并且在很多情況下您將需要大量的實現資源。
注 .NET 框架可以幫助您實現智能客戶端應用程序的許多特征。該框架提供了具備自我描述能力且牢固綁定的程序集,并且支持單獨和并列安裝應用程序的多個版本,從而有助于減少與胖客戶端相關聯的應用程序部署和脆弱性問題。.NET 框架基類庫為與 Web 服務進行交互提供了廣泛的支持,并且提供了 Windows 窗體。通過使用公共語言運行庫 (CLR),您可以利用任何受到 .NET 支持的語言來開發智能客戶端。
使用本地資源
設計良好的智能客戶端應用程序最大限度地利用了代碼和數據部署在客戶端上并且在本地執行和訪問這一事實。它為應用程序提供了內容豐富且響應迅速的用戶界面,以及強大的客戶端處理能力。例如,它可能使用戶能夠執行復雜的數據操作、可視化、搜索或排序操作。
智能客戶端可以利用客戶端硬件資源(如電話或條碼讀取器)以及其他軟件和應用程序。這使它們非常適合于解決瘦客戶端應用程序(如銷售點終端應用程序)無法很好解決的問題。智能客戶端還可以利用本地軟件(如 Microsoft Office 應用程序)或客戶計算機上安裝的任何 LOB 應用程序。通過創建能夠與多個 LOB 應用程序集成并對這些應用程序進行協調的解決方案,您的用戶可以更為有效地工作,進行更好的決策,并減少數據輸入錯誤。此類解決方案還可以使您的應用程序更加緊密地與用戶的工作環境集成(例如,通過采用自定義的或熟悉的用戶界面),從而降低培訓成本。
可以通過智能客戶端應用程序集成或協調其他客戶端應用程序,以便提供一致且高效的總體解決方案。這些應用程序還應該了解正在使用應用程序的上下文,并且應該適應該上下文以盡可能地幫助用戶;例如,通過根據用戶的使用模式或角色搶先緩存適當且有用的數據。
通過最大限度地使用本地資源以及將本地資源集成到您的智能客戶端應用程序,可以使您的應用程序更好、更有效地使用已經提供給您的硬件。非常常見的情況是,處理能力、內存和高級圖形功能沒有得到利用。使用客戶計算機上的資源還可以減少服務器端硬件要求。
使用網絡資源
智能客戶端可以通過網絡消耗和使用不同的服務和數據。它們是從許多不同的源檢索數據的有效方式,并且可以設計為對數據進行分析或整合,從而使用戶能夠進行更為有效和明智的決策。例如,智能客戶端可以使用映射服務來提供有關地點和駕駛方向的詳細信息。
智能客戶端應用程序應該盡可能地連接,并且應該利用可以通過網絡使用的資源和服務。它們不應該是獨立的應用程序,并且應該總是構成更大的分布式解決方案的一部分。智能客戶端應用程序起碼應該使用有助于維護該應用程序以及提供部署和更新服務的集中式服務。
智能客戶端應用程序的連接性質使其可以提供有價值的數據整合、分析和轉換服務。它們使用戶可以實時地或者在一段時間內協作完成任務。在許多情況下,智能客戶端應用程序可以向用戶提供類似于門戶的功能,從而將完全不同的數據和服務加以協調并集成到總體解決方案中。
有關如何設計智能客戶端以利用連接的服務的詳細信息,請參閱第 2 章:處理數據。
支持偶爾連接的用戶
可以將智能客戶端設計為向偶爾連接到網絡的用戶提供功能,從而使用戶可以在明確脫機、使用低帶寬或高延遲網絡,或者連接時斷時續的情況下繼續高效地工作。對于移動應用程序,智能客戶端還可以優化網絡帶寬 — 例如,通過將請求批量發送到服務器,以便更好地使用代價昂貴的連接。
即使當客戶端大多數時間都連接到網絡時,智能客戶端應用程序也可通過以智能方式緩存數據和管理連接來改善性能和可用性。例如,在低帶寬或高延遲環境中,智能客戶端應用程序可以用特殊的方式管理連接,即不損害應用程序的可用性和響應性,并且用戶可以繼續高效地工作。
通過使用戶能夠在斷開連接或只偶爾連接的情況下工作,提高了用戶的工作效率和滿意度。智能客戶端應用程序應該致力于在脫機時提供盡可能多的功能。
有關如何設計智能客戶端應用程序以支持偶爾連接的用戶的詳細信息,請參閱第 4 章:偶爾連接的智能客戶端。
提供智能安裝和更新
傳統胖客戶端所具有的一些最大的問題發生在部署或更新應用程序的時候。許多胖客戶端應用程序具有大量復雜的安裝要求,并且可能通過注冊組件以及/或者在公共位置安裝 DLL 來共享代碼,從而導致應用程序脆弱性和更新困難。
可以對智能客戶端應用程序進行設計,以使其按照遠比傳統胖客戶端應用程序更智能和靈活的方式來管理它們的部署和更新。它們可以避免上述常見問題,從而有助于減少應用程序的管理成本。
有許多部署智能客戶端的不同方式。這些方式包括:簡單地將文件復制到本地計算機;使用非接觸式部署自動從中央服務器下載代碼;或者使用企業推技術如 Microsoft Systems Management Server (SMS) 來部署 Windows Installer 軟件包。您選擇的方法將依賴于您的特定情況。
智能客戶端應用程序可以在其運行時或位于后臺時對自身進行自動更新。這一功能使其可以逐個角色地進行更新;以分階段的方式更新,從而可以將應用程序推介給先導小組或受限的用戶組;或者按照制定的時間表更新。
.NET 框架使您可以對應用程序組件進行強命名,這意味著應用程序可以指定用來生成和測試其確切版本的組件,并通過這些版本的組件運行。.NET 框架使應用程序可以相互隔離,以便在安裝一個應用程序時不會破壞另一個應用程序,并且同一應用程序的多個版本可以并列部署。這些功能大大簡化了應用程序部署,并且消除了許多與胖客戶端應用程序相關聯的應用程序脆弱性問題。
有關智能安裝和更新的詳細信息,請參閱第 7 章:部署和更新智能客戶端。
提供客戶端設備靈活性
智能客戶端還可以提供靈活且可自定義的客戶端環境,從而使用戶可以將應用程序配置為支持他或她喜歡的工作方式。智能客戶端應用程序沒有被限制到桌面計算機或膝上型計算機。隨著小規模設備的連接性和能力的增加,愈發需要能夠提供對多個設備上重要數據和服務的訪問的有用客戶端應用程序。與 .NET 框架壓縮版一起,.NET 框架提供了一個可用來生成智能客戶端應用程序的通用平臺。
可以對智能客戶端進行設計以使其適應宿主環境,并且為它們運行時所在的設備提供適當的功能。例如,適合在 Pocket PC 上運行的智能客戶端應用程序應該提供相應的用戶界面,該用戶界面在較小的屏幕區域上被調整為使用筆針。
在許多情況下,您需要設計多個版本的智能客戶端應用程序,每個版本都面向特定的設備類型,以便充分利用該設備所支持的特定功能。因為小規模設備通常在提供完整范圍的智能客戶端應用程序功能方面受到限制,所以它們可能只提供對功能完善的智能客戶端應用程序所提供的數據和服務子集的移動訪問,或者它們可用于在用戶移動時收集和整合數據。最后,可以由功能更加完善的智能客戶端應用程序或服務器端應用程序來分析或處理這些數據。
能夠感知目標設備的功能和使用環境(無論它是桌面、膝上型、平板還是移動設備),以及能夠定制應用程序以提供最適當的功能,這些都是許多智能客戶端應用程序的基本特點。
注 本指南不包含特定于在移動設備上運行的智能客戶端應用程序開發的體系結構和設計細節,但是,無論應用程序是在桌面計算機上運行還是在其他設備上運行,本指南包含的許多主題都同樣適用。
智能客戶端的類型
智能客戶端在設計和實現方面差異極大,這既包括應用程序要求,也包括可以使用它們的方案和環境的數量。因此,智能客戶端可以采取許多不同的形式和風格。根據智能客戶端應用程序所面向的平臺,可以將這些形式劃分為三大類:
? |
Windows 智能客戶端應用程序 |
? |
Office 智能客戶端應用程序 |
? |
移動智能客戶端應用程序 |
智能客戶端應用程序面向上述一種或多種平臺是很常見的情況,具體取決于用戶的角色以及需要的功能。這種靈活性是智能客戶端應用程序的主要長處之一。
本指南的其余部分將重點討論所有三種類型的智能客戶端應用程序所共有的問題,而不是詳細解釋影響個別類別的問題。但是,依次對各個類型進行簡要分析,以便您可以確定哪種風格的應用程序最適合您的情況,這將是很有用的。
Windows 智能客戶端應用程序
當您想到胖客戶端應用程序時,您通常可能會想到使用可用的系統資源并且提供內容豐富的用戶界面的桌面應用程序。面向 Windows 的智能客戶端應用程序是在傳統胖客戶端應用程序的基礎上發展而來的,并且提供特定的面向特殊目標的功能。
這些種類的應用程序通常使用 Windows 窗體來提供熟悉的 Windows 風格的用戶界面,并由應用程序本身提供大部分功能,而且不依賴于其他應用程序來提供主用戶界面。這樣的智能客戶端既可能包括通過 HTTP 部署的簡單應用程序,也可能包括非常復雜的應用程序。
Windows 智能客戶端應用程序適合于需要將應用程序作為熟悉的桌面類型應用程序進行部署和訪問的情況。這些類型的應用程序通常由其自身提供其大部分功能,但是在適當的時候可以與其他應用程序集成或者協調其他應用程序。它們提供針對特定任務進行調整的應用程序功能,以提供特定的或高性能的處理或圖形能力。
Windows 智能客戶端應用程序通常最適合于在桌面 PC、膝上型 PC 或平板 PC 上運行的應用程序。此外,它們通常不會提供與特定文檔或文檔類型緊密關聯的功能。
可以在各種各樣的場合下使用這些種類的 Windows 智能客戶端應用程序,例如作為 LOB、財務、科學或協作應用程序使用。這些種類的應用程序的示例有 Microsoft Money 以及 Microsoft Outlook? 消息處理和協作客戶端。
Office 智能客戶端應用程序
Microsoft Office System 2003 為您提供了用來生成智能客戶端應用程序(尤其是在企業設置中)的有用平臺。通過 Office 智能客戶端解決方案,您可以將通過 Web 服務訪問的數據源與 Word 2003、Excel 2003、InfoPath 2003 或其他 Office應用程序的功能集成起來,以開發智能客戶端解決方案。
這樣的 Office 智能客戶端應用程序可以成為組織的信息管理周期的集成部分,而不只是文檔數據的靜態容器。當用戶在文檔內工作時,它們可以提供上下文相關的數據,以及可以將 Web 服務公開的數據轉換為有用信息的工作流和任務指導、數據分析、協作、報告和呈現功能。
Microsoft Office 支持 XML,并且可以將該數據與文檔的其他方面分開,以便它可以由其他應用程序重新使用。因為 Microsoft Office 中的應用程序數據可以由多個應用程序中相同的客戶定義 XML 架構進行說明,所以開發人員可以將這些數據集成到智能客戶端應用程序中。
Microsoft Office 2003 具有許多用于生成智能客戶端解決方案的重要功能和選項。這些功能和選項包括:
? |
智能標記。智能標記為應用程序提供一種方法,可以為用戶提供與文檔內容有關的上下文相關數據,用戶在文檔內工作時,可以通過該方法容易地查看和使用相關信息。例如,使用智能標記,可以在文檔內引用客戶時提供相應客戶的帳戶狀態,或者可以在鍵入訂單 ID 時提供訂單狀態信息。這種上下文相關的反饋使用戶可以在工作時進行更為明智的決策。 |
? |
智能文檔。智能文檔為用戶提供了更為強大的與文檔和業務 Web 服務進行交互的方法。智能文檔是 Word 2003 和 Excel 2003(它們具有基礎 XML 結構和自定義的任務窗格)的一種新的解決方案模型。可以使用該任務窗格向用戶顯示上下文信息、任務、工具、后續步驟以及其他相關信息。用戶能夠通過與該任務窗格交互來啟動其他操作和任務,從而可以構建綜合性業務解決方案。 |
? |
適用于 Microsoft Office System 的 Microsoft Visual Studio_ 工具。該工具套件使開發人員能夠通過使用 Microsoft Visual Studio .NET 2003 開發系統來創建托管代碼 Office 智能客戶端應用程序。開發人員可以將文檔解決方案與基礎代碼分開(與以前的包含帶有自定義邏輯的 Visual Basic for Applications 宏的智能客戶端模型相比,這是一種替代解決方案)。通過將托管代碼與 Microsoft Office 一起使用,開發人員可以獲得更多為智能客戶端解決方案創建、部署和管理更新的有效選項。 |
? |
Microsoft Office InfoPath? 2003。InfoPath 2003 是能夠使用類似于表單的界面從用戶那里收集結構性數據的應用程序。InfoPath 2003 提供了對 XML Web 服務(一種基于表單的用戶界面)的支持,以及對標準技術(如 WSDL 和 UDDI)的支持。InfoPath 2003 支持有限的脫機使用,方法是允許用戶在脫機時與表單進行交互,然后允許用戶在聯機時將該表單轉發給 Web 服務。 |
本指南并不試圖涉及特定于 Office 智能客戶端的所有問題,但所涉及的大多數主題都完全與上面討論的智能客戶端應用程序有關。
移動智能客戶端應用程序
移動智能客戶端是在智能設備上運行的應用程序,這些智能設備包括 Pocket PC、Smartphone 以及其他超小型臺式設備(如機頂盒)。這些應用程序是使用 .NET 框架壓縮版(它是完整 .NET 框架的子集)開發的。
.NET 框架壓縮版具有完整 .NET 框架的許多功能,支持 XML,并且消耗 Web 服務。它被進行了優化以便在超小型臺式設備上使用,并且它包含用于開發用戶界面的 Windows 窗體設計器。
通過使用 Visual Studio .NET 智能設備項目,您可以開發能夠在 .NET 框架壓縮版上運行的智能客戶端。采用這一方法,您可以通過在超小型臺式設備的模擬器上使用 Visual Studio .NET 來開發、測試和調試應用程序。模擬器的使用大大加快了這些類型應用程序的開發和測試速度。
移動智能客戶端應用程序通常用于提供對重要數據和服務的移動訪問,或者在用戶處于移動狀態時收集和整合數據。這些類型應用程序的示例有保險和金融數據收集應用程序、庫存管理應用程序和個人工作效率管理應用程序。
本指南并未特地集中討論移動智能客戶端應用程序,盡管所討論的許多體系結構問題和解決方案都與智能設備相關。
對智能客戶端和瘦客戶端進行取舍
要針對您的情況選擇正確的應用程序體系結構,必須考慮許多因素。要確定智能客戶端方法是否最適合您的應用程序,請認真考慮您當前和將來業務應用程序的需要。如果您的應用程序基于不適合的體系結構,則它可能無法滿足用戶和整個企業的要求和期望。如果以后更改體系結構以滿足新的要求或者利用新的機遇,則可能要付出極為高昂的代價。
如果您需要向各種外部受眾提供面向外界的應用程序,則瘦客戶端體系結構通常最為適當;而對于需要與其他客戶端應用程序或硬件集成或者對它們進行協調,或者需要脫機工作或通過響應迅速的用戶界面提供特定高性能功能的內部應用程序而言,智能客戶端體系結構通常最為適當。
實際上,這兩種方法在很大程度上互相重疊,而且每種方法都具有明顯的優點和缺點。您只有在認真考慮您的要求并且了解如何在您所處的場合下應用每種方法之后,才能夠選擇正確的方法。您可以使用表 1.1 來幫助您對智能客戶端和瘦客戶端體系結構進行取舍。
表 1.1 瘦客戶端和智能客戶端的特點
提供內容豐富的用戶界面 |
可以,但難以開發、測試和調試。通常將應用程序與單個瀏覽器聯系起來。 |
是。更易于開發、測試和調試。 |
可以利用本地計算機上的硬件資源 |
是,但只能通過 COM 組件使用。 |
是 |
可以與其他本地應用程序交互 |
否 |
是 |
可以多線程化 |
否 |
是 |
可以脫機工作 |
否 |
是 |
在低帶寬和高延遲環境中可以很好地執行。 |
否 |
是 |
易于部署 |
是 |
不一定。困難程度取決于應用程序要求。 |
低維護和更改管理成本 |
是 |
不一定。成本取決于應用程序要求。 |
可以部署到具有不同功能的多種客戶端上。 |
是,盡管更復雜的瘦客戶端可能要求單個瀏覽器。 |
是。可以在支持 .NET 框架(包括 .NET 框架壓縮版)的任何平臺上部署。 |
智能客戶端體系結構難題
智能客戶端的體系結構難題不同于瘦客戶端,并且您需要在您的應用程序設計中予以考慮。智能客戶端應用程序具有顯著的優點,但是您只有在適當地解決這些難題之后才能實現這些優點。
通過智能客戶端可以將數據和邏輯分發到客戶計算機,而瘦客戶端則傾向于將數據和邏輯集中存放在 Web 服務器和其他后端服務中。盡管可以通過智能客戶端方法使應用程序變得更加高效,并且不需要與服務器進行往返通訊以確定后續步驟,但您需要考慮到應用程序及其數據現在比瘦客戶端應用程序分布得更為廣泛,并且相應地修改您的設計。
如果您要在客戶端上實現業務規則,您將需要在必要時更新這些規則,而不是更新整個應用程序。這可能意味著您需要使用不同的機制來分別更新該應用程序以及更新該應用程序內部的業務規則。
通過在客戶端上緩存數據,您可以顯著改善應用程序的性能和可用性,但您必須確保適當地刷新數據并且不會使用陳舊的數據。因為許多用戶可以訪問和使用相同的數據,您還必須考慮數據并發的影響。您的應用程序必須能夠處理出現的數據沖突或一致問題,因為應用程序現在分布得更為廣泛,并且可以脫機操作。第 3 章:建立連接詳細討論了這些問題。
.NET 框架在智能客戶端應用程序的宿主方式方面提供了極大的靈活性。應用程序可以作為傳統桌面應用程序運行,還可以宿主在 Office 或 Microsoft Internet Explorer 內。也可以進行許多種組合。例如,Windows 窗體應用程序可以宿主 Internet Explorer 或 Office 組件,并且任何宿主都可以包含任何其他宿主。
您可以將不穩定的應用程序邏輯(例如,控制大訂單折扣的業務規則)結合到根據需要通過 HTTP 下載的程序集中。這樣做消除了在開發新應用程序邏輯時部署新版本客戶端應用程序的需要。您可以使用與附加(或不常使用)應用程序功能相同的模型,以便使初始應用程序規模保持最小,并且根據需要安裝附加功能。
您可以選擇將您的智能客戶端作為復合應用程序進行部署,此時許多應用程序組合起來構成一個統一的解決方案。可以通過耦合桌面應用程序,或者通過提供一般性的外殼應用程序以容納多個共同構成解決方案的輕型應用程序,來構成這樣的解決方案。
當用戶必須訪問許多應用程序以完成其工作時,復合應用程序尤其有用。例如,呼叫中心中的客戶服務代理通常必須使用許多 LOB 應用程序,包括桌面應用程序、基于瀏覽器的應用程序以及基于終端的應用程序。所有這些 LOB 應用程序都可以宿主到在它們之間提供集成的普通 Windows 窗體應用程序中,從而大大簡化用戶的工作,最為重要的是減少花在特定呼叫上的時間。通過提供普通外殼來宿主這些 LOB 應用程序,可以在不同的解決方案中開發、測試和重用通用基礎結構功能,如安全性、部署、窗口管理、應用程序集成、審核等等,從而使 LOB 應用程序的開發人員能夠將精力集中于業務功能。
面向服務的體系結構的出現意味著您可以設計智能客戶端來利用網絡服務。所有此類服務都是以行業標準方式提供的,這就改善了互操作性、開發人員工具支持以及在智能客戶端應用程序中內置新功能的容易程度。
本指南的范圍
本指南重點討論圍繞建立在 Microsoft .NET 技術基礎之上的智能客戶端應用程序的體系結構和設計問題。它假設您要使用 Microsoft .NET 框架生成您的智能客戶端應用程序,并且使用 Microsoft .NET Windows 窗體來生成任何用戶界面。
本指南不會深入討論實現問題。具體說來,本指南不會討論在 Microsoft Office 2003 或移動設備上實現智能客戶端應用程序的細節,盡管本指南所討論的許多問題都與智能客戶端應用程序有關 — 無論它們是獨立的 Windows 窗體應用程序、Office 應用程序還是移動設備應用程序。
如何使用本指南
本指南適合于以下面兩種方式之一使用。首先,本指南具有很好的結構體系,對于您在生成智能客戶端應用程序時可能面臨的體系結構和設計問題提供了相當全面的概述。通過從頭到尾閱讀本指南,您將對可能面臨的問題以及克服這些問題的辦法有一個最完整的了解。
或者,如果您喜歡深入了解圍繞特定主題的問題,則可以單獨閱讀相關章節,以學習對相關問題的完備討論。
本指南面向的讀者
本指南適合于要開發建立在 Microsoft .NET 技術基礎之上的智能客戶端應用程序的軟件架構師和開發人員。
前提條件
要從本指南獲得最大的收獲,您應該了解下列技術和概念:
章節概要
本指南包含下列幾章,每一章都討論與智能客戶端相關的特定問題。您可以根據需要閱讀各章的全部或部分內容。
第 1 章:簡介
本章對智能客戶端應用程序進行了高級介紹,并描述了它們的一些基本性質和優點。然后,本章討論了一些高級體系結構問題,并且提供了相關指導以幫助您確定智能客戶端體系結構是否適合于您的應用程序。
第 2 章:處理數據
在智能客戶端中,可以在客戶端上使用應用程序數據。需要對這些數據進行適當的管理,以確保其有效、一致和安全。如果這些數據是由服務器應用程序提供的,則智能客戶端應用程序可以緩存這些數據來改善性能或者支持脫機使用。如果智能客戶端應用程序提供在本地修改數據的能力,則必須在以后將客戶端更改與服務器端應用程序進行同步。本章分析在客戶端處理數據時的各種注意事項,包括數據緩存、數據并發以及數據集和 Windows 窗體數據綁定的使用。
第 3 章:建立連接
智能客戶端應用程序通常構成更大的分布式應用程序的一部分,因此它們會頻繁連接到網絡并且與網絡資源(如 Web 服務)以及客戶計算機本身上的組件或進程交互。本章介紹了您的應用程序可以用來連接和使用這些資源的許多方法,并且討論了每種方法的優點和缺點。
第 4 章:偶爾連接的智能客戶端
本章討論的問題涉及到您在設計和生成偶爾連接到網絡的智能客戶端應用程序時可能面臨的問題。本章討論了連接性的概念,介紹了兩種實現脫機功能的主要方法,并且討論了您在使應用程序可供脫機使用時需要考慮的一些問題。
第 5 章:安全性注意事項
本章討論了智能客戶端安全性的問題。智能客戶端將邏輯和數據分布到客戶計算機上;因此,所涉及到的安全性問題與瘦客戶端應用程序不同,后者的數據和邏輯被更多地限制在服務器中。本章討論智能客戶端應用程序中的數據安全性、身份驗證、授權以及代碼訪問安全性的作用。
第 6 章:使用多個線程
本章討論與在智能客戶端應用程序中使用多個線程相關的問題。要最大限度地提高智能客戶端應用程序的響應性,您需要認真考慮如何以及何時使用多個線程。線程可以顯著改善應用程序的可用性和性能,但當您確定線程將如何與用戶界面交互時,需要進行非常認真的考慮。
第 7 章:部署和更新智能客戶端
智能客戶端不會受到傳統上與胖客戶端應用程序相關聯的部署和更新問題的困擾。.NET 框架和 Windows 平臺所提供的功能可幫助您避免許多與傳統胖客戶端部署相關聯的問題。本章介紹如何最好地使用這些功能,以及如何對可用的部署和更新機制進行取舍。
小結
瘦客戶端和智能客戶端都可用來向您的組織提供 LOB 應用程序。但是,每種類型的客戶端都具有其優點和缺點。在設計應用程序時,您需要認真考慮您所處環境的具體細節,然后才能確定哪種客戶端更為合適。本章已經介紹了智能客戶端的發展歷史以及與它們相關聯的功能。現在,您可以使用本指南的其余部分來幫助您確定如何在您自己的組織中設計和實現智能客戶端。
更多信息
下列資源提供了有關 patterns & practices、智能客戶端以及您可以用于查找特定指導的其他應用程序塊的更多信息。
轉到原英文頁面