基本內容
一、什麼是smart client
簡而言之,Smart Client智慧型客戶端就是這樣一種一個可擴展的能集成不同套用的桌面應用程式:它可以無接觸部署、即需即裝、動態載入,xcopy即可運行而無須修改註冊表,可以動態升級、自動更新,可以方便的經Web運行而不用擔心防火牆問題並可以方便的離線運用,方便的連線WebServices的Windows應用程式。
二、Smart Client的特點
1.動態載入,即需即裝。
應用程式的各個構件之間的相互調用並不採用直接引用的方式,而是採用動態載入,即需即裝的方式,有效地降低了對系統資源的消耗。套用軟體開發商可根據企業套用系統的公共接口進行開發,然後將套用組件發布在企業的伺服器上,客戶端應用程式將自動發現並載入該套用組件。
2.更鬆散的耦合
由於上面第一點所言構件之間的相互調用並不採用直接引用方式,這樣系統實現的更鬆散的耦合,為應用程式升級更新提供了方便。
3.進一步的模組化
由於應用程式的鬆散耦合特性,使系統的進一步模組化成為可能,新功能、新特性的加入只需要開發出符合接口定義的新模組並添加連線即可。而無須修改重編譯現有的程式。
4.零接觸部署。
安裝時只要將一個主程式檔案下載到本地,直接運行即可,無須改變註冊表或共享的系統組件,其他套用組件將在第一次運行時自動下載。
5.網路載入應用程式組件
Smart Client的應用程式可以很方便的從網路伺服器載入應用程式,而且因為程式及載入是從80連線埠實現,故無須考慮防火牆問題,這樣為企業系統的集中管理提供了方便。
6.自動更新
只需將新版本的程式發布在伺服器上,由客戶端自動發現最新版本的程式和套用組件,並自動下載和更新。
7.線上與離線均可使用的應用程式
Smart Client應用程式儘管使用網路載入程式集,但一旦載入之後,程式集便被快取到了本地。當用戶至少啟動了一次應用程式後,其裝配就被下載和快取到本地記憶體中了,所以用戶就可以離線運行你的智慧型客戶端了(通過轉換瀏覽器到離線工作狀態),假設應用程式不需要永久訪問Web services或一個共享的資料庫就可以運行。
構建智慧型客戶端的最大的好處就是可以離線使用。儘管業務之間的聯繫越來越緊密,但我們仍不能給企業應用程式提供始終連續的連線。離線式工作方式可以在你重新線上時,自動接收數據和應用程式更新,這種特徵是人們很想得到的,但在.NET前,這是很難實現的。同胖客戶端一樣,智慧型客戶端給客戶端分布大量的處理,這就為伺服器免除了它在一個基於Web的應用程式中需要承擔的負荷。最後,智慧型客戶端採取一種用戶希望應用程式採取的工作方式——允許快速數據存取和管理,而不需要不必要的螢幕更新。
8.個性化用戶界面
用戶可根據喜好自行設定客戶端應用程式,配置信息將被保存到伺服器上。
9.與WebServices的完美集成
Smart Client應用程式可以與WebServices方便的集成套用,這樣便可以輕鬆享受C/S應用程式的完美用戶體驗而不需擔心防火牆等等的一系列問題。
三、Smart Client的優勢
儘管有大量的廣告,但瘦Web解決方案並沒必要成為所有企業應用程式的未來。不要丟棄用WinForms來構建企業應用程式這種想法,因為企業套用需要集中的分布。下面的這張表格描述了Smart Client和瘦Web解決房按之間的對比:
功能
智慧型客戶端
Web應用程式
可以離線工作
可以
不容易
集中的部署
可以
可以
高級的GUI特徵
有
有
高性能的GUI
可以
不可以
卸載處理到客戶端
可以
有限
通過HTTP更新
可以
可以
安全
是
是
不接觸客戶端安裝
不是;需要構建用來改變.NET的安全配置的一個載入應用程式(除非你用的是Microsoft Transaction Server或Citrix,但是那樣的話,應用程式就只能線上使用)
是
大部分時間只傳輸數據
是
不是;結合內容的傳輸,.NET控制項顯示在IE中
客戶端需要.NET Framework
是
不是
平台和客戶端是獨立的
不是
是
適合電子商務或Internet應用程式
不是;最適合企業內部應用程式
是
充分利用客戶端豐富的資源
可以
不能
通過將只能客戶端的功能和web應用程式的功能進行比較,可以簡化我們的決策過程。
四、Smart Client的工作模型
應用程式載入器用HTTP從Web伺服器上的一個虛擬目錄來訪問和下載裝配。下載後,裝配被快取起來,只有需要的時候才執行它們。
五、Smart Client的安全性問題
1.客戶端的代碼訪問安全(CAS) 說到Web方式直接運行,就不能不談到代碼訪問安全性(Code Access Security)問題,如果一個黑客能夠說服或者誘使你下載一段代碼,而你在很高的許可權賬戶下運行它,那作業系統就對各種危害門戶打開。這種情形就是導致著名的宣言“在最小許可權下運行”的原因,每個人都應該注意這一點。 但是,.NET Framework提供了比這種單純的基於身份的安全性更高級的功能。由CLR強制執行的CAS機制允許為代碼(實際上是assembliy,.NET Framework中調度和保護的單位)指定基於屬性的不同的可信度等級,例如數字證書或源站點或URL。在這種方式下,.NET Framework只允許已知的或受信的原始碼執行。 為了讓你的智慧型應用程式運轉,你需要改變一些客戶端的安全設定——實質上就是通知客戶端運行時間相信你的應用程式的裝配。一種方法就是將帶有你的裝配的站點添加到IE中可信任站點清單中,然後用安裝在你的管理工具目錄下的Microsoft .NET Framework Configuration工具來修改.NET Framework安全設定。打開Framework Configuration工具,右擊Runtime Security Policy,然後選擇Adjust Security。對於Trusted Sites中指定的所有站點,將信任級別調整到Full Trust。作為選擇,你也可以用Framework Configuaration工具來修改安全策略,使它信任你的應用程式的個別裝配。右擊Runtime Security Policy,選擇Trust Assembly。 2.伺服器端的身份驗證 這裡的伺服器端的身份驗證,實際上就是WebServices的身份驗證,雖然說從理論上Forms身份驗證也是可行的,但是WebServices既然是一個A2A(Application To Application)的應用程式,那么還是儘量不要用這用更適合於人機互動的身份驗證方式為好。 a) Windows身份驗證。 使用用戶的Windows帳號如域帳號進行身份驗證。 b) .NET Passport身份驗證 使用與用戶相關聯的.NET Passport帳號進行身份驗證。 c) 自定義身份驗證 使用Soap來給Web服務傳遞賬戶信息是一個相對使用URL傳遞裝戶信息而言比較安全的方式,同時不必為每一個WebMethod傳遞證書(作為參數的一部份),如果仍然覺得不夠安全則可以對Soap頭進行加密,或者乾脆使用Soap傳遞安全證書,這裡只介紹使用Soap不加密傳遞用戶名和密碼進行身份驗證的方式當一個服務請求傳送到服務端,請求會被WebServiceAuthenticationModule截獲,WebServiceAuthenticationModule就開始分析該請求的Soap頭,從中解析出客戶端傳送的用戶名和密碼,並進行身份驗證。如果身份驗證通過,WebServiceAuthenticationModule便會給用戶簽發身份驗證票;如果身份驗證失敗,WebServiceAuthenticationModule便會拋出一個訊息為”Access Deny!”的SOAPException,隨後服務端和客戶端均可截獲該異常並進行處理。
六、Smart Client的未來
Smart Client實際上是一個客戶端表現層架構,通過抽象這些概念開發人員可以更好地理解現代軟體開發的各個層次。它最適合的是.NET平台,而.NET則是微軟的戰略基礎,相信微軟在幾年內,會有越來越多的套用構建在.NET之上。在未來的幾年之內,.NET將成為更加主流的套用平台,作為建立在.NET基礎之上的抽象的表現層架構,隨著.NET平台的更加成熟,Smart Client也會有更多的用武之地。 VS.NET中最重要的後續產品—代號為“Whidbey”的Visual Studio 2005。VS2005除了在底層類庫和IDE提供了更加強大的支持以外,還針對無接觸部署引入了引人矚目的“Click Once”技術。Click Once技術通過使用Smart Client簡化 Web 應用程式的安裝和升級,從而給開發人員提供了更好的部署更新套用解決方案。Click Once基本上具有UAB和OAB的所有優勢,使許多編碼工作只要通過簡單地配置項目屬性即可完成,同時,它還具有一些新增功能。它最大的特點在於代碼訪問的安全性(CAS),從而保證應用程式在一個更加安全的環境中完成部署和更新。Click Once是.NET運行庫(CLR)中的一組功能與VS .NET中集成的design-time support(設計時支持)功能的組合。總之,使用該功能以及IDE工具,在部署、啟動和更新應用程式方面具有很大的靈活性。通過Click Once可以極大地簡化更新部署套用解決方案,同時也提供了更加強大的安全選項。 任何技術都是套用催生的,Smart Client也是如此。在經歷了C/S、B/S之後,是否真正步入了Smart Client時代呢?結論為時尚早。相信在這場變革中,Smart Client將為更多企業套用系統的開發帶來助力。