Smart Client系列

Smart Client系列(1)

Smart Client的架構與設計原則

作者:沈炳宏

2004 年 12 月

Smart Client 簡介

從過去的大型主機與終端機介面的傳統架構,到近年熱門的多層式 Client-Server 系統架構,未來還會有怎樣的軟體發展模式呢?答案就是 Smart Client。不論是 2003 年微軟推出的 Office System,或者預計 2006 年推出的 Longhorn,我們都可以看到微軟所提供的豐富型用戶端只會越來越強大,功能也更多元,而這些軟體共通的都是具備有 Smart Client 的各種功能特色。其實使用這些軟體不自覺當中,我們已經享受到 Smart Client 所提供的各種好處了。早在 2002 年,知名市場研究顧問公司 Gartner 就已經提出了一份研究報告,指出在 2005 年的時候,將會有高達 60% 比率的使用 .NET 開發的軟體,採用 Smart Client 的應用架構,詳情請參考:
http://www3.gartner.com/5_about/press_releases/2002_04/pr20020402a.jsp

本文主要探討Smart Client的架構組成以及其設計原則,Thin Client / Fat Client / Smart Client 的優缺點與異同,Smart Client 的五大特色說明,運用這五大特色於軟體開發時該注意的事項,如何使用 .NET 平台和工具開發 Smart Client,以及 Smart Client 的相關資源介紹等。

Thin Client / Fat Client / Smart Client

圖 1
圖 1 Thin Client / Fat Client / Smart Client

說明 Smart Client 主要組成架構與元件之前,先透過一張 Thin Client / Fat Client / Smart Client 比較圖來說明這三者的異同。目前我們使用的軟體多數都能區分為 Thin Client、Fat Client 這兩大範疇,所謂的 Fat Client 可以想像為桌上型軟體,其具備一些特色,如豐富的使用者介面、容易開發、反應時間快等優點。Fat Client 最大的缺點在於軟體的功能需於客戶端執行,因此在大量部署方面有很大的困難,加上軟體本身也有很大一部份的功能需要依附在客戶端的環境,如此將導致未來更新上的困難。過去在使用 VB / VC++ 開發這類軟體時,也常因版本不一導致頭痛的 DLL Hell 問題。

最常見的 Thin Client 就是大家常用的瀏覽器,這類軟體的特色在於軟體的功能完全存在於伺服器端,客戶端完全不需要進行任何安裝與部署的工作,因此其具備有容易部署、容易管理與更新、與執行環境不會依附於客戶端環境等優點。然而 Thin Client 存在著一些先天上的限制,如必須要在網路的環境才能夠執行軟體的功能、和 Fat Client 比較的使用者介面相對而言限制眾多、以及由於架構因素導致開發上的困難。

因此 Smart Client 的概念營運而生,從圖 1 可以很清楚的看到 Smart Client 橫跨了 Thin Client 與 Fat Client,其整合了 Fat Client / Thin Client 兩者的優缺點去蕪存菁,並針對所需要具備的功能提出了一些設計上的架構指引,讓開發人員能夠參考這些說明設計新一代的軟體。以下便針對 Smart Client 的特色與其所需具備的功能,說明開發這類軟體所需要的概念與方法。

Smart Client 架構

圖 2
圖 2 Smart Client 架構圖

Smart Client 可以充分的運用網路和 Web Services 存取各種外部系統的資源,這一點和瀏覽器這類的 Thin Client 完全需要依賴網路資源的軟體非常類似。Smart Client 和常見的桌上型軟體相同,都能使用本機電腦的所有資源,充分發揮客戶端電腦的運算能力。因此可以說 Smart Client 是結合了 Thin Client 和 Fat Client 的優點,整合過後的一種全新軟體模式,然而 Smart Client 並不能單純歸類為單一特定的 Thin Client / Fat Client 的架構當中。

這樣說起來讀者可能會覺得 Smart Client 就是視窗環境的 Win Form 加上呼叫 Web Services 的功能,當然這也是 Smart Client 其中一種使用模式,不過真正的 Smart Client 還具備有傳統 Win Form 缺乏的功能。除了視窗環境的 Win Form 之外,微軟還提供了許多相關的軟硬體可供用來開發 Smart Client,諸如 Office System、Tablet PC、Mobile Device、.NET Compact Framework 等。以上所列的軟硬體若使用 Smart Client 架構開發應用軟體,都具備有透過網路存取交換異質系統資料的能力,以及充分發揮自身硬體資源所提供的運算能力。

開發這些軟硬體上的 Smart Client 的設計原則上有很大的彈性,讓開發人員能夠根據硬體裝置與軟體特性,實做最適合 Smart Client 架構的軟體。由於 Smart Client 會使用許多網路的資源,諸如存取外部系統資料、部署和更新軟體等,因此本文會介紹在開發 Smart Client 的時候,包含伺服器端和客戶端的設計議題,在雙方都使用適合的開發方式與部署模式,才能夠發揮 Smart Client 最大的效益。

Smart Client 和瀏覽器相同,都會使用許多網路的資源,也離不開網路的應用,但 Smart Client 具備的幾點特色,使其和瀏覽器有很大的差異:

  • 將商業邏輯程式和使用者介面清楚的分離
  • 也可將部分的商業邏輯放置在客戶端,讓客戶端可使用到所謂的離線存取資料功能,同時可使用客戶端機器的運算資源,讓使用者介面的反應更有效率
  • 將狀態維護的管理與快取機制放置於客戶端,如此可大幅減少每一個客戶端存取伺服器上的狀態資料和快取資料,所花費在等候網路傳遞資料的時間
  • 資料可被存放在客戶端,以減少伺服器維護客戶端狀態資訊所花費的資源

透過圖 2 可一覽 Smart Client 的整體架構,最上方有包含使用 PC、Notebook、Tablet PC、Mobile Devices 等硬體裝置的 Smart Client,他們都具備透過中間層的 Web Services,存取後端伺服器所提供的各種服務的功能,如常見的天氣查詢、股價查詢等。透過 Visual Studio.NET 開發工具與 Smart Client 設計架構原則,我們在很短的時間內就能開發出提供給使用者最佳的軟體使用體驗的 Smart Client。

Smart Client 核心特色

圖 3
圖 3 Smart Client 核心特色

在進行 Smart Client 的開發之前,首先要瞭解的是 Smart Client 的整體架構,與其所具備的功能,在有了這些概念之後,我們才能夠實做出最能發揮 Smart Client 特色的系統。

在真實的情況中會有許多因素需要考量,但整體而言 Smart Client 主要具備了一些整合了 Thin Client / Fat Client 的優點與特色,在圖 3 中可以看到這些功能都是架構在整個 .NET 平台上所實做的:

  • 充分利用本機資源的運算功能
  • 支援連線與離線功能
  • 使用 Web Services 存取網路資源
  • 智慧型軟體部署與自動更新
  • 提供了各種裝置平台的開發

以下將就這幾點特色分別介紹其在 Smart Client 架構中,所提供的功能與開發方式的詳細說明:

充分利用本機資源的運算功能

本機資源提供給 Smart Client 主要分為兩大類:硬體與軟體。

在硬體層面來說,Smart Client 可充分使用客戶端的硬體運算能力。舉例而言,除了個人電腦強大的運算功能外,我們還可以透過外接的麥克風和內建的音效卡進行語音輸入,進而達到語音辨識的功能,也能利用 webcam 攝影機動態捕捉影像並提供影像串流,或利用條碼讀卡機、RFID 讀卡機等硬體所提供的這些功能,而這些都是使用瀏覽器這類 Thin Client 所無法享受到的資源。

由於使用 Smart Client 架構開發的軟體能夠存取這些本機資源所提供的功能,因此在開發軟體時就具備了很大的彈性,而不致為了要配合瀏覽器只能透過網路存取服務,而喪失許多運用本機硬體資源的能力。

如果想要充分使用本機硬體資源,有一些事情是必須要注意的:

  • 安全性的考量 – 客戶端必須有足夠的權限存取本機資源,如果使用者沒有權限存取本機上資源的能力,Smart Client 就無法使用這些硬體所提供的功能,將會導致許多設計好的功能無法使用
  • 部署的考量 – Smart Client 應具備偵測其所要運用硬體裝置的能力,並在適當的時候協助使用者安裝並下載相關硬體的驅動程式,待硬體能夠正常無礙的運作之後,Smart Client 才能夠充分發揮硬體所提供的功能

就軟體層面而言,Smart Client 應該要能夠與既有的軟體互相協同合作,並能夠在這些軟體上額外加上 Smart Client 所具備的功能,常見的這些軟體包含日常我們熟悉的 Office 應用程式,與公司內部使用在商業流程處理上的各種軟體。

除了使用這些軟體的功能之外,還需要讓這些軟體能夠與其他系統或其他設備的軟體互相溝通,使彼此能夠交換資料並協同合作,這樣才能發揮 1+1=3! 的效用。由於這些軟體有其所具備負責的功能,因此整合這些軟體開發相關的 Smart Client 時,都要充分的考量各軟體的特性與使用範疇。

在開發這些軟體的時候,也要讓其具備能夠透過網路存取外部系統服務的能力,而不只是單純的使用套裝軟體本身的功能,如此除了使用軟體本身的功能之外,還能透過 Web Services 等方法使用外部系統所提供的服務,可充分的發揮軟體本身的功能,並整合了其他系統的資源。

舉例而言,Word 本身並不具備有翻譯功能,但我們能夠透過「翻譯」這個功能搭配工作窗格中的「參考資料」,存取 WordLingo 網站所提供的翻譯服務。我們也能開發自己的 Web Services,如存取每日股價並整合至 Excel 中的樞紐分析,以便開發出符合需求的股票走勢圖。

因此讀者可以瞭解具備 Smart Client 功能的軟體,應該要能夠使用既有軟體的功能,如資料分析、圖表繪製等,由於這些軟體能夠充分的發揮本機資源所具備的運算能力,因此在進行這些複雜資料的運算是非常有效率的,進而搭配外部 Web Services 所提供的軟體額外的服務功能,以便在開發這些 Smart Client 時發揮無窮的想像力,將各式各樣的資料和資源整合在一起,以發揮軟體的最大效用。

參考服務範例

透過一個實際的股價查詢服務範例,能夠更加體會一個 Smart Client 所應具備的軟體功能。首先連線至 http://office.microsoft.com/zh-tw/marketplace/CE063644961028.aspx,這裡分別有幾個台灣微軟和廠商合作所開發出來的參考資料服務:

  • 旅遊參考資料服務: 旅遊經 - 旅遊資訊服務 for Microsoft Office
  • 線上新聞參考資料服務: 聯合知識庫 udndata.com
  • 理財參考資料: 日盛理財 - 即時報價

選擇使用日盛理財的即時報價,會連線至 http://www.jihsunbank.com.tw/office/main.htm,這裡有一些安裝步驟,首先開啟 Word 中的工作窗格 (Ctrl+F1),選取參考資料,並點選最下方的「參考資料庫選項…」,會開啟如圖  4 的畫面,點選「新增服務」,會開啟如圖  5 的畫面。複製網址 http://office11.jihsun.com.tw/JsResearch/Registration.asmx貼入至「位址」中,再連續按下確定按鈕,最後即可見到如圖  6 的畫面中,日盛理財金融服務已經出現在參考資料庫裡面了。安裝完此參考服務之後,最後還需要安裝 SmartTag 程式,以便在 Word 中出現的關鍵字具備有 SmartTag 感知功能,讀者可連線至 http://www.jihsunbank.com.tw/office/JihsunST.msi

圖 4
圖 4 參考服務選項
圖 5
圖 5 加入參考服務 Web Services 位址
圖 6
圖 6 新增日盛理財後的參考服務選項

執行完以上步驟後請先關閉 Word 再重新開啟,以便讓 SmartTag 可以正常運作。在 Word 中任意輸入一個欲查詢股價的公司名稱,在這裡以台積電為例,在輸入完台積電並按一下空白之後,會看到台積電三個字下方會出現紅色虛線,將滑鼠游標指到台積電上 Word 出現一個下拉方塊選項,點選之後會出現和此公司相關的即時報價、即時新聞等選項,我們可挑選欲使用的功能,Word 便會呼叫相關的 Web Services 並開啟一新視窗顯示所使用功能的畫面,如圖 7 所示。

透過這個範例可以看到利用原來的 Word 軟體,整合外部資源所提供的股票相關功能查詢,在原先熟悉的 Office 操作環境當中就能夠使用原本軟體不具備的功能,此外再搭配 Excel、Access 軟體的運算功能、資料庫處理能力,還能夠動態繪製圖表並整合外部系統資料以產生出符合需求的資料,且由於使用 Web Services 動態擷取資料,可保證時時刻刻都是最新的資料。

瞭解了參考資料的使用方法,未來會繼續為各位介紹參考資料的運作方式、組成元件、架構說明,及如何使用 Research Services SDK 搭配 Web Services 開發屬於自己的參考服務。

圖 7
圖 7 使用 SmartTag 查詢台積電資訊

整合 Smart Client 的 Microsoft Office System

在 Office XP 的版本之後提供了 SmartTag(智慧標籤)的功能,所謂的 SmartTag 是一種具備智慧感知的 XML 標記功能,如我們能夠在 Word 中輸入一個人的名字,名字上方就會出現一個有 i 字的小方塊,點一下就出現一個下拉選單,該選單項目提供許多功能,比方說從 Outlook 查詢使用者的郵件、或寄封郵件給該使用者,都不必離開 Word 畫面。此外透過網路連結的功能,在 Excel 中輸入一家公司的名稱,就可以連結到這家公司的網站,或者是連結到 MSN Money Central、獲取這家公司的股票資訊等等的應用。

Office 2003 System 中更提供了一個 Smart Document(智慧文件) 的功能,智慧文件採用 Microsoft Office XP 智慧標籤的概念,並以簡化及增強文件工作時的使用者經驗為目標,使用以文件為基礎的方式擴充智慧標籤的功能。

開發人員可利用智慧文件技術,在 Microsoft Office Word 2003 與 Microsoft Office Excel 2003 中建立功能強大的 XML 文件,以便佈署以及後續自伺服器更新 (當用戶端開啟最初的文件或範本時),以利於散發。

智慧文件的好處在於使用直覺式工作窗格傳達相關資訊與動作,而且會根據使用者目前在文件中的位置,同步化工作窗格的內容,相關架構請參考圖  8。

圖 8
圖 8 Smart Document 架構圖

在 2004/5 美國的 TechED 大會,微軟更提出了一套 Information Bridge Framework(IBF),Information Bridge Framework 可提供開發人員所需的工具和資源,進而降低 Microsoft Office 型的資訊整合方案的開發成本,以及增加這些方案的彈性、管理能力、安全性和擴充性。

Information Bridge Framework 是一組軟體元件、工具和指引資訊,可讓開發人員建立方案來連接 Microsoft Office 應用程式與 Web 服務或共通語言執行環境 (CLR) 服務 (針對特定業務 (LOB) 服務所撰寫),如會計、供應鏈管理和資源計劃應用程式。

利用此系統,使用者即可從 Microsoft Office Word 2003、Microsoft Office Excel 2003 和 Microsoft Office Outlook® 2003 所管理的內容中,直接與特定業務的 LOB 服務互動,相關架構請參考圖 9。

圖 9
圖 9 Information Bridge Framework 架構圖

從以上的這幾點軟體特色,可以看到 Microsoft Office 已經從過去的文書排版、試算表功能,進步到未來與更多其他後端系統整合、連接網路服務的一套完整系統架構了,而它的中心概念,就是採用 Smart Client 架構所開發。

透過使用熟悉的 Office 軟體介面,搭配 Smart Document、Research Library、Information Bridge Framework,使用者可利用 Office 整合所有需要的外部資源,大幅的提高其工作效率。

未來會就 SmartTag、Smart Document、Information Bridge Framework 等主題如何應用於 Smart Client 的開發,進行詳細的說明及範例程式的介紹。

Microsoft Visual Studio Tools for Office

傳統在開發 Office 程式都必須使用 Visual Basic for Application(VBA),而在 Office 2003 System 上市之後,微軟更另外推出了一套 Visual Studio Tools for Office(以下簡稱VSTO),用來輔助開發人員進行 Office 相關的程式設計。

透過 VSTO 的協助,程式開發人員可直接使用 VS.NET 和 .NET Framework 撰寫 Office 的程式,而無須再使用傳統 VBA 的方式開發。目前 VSTO 提供了 Word / Excel 的範本供開發人員使用,由於使用 .NET Framework 的元件,因此開發方式和 Win Form、Web Form 大同小異,我們可以直接 VS.NET 使用 .NET 所提供的物件和方法,也能直接在 VSTO 中撰寫和呼叫 Web Services,透過 ADO.NET 呼叫資料庫等等。使用 VSTO 開發的 Office 後端程式碼會被 .NET 所管理,因此其安全性也會在整個 .NET Framework 的控管之中,VSTO 相關架構請參考圖  10。

瞭解了 VSTO 的基本概念,未來會繼續介紹 VSTO 的運作方式、組成元件、架構說明,及如何使用 VSTO 搭配 Web Services 開發屬於自己的 Office 解決方案。

圖 10
圖 10 Visual Studio Tools For Office 架構圖

支援連線與離線功能

網路連線能力

Smart Client 和單機程式最大的不同點,在於其具備著網路連線能力,並且可以呼叫外部系統所提供的 Web Services。透過使用 Web Services,Smart Client 可以存取其他系統的商業邏輯、資料、服務,另外搭配單機軟體本身的運算能力,Smart Client 可以充分的運用軟體的功能整合外部資料,提供使用者更有價值的資訊。由於使用 Web Services及Service Oriented Architecture(SOA) 鬆散耦合架構,因此在具備連線功能的環境時,Smart Client 會透過網路去存取 Web Services 提供最新的服務及資料。

Web Services 乃國際共通標準,透過 Web Services Interoperability (WS-I) Basic Profile,開發系統時便無須擔心跨平台、跨裝置、跨語言所可能帶來的困擾。由於 Smart Client 和傳統使用瀏覽器的方式不同,其會將操作軟體的現行狀態存放在客戶端,此外透過快取機制的協助,Smart Client 可偵測資料是否有所異動,只會在必須的時候呼叫 Web Services 回傳資料,因此可有效的減少網路傳遞資料的頻寬。

通常在網路連線的狀況時,Smart Client 必須要等待 Web Services 處理完畢資料並回傳資料後,客戶端才能夠繼續進行其他的操作,如要提供使用者更有效率的使用者操作介面,在開發系統的時候可考慮使用 asynchronous call pattern,相關資源可參考:
http://msdn.microsoft.com/smartclient/windowsforms/default.aspx?pull=/library/en-us/dnwinforms/html/sacp_winforms.asp

在開發與使用 Smart Client 需要的 Web Services 時,也可考慮使用所謂的 Service Agent pattern,透過代理人的協助,即使在跨平台、跨語言的異質系統間,在不需瞭解對方系統實做的狀況下也能夠直接使用對方所提供的服務,在 VS.NET 中使用代理人的方法很簡單,只要在 Web References 加入 Web Services 提供的 WSDL 網址即可直接使用,相關資源可參考:
http://msdn.microsoft.com/library/en-us/dnpag/html/jdni_ch06.asp

未來會針對此一主題和 asynchronous call pattern、Service Agent pattern 等技術進行更詳細的說明及範例介紹。

離線功能

除了在網路連線的狀況下呼叫 Web Services 擷取最新的資料及使用其服務外,Smart Client 本身還需具備有離線狀態時候使用資料的功能。我們可以把離線功能想像為 Internet Explorer 的離線瀏覽、或者如使用 Microsoft Exchange Server 的電子郵件帳號,Outlook 的離線工作可繼續使用資訊的本機副本這些功能。在設計 Smart Client 中的離線存取資料需要注意兩點:

  • 資料快取 – 在網路連線的狀況下,Smart Client 會透過網路呼叫 Web Services 擷取最新的資料,同時會在本機儲存一份資料副本,一旦網路中斷時,Smart Client 可繼續使用存放在本機的副本進行作業,待偵測到網路連線時,再同步和伺服器端的資料庫進行資料的更新。
  • 資料的衝突與同步 – 在網路中斷的狀況下,可能會有其他的使用者對資料庫的資料進行資料異動,而 Smart Client 也可能在同時刻進行對離線資料的處理,一旦網路恢復連線時,Smart Client 與伺服器在進行資料同步的過程可能就會發生異常,因此在設計 Smart Client 的資料存取功能時需要考慮到對這些情況的處理。

在處理離線狀態的資料時,也需要考慮幾個因素:

  • Smart Client 必須有偵測網路的功能,可讓其在網路連線或網路中斷的狀況時,自動改變其存取資料的模式,在不影響使用者的情況下讓其能夠繼續處理原先的作業,而不致影響其工作效率。
  • 需要考慮使用者的需求以及資料本身的性質,若屬於長久不變極少更新的資料,如顧客資料等,可考慮在 Smart Client 存取這類資料時都是使用本機的快取資料,一旦偵測到伺服器端的顧客資料有所異動時,再一次同步更新到本機讓 Smart Client 使用。若屬於時常異動的資料,如訂單處理情形,Smart Client 就必須要有能力去呼叫 Web Services 存取遠端資料庫的資料,若在離線狀況處理快取資料時,也要在恢復連線時即時和資料庫進行同步。

參考圖 11 可以看到各種裝置的離線能力分佈圖,從最左方永遠連線的大型主機,到最右方永遠離線的手機,各種不同連線能力的裝置在進行網路連線資料處理時都會有不同的考量。

  • 永遠連線 — 這類裝置以傳統的大型主機為代表,其必須 24*7 不間斷的連線以服務其他客戶端
  • 多數時候連線 — 這類裝置以個人電腦為主,然而有時候可能會碰到 ADSL / Cable Modem 網路斷線的狀況
  • 偶而連線 — 這類裝置以 Notebook / Tablet PC 為主,其可透過無線網卡和無線 AP 連線,然一旦沒有無線網路的支援將會喪失網路連線的功能
  • 時斷時續 — 這類裝置以手機的 GPRS 為代表,在有需要的時候可以使用 GPRS 讓手機能夠連線處理資料,缺點是費用昂貴
  • 永遠離線 — 舊型手機、PDA 可能沒有 GPR 或者無線網卡等網路連線設備,這類裝置目前較為少見,其完全只能使用本身的資料而無法和外界溝通

圖 11
圖 11 不同裝置的連線能力

為這些具有不同連線能力的裝置設計資料存取功能時,需要考慮兩種狀況:

  • 裝置內的應用軟體在離線情況時候需要具備的功能。如 Mobile Device 可能就需要在離線的狀況進行貨物盤點的資料輸入,等到離線的時候再和主機進行資料的同步
  • 裝置使用的連線方式。不同的裝置會有不同的連線方式,從大型主機的專線,個人電腦的 ADSL,到筆記型電腦的無線網路,或者手機的 GPRS,各種連線方式的頻寬速度和價格都不一樣,我們在設計這些裝置的 Smart Client 時,都需要將這些情況都考慮在內以便設計出最符合裝置與網路連線能力的軟體

使用 Web Services 存取網路資源

Smart Client 資料存取方式

設計這類需要提供離線功能和存取資料庫程式的 Smart Client,通常會分為兩種方式:

  • 資料導向模式
  • 服務導向模式

資料導向模式

圖 12
圖 12 資料導向模式

參考圖 12 資料導向模式,一般而言使用這種方式的系統多是過去的多層式架構 (N-Tier),主要分為客戶層,商業邏輯層,資料存取層,和後端資料庫。透過這種架構,客戶端的 Smart Client 可以直接使用資料存取元件取得後端資料庫的資料,由於這類架構發展已久,且各軟體廠商都有提供許多完整的解決方案,如 SQL Server 所提供的資料複製等功能,因此多數系統會選擇使用這種方式開發存取資料庫的程式。

資料導向模式雖然清楚的將系統中的元件,按照其功能切割為不同的層次,然而這種架構存在著一些缺陷:

  • 部署客戶端的程式是和伺服器端緊密耦合的,而這種情況極常發生於 Mobile Device 等小型裝置上。舉例而言,開發需要存取資料庫程式的 Mobile 軟體,通常會將存取資料庫部分的程式碼獨立寫為元件。即使如此,軟體本身的介面和資料庫部分的程式碼仍然依附在 Mobile Device 本身,而一旦程式有所變更,所有的程式就必須重新部署到相關的 Mobile Device。試想公司若有一百台 Pocket PC,需要花多少時間重新部署?
  • 由於存在於客戶端的程式碼和後端資料庫的資料表定義關係密不可分,因此不論是資料表的結構定義、商業邏輯、資料庫存取方式的變更都會非常的困難。一旦這些關於資料表的定義有所變更,客戶端的程式不管是在合併、更新、刪除資料的方法都必須要重新撰寫,並將更新過後的程式重新部署至客戶端。

服務導向模式

圖 13
圖 13 服務導向模式

參考圖 13 服務導向模式,客戶端最主要是使用 Web Services 和後端伺服器系統溝通,期間主要是透過 XML 格式的 SOAP 訊息達成資料的交換。通常在這種架構中客戶端會在本機中保有軟體的快取資料和狀態,一旦需要的時候,便會對 Web Services 發出存取資料庫的要求,而有關於資料的所有異動全部都是交由 Web Services 代為處理。

使用服務導向模式的好處,一旦資料庫的資料表定義、商業邏輯、存取資料庫的程式有所變更時,也只需變更 Web Services 實際的撰寫內容,而無須變更客戶端的程式,此外由於採用 Web Services和Service Oriented Architecture(SOA),因此整體架構是屬於鬆散耦合的,只要確保客戶端和伺服器端彼此的服務介面沒有變更,便可以在需要的時候修改伺服器端存取資料庫的程式碼,而不致影響到客戶端的部署及軟體功能。

在使用服務導向模式需注意幾點情況:

  • 資料異動同步處理 – 通常在 Smart Client 都會存有本機的快取資料,當客戶端在連線狀況要求伺服器端更新回傳資料時,可能會遇到本機快取資料和遠端資料庫不同步的問題,因此在設計服務導向架構的資料庫存取服務元件時,需要特別處理這種情形的發生。
  • 非同步呼叫資料 – 由於 Smart Client 是透過網路呼叫 Web Services 要求資料,因此客戶端在等候資料處理完畢前通常是無法進行任何其他動作的,針對這個問題可以使用非同步存取資料模式的方法來處理,以便客戶端在等候 Web Services 回傳資料的期間,還可以進行其他的操作。由於非同步存取資料模式需要使用比較複雜的設計方法,往後會特別針對此一主題進行說明。

Offline Application Block

圖 14
圖 14 Offline Application Block 架構圖

微軟的 Patterns & Practices Library 提出了一個 Smart Client Offline Application Block 白皮書(離線應用程式模組)(以下簡稱 OAB),並且提供了一個實做的範例函示庫供使用。所謂的 OAB 主要適用於採用服務導向架構開發的 Smart Client 在離線狀況的使用,其提供了處理軟體狀態、資料、離線狀況的元件,並且能夠隨時抽換需要的功能,或擴充所需要的元件。

圖 14 可看到 OAB 整體架構圖,由於其採用服務導向架構設計,因此可看到 Smart Client 和 OAB 內部封裝的 Service Agent、Connection State、Reference Data 等元件都是鬆散耦合,並且可在任何時候抽換為所需的元件,讀者若對 OAB 有興趣可參考 http://msdn.microsoft.com/library/en-us/dnpag/html/offline.asp,內有完整的白皮書 PDF 及範例程式元件可供下載。往後會針對此一主題提供完整的架構說明與範例介紹專文探討。

軟體部署與自動更新

部署方式

在微軟平台部署 Smart Client 的時候主要有兩個需要考慮的因素,一是如何偵測並安裝適合的 .NET Framework,另一是 Smart Client 應用程式本身的部署方式。

部署 .NET Framework

理論上 Smart Client 可使用任何系統與任何語言所實做,而在微軟的環境最主要是將之建構於整個 .NET 平台,因此在這裡主要以探討 .NET Framework 部署到客戶端的方法為主。

一個完整的 Smart Client 必須具備有能夠偵測客戶端環境的能力,一旦其發覺客戶端並沒有 .NET Framework,應該要提供相關的選項讓使用者安裝,使 Smart Client 能夠正常運作:

  • Microsoft Windows Update – 在 Windows 2000 Sp2 之後及 XP / 2003 等作業系統,都具備有 Windows Update 元件功能,搭配「服務」中的 Background Intelligent Transfer Service(BITS),作業系統便可在連線的狀態時,於指定的時間在背景安裝偵測到的更新元件,由於 .NET Framework 也在微軟建議的更新元件清單中,因此絕大多數的 Windows 平台若有開啟 Auto Update 都會自動安裝 .NET Framework
  • MSI (Microsoft Windows Installer) – 透過 VS.NET 安裝專案的協助,開發人員可將 Smart Client 包裝成 MSI 安裝檔,此外透過 .NET Framework Redistributable 的元件,還可以將整個 .NET Framework Runtime 元件和 Smart Client 包裝在一起提供給客戶安裝,若客戶端的環境沒有安裝 .NET Framework,此 MSI 安裝程式就會自動為使用者安裝 .NET Framework,詳細作法可參考:
    http://www.microsoft.com/downloads/details.aspx?familyid=66350891-d15b-446b-bd69-f7f849224a00&displaylang=en
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/html/redistdeploy1_1.asp
  • Microsoft Systems Management Server (SMS) – 系統管理人員可透過 SMS 部署大量的客戶端程式,因此若在擁有數量眾多的電腦環境,可考慮採用 SMS 方案部署 .NET Framework,以節省 MIS 人力支出及網路頻寬
  • 內建於 Microsoft Windows Server 2003, Longhorn – 在 Windows Server 2003 及 Longhorn 的作業系統中已經內建有 .NET Framework,若未來有更新版本的 .NET Framework,使用者仍可透過以上三種方式 – Windows Update、MSI、SMS 等方法部署最新的 .NET Framework

部署應用程式

開發好Smart Client之後會需要將軟體部署至客戶端,通常會有以下幾種方式:

  • Xcopy – 由於使用 .NET Framework 開發的應用程式,其所需要的元件和安全性的管理都由 .NET 平台所負責,因此只要在內部網路的雙方都有同樣的 .NET Framework,透過 xcopy 命令列指令將整個應用程式複製到需要的地方即可直接執行,而無須使用安裝程式進行安裝。一般而言會使用 xcopy /e source destination 的方式把整個來源目錄結構複製到目的地目錄,詳細用法可在命令列模式執行 xcopy /? 參考說明
  • MSI – 若應用程式的需求比較複雜,包含一些寫入登錄檔、存取資料庫的動作,則單純使用 xcopy 的方式可能無法滿足使用者的需求,這時可考慮將整個應用程式專案包裝成 MSI 安裝檔,並將應用程式所需要的所有資訊放置於安裝設定檔中,其後可直接將 MSI 提供給使用者安裝,或透過群組原則大量部署
  • SMS – 若在有許多不同客戶端作業系統的環境中,這時可採用 SMS 的方案來部署 Smart Client,而透過 SMS 的好處是不論是傳統的 setup 安裝程式或者新一代的 Windows Installer 都可透過它來部署,此外由於 SMS 會負責監控整個網域環境,因此客戶端不需要再進行手動安裝即可直接使用 SMS 所部署的程式
  • No-Touch Deployment – 零部署接觸簡稱之 NTD,開發人員在完成應用程式之後,只需把應用程式和其設定檔放置於網頁伺服器,再設定相關的安全性,使用者即可直接使用瀏覽器點選應用程式連結,便會自動下載應用程式組件並存放置客戶端應用程式快取區塊,其後客戶端即可直接執行此應用程式
  • Whidbey and Longhorn : ClickOnce – ClickOnce 會直接內建在下一代的 Visual Studio .NET 2005 的部署功能中,透過 ClickOnce 的協助,往後開發人員只要輕鬆的透過幾個步驟的設定,即可享受到 NTD 所帶來的好處

未來會透過專文介紹以上這些部署方式的完整說明與範例介紹,以便讓各位瞭解詳細的使用方法。

更新方式

部署完 Smart Client 之後,往後應用程式可能會出現更新版,傳統的方式需要使用者自行下載更新檔並手動安裝,這樣的方式不但耗時費力,此外一旦安裝新版本的軟體之後,舊有版本就會完全被覆蓋而無法還原。

Smart Client 架構中建議了幾種軟體更新的方式:

Push Technology

在企業內部近端網路的環境中,所有的客戶端都會被伺服器所控管,這時就可以藉由伺服器的監控功能,自動將新版本的軟體「推」到客戶端,使用這種方式的好處是可以大量的部署新版本的軟體,而無須客戶端手動下載安裝,一般而言有網域目錄服務的群組原則,以及 SMS 可供使用,讀者可自行評估內部環境需求,並參考 Windows Server 相關文件設定。

若是在公開的網路環境中,伺服器端就沒有辦法掌控所有客戶端的資訊,這時就必須通知使用者有新版本的軟體可下載安裝。一般而言有幾種作法:

No-Touch Deployment

使用者可自行瀏覽網頁並透過 No-Touch Deployment (NTD) 的功能直接使用新版本的軟體,透過 .NET Framework 的協助,軟體會自行偵測使用者端的快取組件版本,並自動下載新版本所需要的組件,相關架構請參考圖 15

Updater Application Block

使用這種方式的 Smart Client 會在客戶端安裝 Application Stub,所謂的 Application Stub 可以想像為代理人程式,比方說常見的 Windows Update 就是透過這種方式,並搭配服務中的 Background Intelligent Transfer Service(BITS) 達到在背景中自動安裝更新程式的功能。透過 Windows Update 時間的設定和 BITS 服務的功能,客戶端會在指定的時間區段輪詢伺服器,一旦有符合的更新程式便會告知使用者可下載更新,或直接於背景中自動下載安裝,端看使用者在 Windows Update 中的設定值而定。

微軟的 Patterns & Practices Library 中提供了 Smart Client Updater Application Block,這個應用程式模組提供了架構介紹與實做元件,以供需要自動更新功能的軟體使用,使用這種方式即可快速簡單的將更新功能加入至自己所設計的軟體之中,而程式開發上也會更加模組化,相關架構可參考圖 16。

圖 15
圖 15 No-Touch Deployment

圖 15是 No-Touch Deployment 的運作模式,首先客戶端會於第一步驟點選網頁伺服器的軟體連結 URL,一旦伺服器接收到客戶端要求之後,便會將應用程式本身及相關的設定檔、組件等資訊提供給客戶端,其後客戶端會將下載的這些元件存放住下載快取區中並和原有的應用程式的設定檔與組件進行比對,若下載的這些檔案屬於較新的版本,應用程式會自動使用新版本的設定與組件。

在這段過程中客戶端只需要點選網頁上的軟體連結,而其餘的操作皆由系統自動於背景執行,由於伺服器上會存放最新版本的程式,因此客戶端可在需要的時候使用 NTD 的功能,即可直接使用新版本的應用程式。

圖 16
圖 16 Updater Application Block

圖 16是 Updater Application Block 的運作方式,圖中可見到 Updater 這個元件,其功用等同於前述的 Application Stub,客戶端會透過 Updater 元件自動檢查並驗證存放於伺服器端的應用程式設定和組件,若偵測到新版本的應用程式便會將相關的元件下載至客戶端,由於這種方式並不會像安裝程式一般會使用新版本的元件覆蓋掉舊版本的元件,因此客戶端可同時保有許多版本的軟體,並在需要的時候選擇其想要使用的版本。

往後會針對以上這兩種方式說明實做方式與範例的介紹,讓讀者能夠瞭解實際的使用方式與開發方法。

跨裝置平台

Smart Client 的特色在於它可以充分的利用 .NET Framework 與其子集的 .NET Compact Framework,因此不僅能使用 Win Form 開發 Smart Client,同樣的還可以在 Mobile Device Application 實現 Smart Client 所提供的這些功能。

近年無線裝置和無線網路的興起,使得越來越多產業都會逐漸引入無線手持裝置的應用,諸如醫療產業、金融產業等,而無線裝置的特色在於其能方便攜帶,並能在需要的時候透過網路連結存取資料,然而在多數的情況這些裝置多是處在離線狀況的。在設計這些裝置的應用程式時可以整合前述的設計方法,諸如快取功能、離線功能等,以便設計出來的 Mobile Device Application 能夠更加的 Smart。

由於在無線裝置上的 .NET Compact Framework 並不如完整的 .NET Framework 具備所有的功能,因此在設計上還必須特別考慮無線裝置的特色與 .NET Compact Framework 所提供的元件,如在 .NET Compact Framework 並沒有安全性的設定,這時可整合 Web Services Enhancements (WSE) 的功能,讓 Mobile Device Application 在透過網路存取資料時能夠更加安全。

通常 Mobile Device 運算能力並不如一般 PC,因此在處理大量資料或需要精密運算的程式時可能需要考慮不同的作法,以便提供最能符合使用者需求的應用程式。

Smart Client 設計考量

圖 17
圖 17 不同平台的 Smart Client

以上說明了 Smart Client 所具備的特色與開發部署方式,最後介紹一些進行 Smart Client 開發時候所需要考慮的因素:

不同裝置平台

圖 17 中列出了微軟在幾個不同平台所提供的應用軟體,如傳統桌上型電腦的應用程式,Office System 應用開發,與無線裝置軟體等。在這幾個平台上都能使用 Smart Client 的概念來開發軟體,重點在於考慮在每一個平台上,最能夠發揮該平台所能夠提供給軟體的功能。

通常 Smart Client 都會使用 Web Services 存取遠端系統所提供的服務,而這幾個平台在使用上也都大同小異,因此在使用 Web Services 之外,能夠充分發揮 Smart Client 的最佳威力就在於利用該平台的特色與提供的功能,而微軟所提供的軟硬體平台最主要分為三大類:PC、Office System、Mobile Device。

  • PC 的特色在於其擁有最強大的運算能力與儲存空間,由於網路的普及,絕大部分的 PC 都是處在長期連線的環境,因此在設計 PC Smart Client 會具備有最大的彈性。
  • Office System 是最多人與最多行業在使用的套裝軟體,除了進行基本的文書作業與試算表功能外,未來的發展將會是彼此的協同合作與後端系統商業流程的整合,因此在設計 Office Smart Client 的考量應朝這些方向去考慮。
  • Mobile Device 是未來發展的熱門產業,其特色在於可隨身攜帶使用,然其無法長期連線存取資料與運算能力不佳,這些都是在設計 Mobile Smart Client 需要注意的。

與舊有系統整合

圖 18
圖 18 與舊有系統整合

除了依照 Smart Client 的設計原則從頭開發應用程式外,還能在現有的套裝軟體與平台上進行 Smart Client 與舊有系統的整合,這方面的軟體以 Microsoft Office System 為代表,請參考圖 18。

由於 Office 可說是在 Windows 上最多人使用的軟體,因此在大多數的電腦上都會安裝此軟體,此外由於其發展已久,因此多數的使用者都非常熟悉軟體的使用,而且也不需要重新花費時間學習一個新軟體的使用。

若能夠在現有的 Office 平台上進行 Smart Client 的擴充,可充分的利用 Office 本身具備的功能,再加上 Smart Client 的特色,將可大幅擴充傳統 Office 的應用。此外若再搭配 BizTalk、SharePoint Portal Server 等協同合作軟體的輔助,使用者透過 Office 前端軟體便可與後端系統進行資料與商業流程的整合,大幅提昇企業營運的效率。

整合式軟體

圖 19
圖 19 整合式 Smart Client

使用 Smart Client 設計原則開發軟體,應考慮使用者的使用習慣與工作流程,充分的將使用者所需要的功能整合為一個如 Office System 的軟體,才能夠發揮 Smart Client 最大的效用。參考圖 19,在一個 Host Environment 中具備有許多 Hosted App,分別提供不同的功能,如存取網路服務,存取資料等,而將這些不同的 Hosted App 整合在單一Host Environment,並開放彼此的介面讓其能夠互相的溝通,便能夠提供使用者一個單一介面使用所有需要的功能。

舉例而言在一個客服中心的客服人員,他在日常工作可能會同時使用許多軟體以輔助其作業,如使用 Clarify 紀錄其客戶聯絡資訊與結案記錄報告,使用 Office 軟體輸入文件與發送郵件,使用入口網站查詢資料等。若能夠將使用者需要查詢、輸入資料這些常用的功能整合至 Smart Client 中,使用者便不需浪費時間切換軟體使用其需要的功能,此外由於提供單一軟體介面,使用者只需熟悉一套軟體便可。

參考圖 20 的 Call Center Smart Client,其提供客服人員客戶聯絡資訊、發送郵件、查詢資料、撥打電話等功能,客服人員只需使用此一軟體便可完成絕大多數的工作,對其工作效率的提升有很大的助益。

圖 20
圖 20 Call Center Smart Client

結語

本文探討了 Smart Client 整體架構概觀,組成元件,設計模式,功能特色,與設計上需注意的一些事項,Smart Client 具備很大的彈性,讀者可自行參考所需要的元件並整合至自己的系統與應用程式,以充分發揮 Smart Client 的威力。未來將會逐一就這些主題進行更深入的說明與範例實做介紹,以便讓讀者透過實務瞭解 Smart Client 的開發流程。

參考資源

Smart Client:http://msdn.microsoft.com/smartclient/
Patterns & Practices:http://www.microsoft.com/resources/practices/default.mspx
Mobile and Embedded Applications:http://msdn.microsoft.com/mobility/
Office:http://msdn.microsoft.com/office/
Web Services:http://msdn.microsoft.com/webservices/

转自:http://www.microsoft.com/taiwan/msdn/columns/mvp/200411_smartclient.htm

posted on 2005-08-08 11:16  房客  阅读(1122)  评论(0编辑  收藏  举报

导航