軟件體系結構分析與Smart Client的應用

軟件體系結構分析與Smart Client的應用

 前言

 前言

——網絡以及軟件體系結構的發展

        在軟件的應用過程中曾遇到過很多問題,從初期的軟件危機到後期各種爲解決這種危機出現的高級語言和項目管理的方式,都是在解決因爲客戶不斷增長的需求而帶來的,對軟件提供的功能到軟件的實現方式的各種要求。由於這種增長是與人自身的不斷學習和工作的不斷深化以及人類所固有的一種追求變化的潛能所造成的。這就使得軟件的發展也要與人不斷增長的慾望相結合。

        在軟件的應用過程中曾遇到過很多問題,從初期的軟件危機到後期各種爲解決這種危機出現的高級語言和項目管理的方式,都是在解決因爲客戶不斷增長的需求而帶來的,對軟件提供的功能到軟件的實現方式的各種要求。由於這種增長是與人自身的不斷學習和工作的不斷深化以及人類所固有的一種追求變化的潛能所造成的。這就使得軟件的發展也要與人不斷增長的慾望相結合。

在這些改變當中,軟件系統的結構——軟件的實現方式,也在不斷的改變。從發展的初期計算機都是單機工作的,軟件的結構也就只限於單機的應用。隨着人類自身的發展需求的增加,慢慢的單機的系統已經不能滿足日益龐大和複雜的工作了。網絡在這個時候就應運而生。

開始的時候只是零星的幾臺終端互相傳遞一些簡單的數據,到後來逐步的要求資源的共享,再到後來又將網絡上的某些結點作爲專門用於向其他終端提供資源、服務等各項的事務大型終端。這樣就根據任務的不同將計算機的應用劃分成了兩個基本的概念:一個是服務器(Server),專門作爲服務用途併爲訪問它的終端提供預定的服務;另外一個就是客戶端(Client,用來應用Server的資源進行相應的工作。這個時期的軟件結構也從單機系統轉變成了客戶端/服務器結構也就是通常所說的C/S結構。這個時期整個的系統的軟件和硬件也基本之侷限於專用網絡,例如1969年美國國防部的國防高級研究計劃局(DARPA)建立了世界上第一個分組交換網(ARPARNET)。C/S結構在這種專用的網絡上得到了長足的發展。

但是,在電子技術的快速發展中,計算機網絡的結構也在隨之發展。超大規模集成塊的出現、計算速度的不斷提高、網絡傳送帶寬的不斷擴容。也直接帶來了網絡結點的增加。網絡的應用也逐漸的向民用化發展,這是的某些專用網絡已經不能提供更好的服務了。Internet(廣域的網絡)也就自然的產生了。它將計算機的應用從專業化走向了民用化。這時傳統的C/S結構的軟件體系受到了衝擊,也爲Internet的發展帶來了困難(具體的C/S結構給廣域網絡帶來的困難將在後面介紹)。

爲了解決C/S結構帶來的問題,一種新型的軟件體系結構誕生了,這就是B/S結構Browser/Server——瀏覽器/服務器結構。它是隨着Internet技術的興起,是對C/S結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,形成所謂三層3-tier結構。這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。

B/S結構的出現是網絡的應用從量的改變轉換爲質的飛躍的結果。他充分的發揮了客戶端簡便易用,並且無需過多的維護的特點。但是隨着Internet上面的計算機飛速的增加。慢慢的由於服務器所接收的請求越來越多,而且要求的服務也越來越複雜,這使得服務器的負荷增加了很多,網絡的效率也降低了。客戶端也要求做的事情不在簡單的限於瀏覽。

要解決這種矛盾,需要解決很多的問題。比如硬件的要求,軟件的設計要求,軟件的體系結構的要求。矛盾的惡化也影響了網絡的以更快的速度發展。微軟在這種兩難的時期提出了一種將C/S結構和B/S結構的有點集成爲一體的技術——Smart Client(智能客戶端),來解決日益膨脹的需求。利用C/S結構的靈活性和充分利用客戶端資源的能力,加上B/S結構的通訊方式的簡潔。爲軟件系統結構提出了新的思維。我們將在後面詳細的對着三中結構做解釋,也會對新的Smart Client技術做一個論述。

 

 

第一章.          什麼是C/S結構

一.        C/S結構的簡介

一.        C/S結構的簡介

Client/Server(也稱爲胖客戶端)是通過客戶端和服務器上安裝不同邏輯實現的軟件,然後這些軟件通過一種已經協商好的方式進行通訊,實現資源共享和提供服務的結構。

C/S結構還沒成型之前,信息系統一般採用文件共享的方式,通過直接訪問數據庫來達到數據共享的目的。Client/Server體系結構嚴格地定義了客戶端和服務器端對信息數據的處理範圍。即客戶端要訪問服務器端的數據時,一定是以特定的描述語言,將請求信息首先傳遞給服務器端,由服務器端的相關模塊判別並處理客戶端的這個請求。請求處理完畢後,服務器端再將處理結果回傳給客戶端。這樣纔算一個訪問過程的結束。在這種工作方式下,將服務器和客戶端的功能做了詳細的區分,並且根據分工不同使信息得以保障。

   二.        C/S結構的特點

Client/Server結構在一誕生的時候,就以它的靈活性和易用性得到了很多稱讚,因爲它將軟件和相應的終端捆綁起來並賦予了不同的職能。它發展到今天已經也已經非常成熟了,它可以把實現友好人機交互界面的任務交給客戶端處理,而服務器端只需完成數據的存儲和處理。這種體系結構的優點是:

u      系統功能強大

在很大程度上說軟件體系的分工,就可以給系統帶來更加強大的功能。因爲系統的每個部分可以相對獨立的完成比較專一的工作,這樣就可以將每個功能模塊的負載降低。充分的考慮本模塊的邏輯。

u      交互能力強

在客戶端可以擁有非常友好的人機界面,增加了軟件的易用性,使工作變的更加輕鬆自在。服務器端可以充分利用自己的資源只對客戶端進行服務。這樣就讓交流更加簡單。

u      系統運行效率高

由於功能的分類管理,每個部分只完成自己對應的邏輯功能,就使得整個系統的應用效率得到提高。不過因爲某一部分的功能負載過重導致系統效率減低。

u      並且開發工具和開發手段可選擇性強

C/S的實現過程中,因爲很多部分的工作都分擔到了客戶端,所以相應的開發就靈活了許多。可以通過很多不同的工具來實現邏輯應用。

三.        C/S結構的缺點

雖然C/S結構有很多的優點,但是這並不代表它就沒有缺點。隨着網絡的不斷髮展,應用的業務邏輯也越來越複雜,C/S的缺點也就慢慢的暴露出來了。具體的缺點包括一下幾個部分:

u      所開發出來的系統相對比較封閉

C/S的應用中大多數這種結構的軟件系統都只運行於局域網中,因爲在廣域網站因爲一些安全原因導致客戶端的軟件容易被利用造成對服務器的攻擊。而隨着互聯網的飛速發展,移動辦公和分佈式辦公越來越普及,這需要我們的系統具有良好的擴展性。這種方式遠程訪問需要專門的技術,同時要對系統進行專門的設計來處理分佈式的數據。這時C/S結構就不太能滿足這種需求了。

u      系統結構複雜

由於對軟件的需求的不斷增加,使得C/S結構的軟件系統變的越來越複雜。出現了各種不過級別的客戶端和不同應用方式的服務器。這就必然帶來系統的結構複雜性的增加。

u      開發週期長

因爲系統的結構變的複雜,這就直接導致了開發過程中對相應的邏輯的理解和實現也變的複雜。開發的週期就必然會增加,開發成本和調試成本也就隨之升高。這是使用者、開發者和投資者都不希望的事情。

u      安裝和維護比較麻煩

客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。特別是有很多分部或專賣店的情況,不是工作量的問題,而是路程的問題。還有,系統軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高。對客戶端的操作系統一般也會有限制。可能適應於Win98, 但不能用於win2000Windows XP。或者不適用於微軟新的操作系統等等,更不用說Linux、Unix等。

 

 

 

傳統的CS體系結構雖然採用的是開放模式,但這只是系統開發一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟件支持。由於沒能提供用戶真正期望的開放環境,C/S結構的軟件需要針對不同的操作系統系統開發不同版本的軟件, 加之產品的更新換代十分快,已經很難適應百臺電腦以上局域網用戶同時使用。而且代價高, 效率低。

第二章.          什麼是B/S結構

C/S的暴露的缺點越來越多的時候,爲了克服Client/Server體系結構所存在的問題,人們就開始在尋找一種更好的解決方案來解決自己更高的要求。這時Browser(瀏覽器)誕生了,這種新的事物給人們帶來了新的軟件架構思想。就是我們可以通過瀏覽器來讀取服務器端提供給我們的信息。瀏覽器只負責處理一些通用的協議以向使用者提供信息。這樣客戶端就不再有那麼大的軟件需要部署了。客戶的請求也可以通過瀏覽器,用一種協議去請求相應的服務。這就誕生了Browser/Server結構(瀏覽器/服務器結構)。

C/S的暴露的缺點越來越多的時候,爲了克服Client/Server體系結構所存在的問題,人們就開始在尋找一種更好的解決方案來解決自己更高的要求。這時Browser(瀏覽器)誕生了,這種新的事物給人們帶來了新的軟件架構思想。就是我們可以通過瀏覽器來讀取服務器端提供給我們的信息。瀏覽器只負責處理一些通用的協議以向使用者提供信息。這樣客戶端就不再有那麼大的軟件需要部署了。客戶的請求也可以通過瀏覽器,用一種協議去請求相應的服務。這就誕生了Browser/Server結構(瀏覽器/服務器結構)。

 

 

 

一.    B/S結構簡介

B/SBrowser/Server又叫瘦客戶端)結構即瀏覽器和服務器結構。它是隨着Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在服務器端(Server)實現,形成所謂三層結構。這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。

B/S結構的主要工作方式是通過客戶端的瀏覽器(比如:Microsoft Internet ExplorerNetscape等瀏覽器)發送瀏覽信息的請求到服務器(通常這個請求是通過HTTP等協議來實現的),然後服務器端解析這些協議信息,將相應的信息在數據庫或其他設備種找到,然後將這些數據再通過協議傳遞給客戶端的瀏覽器;瀏覽器再用特殊的方式將信息反饋給使用者。

整個過程中瀏覽器取代了以前C/S結構中的Client端應用程序。其實從某種角度來講B/S結構是在Internet等廣域網絡中對C/S結構的一種進化。是用瀏覽器這種比較通用的客戶端軟件來取代原有的不能通用的客戶端程序。

二.    B/S結構特點

B/S最大的優點就是可以在任何地方進行操作而不用安裝任何專門的軟件。只要有一臺能上網的電腦就能使用,客戶端零維護。系統的擴展非常容易,只要能上網,再由系統管理員分配一個用戶名和密碼,就可以使用了。甚至可以在線申請,通過公司內部的安全認證(如CA證書)後,不需要人的參與,系統可以自動分配給用戶一個賬號進入系統。而且還有很多其他的特性:

u      統一的客戶端瀏覽器讓網絡和軟件系統的應用拓展了空間

由於客戶端是通過瀏覽器來實現的,所以在使用服務的時候,客戶不需要特殊的軟件來實現,只需要可以上網就可以利用這個系統。這樣就大大了簡化了使用者的工作,人們也會逐漸的願意使用這種結構的產品。無形中網絡的發展就會加快步伐。

u      維護和升級方式簡單。

目前,軟件系統的改進和升級越來越頻繁,B/S架構的產品明顯體現着更爲方便的特性。對一個稍微大一點公司來說,系統管理人員如果需要在幾百甚至上千部電腦之間來回奔跑,效率和工作量是可想而知的,但B/S架構的軟件只需要管理服務器就行了,所有的客戶端只是瀏覽器,根本不需要做任何的維護。無論用戶的規模有多大,有多少分支機構都不會增加任何維護升級的工作量,所有的操作只需要針對服務器進行;如果是異地,只需要把服務器連接專網即可,實現遠程維護、升級和共享。所以客戶機越來越“瘦”,而服務器越來越“胖”是將來信息化發展的主流方向。今後,軟件升級和維護會越來越容易,而使用起來會越來越簡單,這對用戶人力、物力、時間、費用的節省是顯而易見的,驚人的。因此,維護和升級革命的方式“瘦”客戶機,“胖”服務器。

u      成本降低,選擇更多

由於客戶端是採用瀏覽器,所以軟件的開發只需要服務器端的,這就極大的降低了開發的成本。而且因爲使用的是相同的協議,那麼具有瀏覽器的客戶端對系統的要求也就降低了。操作系統就不向C/S結構中那樣必須侷限在某一個特定的操作系統中。在B/S下可以應用各種操作性來完成自己的任務,充分的發揮了B/S結構的多選擇性。

 三.    B/S結構的缺點

 三.    B/S結構的缺點

一次問題的解決將必然引起一些新的問題的產生。任何的系統或者任何的事情都在遵守着這個原則。正因爲如此B/S結構的軟件系統也不可避免的在遵循着這個原則。當然這還是因爲人類需求的不斷增加才產生的。

在這裏總結一下B/S結構的軟件系統有什麼缺點:

u     應用服務器運行數據負荷較重

由於B/S結構的管理軟件只安裝在服務器端Server)上網絡管理人員只需要管理服務器就行了,用戶界面主要事務邏輯在服務器(Server)端完全通過WWW瀏覽器實現。因此大部分事務邏輯不需要在前端(Browser)實現,所有的客戶端只有瀏覽器。這中情況下就必然會給服務器端的數據負荷帶來較重的壓力,這樣如果服務器端分析的邏輯複雜度很高,那麼就將造成整個系統的運行效率降低。

u     整個系統過於依賴網絡

因爲客戶端沒有了複雜的客戶端軟件,所以客戶端只能通過瀏覽器來對網絡上的資源進行訪問。那麼就必然造成客戶端資源的浪費,客戶端必須依賴於網絡才能完成任務。一旦網絡或者服務器因爲邏輯錯誤或者其他的物理問題(比如停電、人爲的損害等)而停止。那麼客戶端就等於失去了方向。就將完全沒有工作能力了。

u     安全性問題層出不窮

衆所周知微軟的IE瀏覽器曾給我們帶來了多少的安全問題,向基於IE的病毒、木馬和黑客通過IE的漏洞對系統進行攻擊等等,都是因爲這種結構所暴露出來的安全問題。這種問題也給使用者帶來了很多的不便。

u     開發中過多的考慮客戶端的顯示問題

因爲客戶端運行的只是瀏覽器。那麼對於瀏覽器中顯示的內容在設計階段也要考慮很多。但是由於當前的技術原因,造成了客戶端的顯示遠沒有C/S中直接利用客戶端資源來構架表示曾那麼靈活那麼簡便。

 

 

第三章.          問題

網絡的使用越來越普遍,人們對於網絡和軟件系統的要求也在不斷的增加。這種不斷增長的需求使以往的軟件開發方式和軟件的體系結構都難以滿足人的這種貪婪所帶來的新問題。這也是不可避免的,也是技術發展和人類發展的根本動力。人們對於原有的軟件系統的問題越來越不能忍受,他們要求變化要求將已有的問題都一一的解決。這就必須要有一種新的解決方案來克服原有的C/S結構和B/S結構或者一些其他非主流結構帶給我們的問題。

網絡的使用越來越普遍,人們對於網絡和軟件系統的要求也在不斷的增加。這種不斷增長的需求使以往的軟件開發方式和軟件的體系結構都難以滿足人的這種貪婪所帶來的新問題。這也是不可避免的,也是技術發展和人類發展的根本動力。人們對於原有的軟件系統的問題越來越不能忍受,他們要求變化要求將已有的問題都一一的解決。這就必須要有一種新的解決方案來克服原有的C/S結構和B/S結構或者一些其他非主流結構帶給我們的問題。

讓我們來總結一下C/S結構和B/S結構給我們帶來的主要問題。

C/S:

u      所開發出來的系統相對比較封閉

u      系統結構複雜

u      開發週期長

u      安裝和維護比較麻煩

B/S:

u      應用服務器運行數據負荷較重

u      整個系統過於依賴網絡

u      安全性問題層出不窮

u      開發中過多的考慮客戶端的顯示問題

這些問題曾經給我們帶來很多的不便,也曾經讓我們對軟件結構的發展方向感到迷茫。很多人都有個各自不同的新的解決方案想解決這些問題。但是由於技術等諸多原因。使這種嘗試變得越來越困難。人們都期待着一個新的革命來改變現在的一切。

這些問題曾經給我們帶來很多的不便,也曾經讓我們對軟件結構的發展方向感到迷茫。很多人都有個各自不同的新的解決方案想解決這些問題。但是由於技術等諸多原因。使這種嘗試變得越來越困難。人們都期待着一個新的革命來改變現在的一切。

第四章.          Smart Client

——智能客戶端

  到現在我們應該對C/SB/S結構給我們帶來的優點和缺點都有了一個大概的瞭解。通常情況下人們要解決一個問題都會找出以前解決方案中出現的錯誤,在這些方案中尋找好的部分,將這些好的部分留下,然後利用更先進的思想和技術將不好的部分克服。

  到現在我們應該對C/SB/S結構給我們帶來的優點和缺點都有了一個大概的瞭解。通常情況下人們要解決一個問題都會找出以前解決方案中出現的錯誤,在這些方案中尋找好的部分,將這些好的部分留下,然後利用更先進的思想和技術將不好的部分克服。

微軟就是利用了這種方式,適時的推出了一種新的解決方案——Smart Client(智能客戶端)。通過這種解決方案將C/S結構和B/S結構的優點繼承下來,將這些結構中的缺點通過一些比較先進的技術加以克服。用這種方案來迎接下一帶的技術革命和新的更復雜的需求。

一.    什麼是智能客戶端?

經過設計,智能客戶端應用程序可以將C/S應用程序的優點與B/S應用程序的部署和可管理性優點結合起來,儘管這兩種方法之間的平衡的準確性質取決於確切的情況。

智能客戶端應用程序通常具有形形色色的要求,因此在設計和實現方面會有極大的差異。但是,所有智能客戶端都具有下列部分或全部特徵:

u      利用本地資源

u      利用網絡資源

u      支持偶爾連接的客戶

u      提供只能安裝和更新

u      提供客戶端設備的靈活性

許多應用程序不需要具有上述所有特徵。當設計智能客戶的時候,將需要仔細考慮應用程序方案,並且決定智能客戶端應用程序要求具備上述哪些特徵。要將上述所有特徵合併到應用程序中,將需要進行非常認真的計劃和設計,並且在很多情況下將需要大量的實現資源。

注: .NET 框架可以幫助我們實現智能客戶端應用程序的許多特徵。該框架提供了具備自我描述能力且牢固綁定的程序集,並且支持單獨和並列安裝應用程序的多個版本,從而有助於減少與胖客戶端相關聯的應用程序部署和脆弱性問題。.NET 框架基類庫爲與 Web 服務進行交互提供了廣泛的支持,並且提供了 Windows 窗體。通過使用公共語言運行庫 (CLR),您可以利用任何受到 .NET 支持的語言來開發智能客戶端。

使用本地資源

設計良好的智能客戶端應用程序最大限度地利用了代碼和數據部署在客戶端上並且在本地執行和訪問這一事實。它爲應用程序提供了內容豐富且響應迅速的用戶界面,以及強大的客戶端處理能力。例如,它可能使用戶能夠執行復雜的數據操作、可視化、搜索或排序操作。

智能客戶端可以利用客戶端硬件資源(如電話或條碼讀取器)以及其他軟件和應用程序。這使它們非常適合於解決瘦客戶端應用程序(如銷售點終端應用程序)無法很好解決的問題。智能客戶端還可以利用本地軟件(如 Microsoft Office 應用程序)或客戶計算機上安裝的任何 LOB 應用程序。通過創建能夠與多個 LOB 應用程序集成並對這些應用程序進行協調的解決方案,您的用戶可以更爲有效地工作,進行更好的決策,並減少數據輸入錯誤。此類解決方案還可以使您的應用程序更加緊密地與用戶的工作環境集成(例如,通過採用自定義的或熟悉的用戶界面),從而降低培訓成本。

可以通過智能客戶端應用程序集成或協調其他客戶端應用程序,以便提供一致且高效的總體解決方案。這些應用程序還應該瞭解正在使用應用程序的上下文,並且應該適應該上下文以儘可能地幫助用戶;例如,通過根據用戶的使用模式或角色搶先緩存適當且有用的數據。

通過最大限度地使用本地資源以及將本地資源集成到您的智能客戶端應用程序,可以使您的應用程序更好、更有效地使用已經提供給您的硬件。非常常見的情況是,處理能力、內存和高級圖形功能沒有得到利用。使用客戶計算機上的資源還可以減少服務器端硬件要求。

使用網絡資源

智能客戶端可以通過網絡消耗和使用不同的服務和數據。它們是從許多不同的源檢索數據的有效方式,並且可以設計爲對數據進行分析或整合,從而使用戶能夠進行更爲有效和明智的決策。例如,智能客戶端可以使用映射服務來提供有關地點和駕駛方向的詳細信息。

智能客戶端應用程序應該儘可能地連接,並且應該利用可以通過網絡使用的資源和服務。它們不應該是獨立的應用程序,並且應該總是構成更大的分佈式解決方案的一部分。智能客戶端應用程序起碼應該使用有助於維護該應用程序以及提供部署和更新服務的集中式服務。

智能客戶端應用程序的連接性質使其可以提供有價值的數據整合、分析和轉換服務。它們使用戶可以實時地或者在一段時間內協作完成任務。在許多情況下,智能客戶端應用程序可以向用戶提供類似於門戶的功能,從而將完全不同的數據和服務加以協調並集成到總體解決方案中。

支持偶爾連接的用戶

可以將智能客戶端設計爲向偶爾連接到網絡的用戶提供功能,從而使用戶可以在明確脫機、使用低帶寬或高延遲網絡,或者連接時斷時續的情況下繼續高效地工作。對於移動應用程序,智能客戶端還可以優化網絡帶寬例如,通過將請求批量發送到服務器,以便更好地使用代價昂貴的連接。

即使當客戶端大多數時間都連接到網絡時,智能客戶端應用程序也可通過以智能方式緩存數據和管理連接來改善性能和可用性。例如,在低帶寬或高延遲環境中,智能客戶端應用程序可以用特殊的方式管理連接,即不損害應用程序的可用性和響應性,並且用戶可以繼續高效地工作。

通過使用戶能夠在斷開連接或只偶爾連接的情況下工作,提高了用戶的工作效率和滿意度。智能客戶端應用程序應該致力於在脫機時提供儘可能多的功能。

 

 

 

提供智能安裝和更新

傳統胖客戶端所具有的一些最大的問題發生在部署或更新應用程序的時候。許多胖客戶端應用程序具有大量複雜的安裝要求,並且可能通過註冊組件以及/或者在公共位置安裝 DLL 來共享代碼,從而導致應用程序脆弱性和更新困難。

可以對智能客戶端應用程序進行設計,以使其按照遠比傳統胖客戶端應用程序更智能和靈活的方式來管理它們的部署和更新。它們可以避免上述常見問題,從而有助於減少應用程序的管理成本。

有許多部署智能客戶端的不同方式。這些方式包括:簡單地將文件複製到本地計算機;使用非接觸式部署自動從中央服務器下載代碼;或者使用企業推技術如 Microsoft Systems Management Server (SMS) 來部署 Windows Installer 軟件包。您選擇的方法將依賴於您的特定情況。

智能客戶端應用程序可以在其運行時或位於後臺時對自身進行自動更新。這一功能使其可以逐個角色地進行更新;以分階段的方式更新,從而可以將應用程序推介給先導小組或受限的用戶組;或者按照制定的時間表更新。

.NET 框架使您可以對應用程序組件進行強命名,這意味着應用程序可以指定用來生成和測試其確切版本的組件,並通過這些版本的組件運行。.NET 框架使應用程序可以相互隔離,以便在安裝一個應用程序時不會破壞另一個應用程序,並且同一應用程序的多個版本可以並列部署。這些功能大大簡化了應用程序部署,並且消除了許多與胖客戶端應用程序相關聯的應用程序脆弱性問題。

 

 

 

提供客戶端設備靈活性

智能客戶端還可以提供靈活且可自定義的客戶端環境,從而使用戶可以將應用程序配置爲支持他或她喜歡的工作方式。智能客戶端應用程序沒有被限制到桌面計算機或膝上型計算機。隨着小規模設備的連接性和能力的增加,愈發需要能夠提供對多個設備上重要數據和服務的訪問的有用客戶端應用程序。與 .NET 框架壓縮版一起,.NET 框架提供了一個可用來生成智能客戶端應用程序的通用平臺。

可以對智能客戶端進行設計以使其適應宿主環境,並且爲它們運行時所在的設備提供適當的功能。例如,適合在 Pocket PC 上運行的智能客戶端應用程序應該提供相應的用戶界面,該用戶界面在較小的屏幕區域上被調整爲使用筆針。

在許多情況下,您需要設計多個版本的智能客戶端應用程序,每個版本都面向特定的設備類型,以便充分利用該設備所支持的特定功能。因爲小規模設備通常在提供完整範圍的智能客戶端應用程序功能方面受到限制,所以它們可能只提供對功能完善的智能客戶端應用程序所提供的數據和服務子集的移動訪問,或者它們可用於在用戶移動時收集和整合數據。最後,可以由功能更加完善的智能客戶端應用程序或服務器端應用程序來分析或處理這些數據。

能夠感知目標設備的功能和使用環境(無論它是桌面、膝上型、平板還是移動設備),以及能夠定製應用程序以提供最適當的功能,這些都是許多智能客戶端應用程序的基本特點。

本指南不包含特定於在移動設備上運行的智能客戶端應用程序開發的體系結構和設計細節,但是,無論應用程序是在桌面計算機上運行還是在其他設備上運行,本指南包含的許多主題都同樣適用。

二.  智能客戶端的類型

智能客戶端在設計和實現方面差異極大,這既包括應用程序要求,也包括可以使用它們的方案和環境的數量。因此,智能客戶端可以採取許多不同的形式和風格。根據智能客戶端應用程序所面向的平臺,可以將這些形式劃分爲三大類:

1

Windows 智能客戶端應用程序

2

Office 智能客戶端應用程序

3

移動智能客戶端應用程序

智能客戶端應用程序面向上述一種或多種平臺是很常見的情況,具體取決於用戶的角色以及需要的功能。這種靈活性是智能客戶端應用程序的主要長處之一。

1.           Windows 智能客戶端應用程序

當我們想到胖客戶端應用程序時,我們通常可能會想到使用可用的系統資源並且提供內容豐富的用戶界面的桌面應用程序。面向 Windows 的智能客戶端應用程序是在傳統胖客戶端應用程序的基礎上發展而來的,並且提供特定的面向特殊目標的功能。

這些種類的應用程序通常使用 Windows 窗體來提供熟悉的 Windows 風格的用戶界面,並由應用程序本身提供大部分功能,而且不依賴於其他應用程序來提供主用戶界面。這樣的智能客戶端既可能包括通過 HTTP 部署的簡單應用程序,也可能包括非常複雜的應用程序。

Windows 智能客戶端應用程序適合於需要將應用程序作爲熟悉的桌面類型應用程序進行部署和訪問的情況。這些類型的應用程序通常由其自身提供其大部分功能,但是在適當的時候可以與其他應用程序集成或者協調其他應用程序。它們提供針對特定任務進行調整的應用程序功能,以提供特定的或高性能的處理或圖形能力。

Windows 智能客戶端應用程序通常最適合於在桌面 PC、膝上型 PC 或平板 PC 上運行的應用程序。此外,它們通常不會提供與特定文檔或文檔類型緊密關聯的功能。

可以在各種各樣的場合下使用這些種類的 Windows 智能客戶端應用程序,例如作爲 LOB、財務、科學或協作應用程序使用。這些種類的應用程序的示例有 Microsoft Money 以及 Microsoft Outlook® 消息處理和協作客戶端。

2.           Office 智能客戶端應用程序

Microsoft Office System 2003 爲我們提供了用來生成智能客戶端應用程序(尤其是在企業設置中)的有用平臺。通過 Office 智能客戶端解決方案,我們可以通過 Web 服務訪問的數據源與 Word 2003Excel 2003InfoPath 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™ 2003InfoPath 2003 是能夠使用類似於表單的界面從用戶那裏收集結構性數據的應用程序。InfoPath 2003 提供了對 XML Web 服務(一種基於表單的用戶界面)的支持,以及對標準技術(如 WSDL UDDI)的支持。InfoPath 2003 支持有限的脫機使用,方法是允許用戶在脫機時與表單進行交互,然後允許用戶在聯機時將該表單轉發給 Web 服務。

有關Office 2003的詳細說明在微軟的MSDN網站上可以查閱,在這裏我們就不再做詳細的介紹了。

3.移動智能客戶端應用程序

移動智能客戶端是在智能設備上運行的應用程序,這些智能設備包括 Pocket PCSmartphone 以及其他超小型臺式設備(如機頂盒)。這些應用程序是使用 .NET 框架壓縮版(它是完整 .NET 框架的子集)開發的。

.NET 框架壓縮版具有完整 .NET 框架的許多功能,支持 XML,並且消耗 Web 服務。它被進行了優化以便在超小型臺式設備上使用,並且它包含用於開發用戶界面的 Windows 窗體設計器。

通過使用 Visual Studio .NET 智能設備項目,您可以開發能夠在 .NET 框架壓縮版上運行的智能客戶端。採用這一方法,您可以通過在超小型臺式設備的模擬器上使用 Visual Studio .NET 來開發、測試和調試應用程序。模擬器的使用大大加快了這些類型應用程序的開發和測試速度。

移動智能客戶端應用程序通常用於提供對重要數據和服務的移動訪問,或者在用戶處於移動狀態時收集和整合數據。這些類型應用程序的示例有保險和金融數據收集應用程序、庫存管理應用程序和個人工作效率管理應用程序。

三.  對智能客戶端和瘦客戶端進行取捨

要針對我們的情況選擇正確的應用程序體系結構,必須考慮許多因素。要確定智能客戶端方法是否最適合我們的應用程序,必須認真考慮我們當前和將來業務應用程序的需要。如果應用程序基於不適合的體系結構,則它可能無法滿足用戶和整個企業的要求和期望。如果以後更改體系結構以滿足新的要求或者利用新的機遇,則可能要付出極爲高昂的代價。

如果需要向各種外部受衆提供面向外界的應用程序,則瘦客戶端體系結構通常最爲適當;而對於需要與其他客戶端應用程序或硬件集成或者對它們進行協調,或者需要脫機工作或通過響應迅速的用戶界面提供特定高性能功能的內部應用程序而言,智能客戶端體系結構通常最爲適當。

實際上,這兩種方法在很大程度上互相重疊,而且每種方法都具有明顯的優點和缺點。我們只有在認真考慮要求並且瞭解如何在我們所處的場合下應用每種方法之後,才能夠選擇正確的方法。在下面的表中羅列出了對智能客戶端和瘦客戶端體系結構對比用來對將來的設計架構進行取捨。

u      瘦客戶端和智能客戶端的特點

特點

瘦客戶端

智能客戶端

提供內容豐富的用戶界面

可以,但難以開發、測試和調試。通常將應用程序與單個瀏覽器聯繫起來。

是。更易於開發、測試和調試。

可以利用本地計算機上的硬件資源

是,但只能通過 COM 組件使用。

可以與其他本地應用程序交互

可以多線程化

可以脫機工作

在低帶寬和高延遲環境中可以很好地執行。

易於部署

不一定。困難程度取決於應用程序要求。

低維護和更改管理成本

不一定。成本取決於應用程序要求。

可以部署到具有不同功能的多種客戶端上。

是,儘管更復雜的瘦客戶端可能要求單個瀏覽器。

是。可以在支持 .NET 框架(包括 .NET 框架壓縮版)的任何平臺上部署。

四. 智能客戶端體系結構難題

智能客戶端的體系結構難題是不同於瘦客戶端的,並且我們需要在我們的應用程序設計中予以考慮。智能客戶端應用程序具有顯著的優點,但是我們只有在適當地解決這些難題之後才能實現這些優點。

通過智能客戶端可以將數據和邏輯分發到客戶計算機,而瘦客戶端則傾向於將數據和邏輯集中存放在 Web 服務器和其他後端服務中。儘管可以通過智能客戶端方法使應用程序變得更加高效,並且不需要與服務器進行往返通訊以確定後續步驟,但我們需要考慮到應用程序及其數據現在比瘦客戶端應用程序分佈得更爲廣泛,並且相應地修改我們的設計。

如果我們要在客戶端上實現業務規則,我們將需要在必要時更新這些規則,而不是更新整個應用程序。這可能意味着我們需要使用不同的機制來分別更新該應用程序以及更新該應用程序內部的業務規則。

通過在客戶端上緩存數據,我們可以顯著改善應用程序的性能和可用性,但我們必須確保適當地刷新數據並且不會使用陳舊的數據。因爲許多用戶可以訪問和使用相同的數據,我們還必須考慮數據併發的影響。我們的應用程序必須能夠處理出現的數據衝突或一致問題,因爲應用程序現在分佈得更爲廣泛,並且可以脫機操作。

.NET 框架在智能客戶端應用程序的宿主方式方面提供了極大的靈活性。應用程序可以作爲傳統桌面應用程序運行,還可以宿主在 Office Microsoft Internet Explorer 內。也可以進行許多種組合。例如,Windows 窗體應用程序可以宿主 Internet Explorer Office 組件,並且任何宿主都可以包含任何其他宿主。

我們可以將不穩定的應用程序邏輯(例如,控制大訂單折扣的業務規則)結合到根據需要通過 HTTP 下載的程序集中。這樣做消除了在開發新應用程序邏輯時部署新版本客戶端應用程序的需要。我們可以使用與附加(或不常使用)應用程序功能相同的模型,以便使初始應用程序規模保持最小,並且根據需要安裝附加功能。

我們可以選擇將我們的智能客戶端作爲複合應用程序進行部署,此時許多應用程序組合起來構成一個統一的解決方案。可以通過耦合桌面應用程序,或者通過提供一般性的外殼應用程序以容納多個共同構成解決方案的輕型應用程序,來構成這樣的解決方案。

當用戶必須訪問許多應用程序以完成其工作時,複合應用程序尤其有用。例如,呼叫中心中的客戶服務代理通常必須使用許多 LOB 應用程序,包括桌面應用程序、基於瀏覽器的應用程序以及基於終端的應用程序。所有這些 LOB 應用程序都可以宿主到在它們之間提供集成的普通 Windows 窗體應用程序中,從而大大簡化用戶的工作,最爲重要的是減少花在特定呼叫上的時間。通過提供普通外殼來宿主這些 LOB 應用程序,可以在不同的解決方案中開發、測試和重用通用基礎結構功能,如安全性、部署、窗口管理、應用程序集成、審覈等等,從而使 LOB 應用程序的開發人員能夠將精力集中於業務功能。

面向服務的體系結構的出現意味着您可以設計智能客戶端來利用網絡服務。所有此類服務都是以行業標準方式提供的,這就改善了互操作性、開發人員工具支持以及在智能客戶端應用程序中內置新功能的容易程度。

 

 

第五章     總結

  

  

我們知道任何事物的發展都是螺旋上升的。任何一個事物也總有它的矛盾對立面。不管我們做出任何的選擇總會有另外一個或者另外多個候選的方案讓我們對當前的方案失去信任。這也是爲什麼C/SB/S等結構的產生和發展的一個必然動力。我們不能說C/S或者B/S不好,也同樣不能說會有更好的方案能讓我們真正的解決了我們所有的問題。

在《沒有銀彈》中說過“沒有任何一種單純的技術或者管理上的進展,能夠獨立地承諾十年內使生產率、可靠性或者簡潔性獲得數量級上的進步”。也就是說不管是從技術方面還是從管理方面都不可能使我們的工作真正的達到某種我們所期望的質的提高。我們也只能通過不斷的積累和不斷的總結來逐步的讓我們的工作在量變的方向上做的更好。我們也不要去過於依賴於技術或者管理會給我們帶來多大的改變。

C/S結構也好B/S結構也好或者是Smart Client(智能客戶端)也好這些結構都只是在我們要解決一些局部問題的時候才產生的。並不能說越往後產生的結構就越適合於我們。我們只能通過對自己的不斷了解逐步的選擇適合於我們自己的結構來完成將來的工作。每種結構都有它自己適用的範圍,每種結構也都有各種各樣的優點和缺點。

在這裏我們可以做一個簡單的總結,說明一下這三種結構最適合的場合。C/S結構只適用於小型的局域網絡,做一些比較靈活的客戶端應用;B/S結構適合於廣域網絡(Internet)Smart Client是界於C/SB/S結構之間的一種綜合運用這兩種結構有點的系統可以根據需求來確定Smart Client的範圍。當然,由於Smart Client的這種特殊性也造成一定的開發開支,需要開發團隊對這種結構有相當的瞭解這樣纔會充分發揮Smart Client的強大功能。

注:以上的關於Smart Client的描述是引自MSDN上的相關文章。

發佈了48 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章