企業管理軟體是電腦軟體應用的一個重要領域,在今天電腦軟體除面向科學計算之外應用最廣闊的也是企業管理應用,可以說電腦技術的發展推動著公司專屬應用程式發展,企業管理需要也一方面影響著電腦技術的發展,今天,在我們的周末,企業管理應用軟體開發人員佔了總開發人員中的極大的比例。
今天我們就來通過回顧計算技術在公司專屬應用程式中的發展曆程來看看軟體架構的發展。
主機-字元終端
在PC機沒現世之前,極小數的企業使用大型業務處理主機處理企業電腦任務,在那個時候,電腦電腦價格非常昂貴,體積龐大,都是採用多個終端機串連上伺服器的形式進行軟體操作。
即所謂的主機--->終端結構,而一個終端,其實僅僅只是一台顯示器和鍵盤而已,沒有CPU和記憶體,只能接受操作輸入和輸出結果,沒有任務的處理能力,我們可以理解終端為主機的延伸,那麼他的邏輯結構呢,就是一個多使用者多任務的處理常式。
客戶機-伺服器結構
PC機的問世,加速了公司專屬應用程式軟體的發展,一方面個人PC機的成本較低,功能也比較強大,企業有能力為員工配備更多的電腦提高工作效率。同時由於公司專屬應用程式軟體的功能逐漸豐富,應用範圍越來越寬廣和深入,所以對電腦效能的要求也越來越高。在高速的發展的公司專屬應用程式需求下,傳統的大型主機的效能已經顯現其不足,而與此同時,企業內部卻有著大量空閑計算能力的PC電腦。因此,在經濟利益的驅動下,公司專屬應用程式軟體開始向分布式的結構發展,將一部分的計算任務放到用戶端PC來執行,而伺服器僅僅只用來運行一些資料庫軟體,最大的程度的利用到所有電腦的計算能力,以提高性價比。這種企業軟體的應用架構模式被稱之為用戶端(Client)/伺服器(Server)模式,也就是通常所說的C/S模式。
隨便PC機效能的飛速發展,大量的伺服器採用PC技術生產,即大家常見的PC伺服器【(X86-X64)伺服器】,其價格相對大型主機、小型機非常的低廉,而其電腦能力也越來越接近小型機。
在這種分布式結構之中,可以充分利用兩端硬體環境的優勢,將任務合理分配到 Client端和Server端來實現,降低了系統的通訊開銷,伺服器儲存業務資料並勢力有限的業務電腦,PC客戶處理人機互動及絕大部分業務計算職能。目前大多數應用系統都是Client/Server形式的兩層結構, 由於現在的軟體應用系統正在向分布式的Web應用發展,Web和Client/Server 應用都可以進行同樣的業務處理,應用不同的模組共用邏輯組件;因此,內部的和外部的使用者都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴充出新的應用系統。這也就是目前應用系統的發展方向。
嚴格的來說,客戶機-伺服器結構(C/S)是分布式的一種經典結構,也是所有分布式結構衍生體系的基礎,如果沒有CS結構,就不可能存在BS結構、CAS結構、以及SAAS、雲結構等。
瀏覽器-伺服器結構
因為C/S模式所帶來的一些固有的缺陷,比如直接連接資料庫伺服器引發潛在的安全性問題以及用戶端程式的大規模部署和更新比較麻煩,C/S應用程式比較複雜等等問題都導致了C/S模式的公司專屬應用程式軟體開發和維護成本一直居高不下。
基於以上C/S結構的這些問題,出現了一種新的結構,即將公司專屬應用程式的絕大總分業務電腦能力都放到伺服器之上,用戶端PC僅僅只運行一個WEB瀏覽器用於接受使用者的輸入和呈現。降低了軟體的維護成本。這就是瀏覽器(Browser)/伺服器(Server)架構模式,也就是我們很熟悉的B/S模式。
在這種結構之中,資料庫伺服器同C/S結構之中的伺服器職能一樣,儲存資料並處理一部分業務,同C/S不同的是,承載絕大資料業務處理能力由PC用戶端轉移到Web伺服器,而PC用戶端弱化到類似於一個終端,只是這個終端不是字元終端,而是一個映像終端。
如果去追究這處結構的本質,我們可以理解為B/S結構為以C/S結構為基礎的新型網路終端結構,即如下解釋:
1.資料庫服務和Web伺服器組成了一個簡單的C/S結構。
2.Pc機上的瀏覽器即一個圖形終端,相對於服務端(Web伺服器及其外端資料庫)來說,其幾乎沒有任務的計算能力,僅為一個輸入和輸出裝置。
B/S結構最大的好處是使用方便和部署簡單,使用者可以在裝有瀏覽器並能能連網手PC機上訪問應用程式,而不需要同C/S程式一樣運行前必須安裝與配置,這極大的方便了使用者,也極大的降低了應用的部署和維護成本,但其缺點也是顯著的,使用者感覺不好。
C/S與B/S結構有對比
B/S結構同C/S結構一樣,也是一種非常經典的分散式運算結構,在目前公司專屬應用程式結構之中,都採用這種結構或者這兩種結構的衍生結構,這兩種結構各有優缺點,CS結構優點是客戶操作體驗好,而B/S結構部署和維護成本更低。
B/S結構的優點
(1)、具有分布性特點,可以隨時隨地進行查詢、瀏覽等業務處理。
(2)、業務擴充簡單方便,通過增加網頁即可增加伺服器功能。
(3)、維護簡單方便,只需要改變網頁,即可實現所有使用者的同步更新。
(4)、開發簡單,共用性強
B/S 模式的缺點
(1)、個人化特點明顯降低,無法實現具有個人化的功能要求。
(2)、操作是以滑鼠為最基本的操作方式,無法滿足快速控制項目的要求。
(3)、頁面動態重新整理,響應速度明顯降低。
(4)、功能弱化,難以實現傳統模式下的特殊功能要求。
C/S 模式的優點
1.由於用戶端實現與伺服器的直接相連,沒有中間環節,因此響應速度快。
2.操作介面漂亮、形式多樣,可以充分滿足客戶自身的個人化要求。
3.C/S結構的系統具有較強的交易處理能力,能實現複雜的商務程序。
C/S 模式的缺點
1.需要專門的用戶端安裝程式,分布功能弱,針對點多面廣且不具備網路條件的使用者群體,不能夠實現快速部署安裝和配置。
2.相容性差,對於不同的開發工具,具有較大的局限性。若採用不同工具,需要重新改寫程式。
胖用戶端與瘦用戶端
不管是C/S還是B/S,其都需要用戶端技術,對於C/S模式和B/S模式這兩種結構,也有兩種不同的用戶端技術對應,瘦用戶端(B/S模式)技術和胖用戶端(C/S模式)技術。
對於瘦用戶端技術,典型的應用就是使用瀏覽器,通過輸入URL遠端存取服務端,並向服務端發送命令,擷取服務端的資源,然後在用戶端的瀏覽器上顯示出來。由於這種技術資料庫存放在服務端,用戶端應用介面的也是由服務端的檔案產生,因此在用戶端上佔用資源少,對用戶端的裝置要求不高,只需一個瀏覽器軟體和可用的網路便能開始工作,另外,如果系統需要升級修改,只需要在服務端更新檔案,當客戶再次訪問時,就可以使用新的應用系統了,因而部署和升級重點都放在了服務端,實現起來比較簡單。但是,這種B/S模式依賴網路,當網路不可用時或出現效能不穩定的情況時就會導致用戶端變成“死介面”——既不能將資料發送回服務端進行儲存,又不能從服務端擷取資料拿到用戶端操作,一切的工作將要在網路恢複後才能得以繼續。
對於胖用戶端技術,使用者在使用這種軟體時獲得的最大的感官體驗就是——它首先有自己獨特的應用程式介面,而非通過瀏覽器,使用者甚至還可以根據自己的喜好調整軟體的布局,進行豐富的介面元素的設定,這些都是B/S模式的瘦用戶端技術所不能媲美的。另外,使用者還能獲得較快的反應速度,程式可以充分利用本地機器的資源,在不使用網路訪問遠端資源時,本地資源的訪問在正常情況下都能得到很快的處理。同樣的,胖用戶端技術也有著不盡人意的地方——在用戶端進行部署時,由於用戶端可能出現各種各樣的情況,所以需要進行必要的設定,部署起來比較困難,如果對軟體的版本進行升級,使用傳統的DLL技術的那將更是一個大的挑戰,因為在.NET之前,標準Windows DLL或COM組件可能出現“DLL Hell”——註冊和更新軟體中的DLL時,發現共用的DLL被最新版本改寫了,並使該機器上的其他軟體也因此不能運行。胖用戶端有可能需要在用戶端實現資料庫支援,資料庫放在本地有可能導致一些安全問題,因為相對於更重視安全的服務端,用戶端相對而言還是比較脆弱的。
C/A/S結構
C/S結構及B/S結構都有其優秀的一面,但也有其不足的一方,那有沒有辦法吸引這兩者的優點呢,比如我們即需要C/S程式優秀使用者體驗但降低維護和部署成本呢,那麼就出現了C/S結構的一種衍生結構,用戶端/應用伺服器/資料庫伺服器結構。
在C/A/S結構之中,資料庫伺服器同C/S結構之中的伺服器職能一樣,儲存資料並處理一部分業務,應用伺服器承載絕大多數業務處理,PC用戶端需要安裝應用程式用戶端,但其只處理使用者UI及UI邏輯,同簡單的C/S結構相比,因為其業務運行於應用伺服器之上,那麼業務運行相對於來說比較整合,針對業務的營運成本就會降低,C/A/S結構通常結合用戶端自動升級技術,也大大的減少了部署和維護成本,相對於單純的B/S結構相比,因為有獨立用戶端的存在,帶給使用者更好的使用者體驗。
通常在這種C/A/S的分散式運算結構之中,在PC用戶端和應用伺服器之間,大量採用WebService、Remoting、Corba、DCOM、WCF等分布式通訊技術或者融合SOA架構。
.NET智能用戶端
.Net智能用戶端是微軟提出來的C/A/S結構的一種技術,其結合了瘦用戶端(B/S模式)和胖用戶端(C/S模式)的長處,能夠充分的利用胖用戶端模型帶來的好處,提供給使用者出色的操作體驗,同時,也能夠讓我們享受集中式部署和更新帶來的好處。簡而言之,這種新一代的用戶端應用程式,就是被稱之為“智能”用戶端,它能很好的提供原本兩種用戶端的特性,並且增加了資料和串連的管理,產生了一種更好的使用者體驗。
有關於.NET知道用戶端更多的介紹請參考:http://www.microsoft.com/china/MSDN/library/architecture/Smart.mspx?mfr=true。
不管是普通的C/A/S結構的應用還是.NET知道用戶端的應用,其道理都是一樣的,即採用C/S結構為其基礎結構融合B/S結構中的某些優秀的特性,在目前,應用這種技術的商業應用很廣。
富互連網應用
在基於C/S為基礎架構的商業應該之中,採用了C/A/S、智能用戶端技術來彌補簡單的C/S應用的某些不足,在流行的B/S開發領域,也出現了一種以B/S技術為承載的改善客戶使用體驗的技術,即 富互連網應用技術。
富互連網應用(Rich Internet Applications),即RIA,具有高度互動性、豐富使用者體驗以及功能強大的互連網用戶端應用程式,傳統網路程式的開發是基於頁面的、伺服器端資料傳遞的模式,把網路程式的展示層建立於HTML頁面之上,而HTML是適合於文本的,傳統的基於頁面的系統已經漸漸不能滿足網路瀏覽者的更高的、全方位的體驗要求了,這就是被Macromedia公司稱之為的“體驗問題”("Experience Matters"),而富網際網路應用程式(Rich Internet Applications,縮寫為RIA)的出現也就是為瞭解決這個問題。
RIA技術的好處是很顯而易見的,其秉承了B/S的的優秀基因,所以其部署和維護相比C/A/S和智能用戶端結構更加的方面,只是在應用主中需要優秀的客戶體驗的使用RIA技術開發,其和傳統的B/S應用能很好的融合在一起。
下面簡單介紹幾種RIA應用技術:
Adobe Flash/Flex
Flash 從6.0開始Flash就逐步具備建立表單風格的應用程式的功能。據Adobe稱已經有98%以上的案頭系統的瀏覽器都安裝了 Adobe Flash Player。這使得以Adobe Flash Player為用戶端的RIA可以支援種類廣泛的平台和裝置。
Flex是為滿足希望開發 RIA的企業級程式員的需求而推出的表示伺服器和應用程式架構,它可以運行於J2EE和.NET平台。Flex表示伺服器提供基於標準的、聲明性的編程方法和流程,並提供運行時服務,用於開發和部署豐富用戶端應用程式的展示層。Flex開發人員使用直觀的基於XML的MXML來定義豐富的使用者介面。該語言由 Flex伺服器翻譯成SWF格式的用戶端應用程式,在Flash Player中運行。
SilverLight
微軟在Mix07上發布一些重大通告,其中最值得關注的就是SilverLight的發布,SilverLight的前身就是WPF/E技術。
這是一種新的Web 呈現技術的名稱,建立該技術的目的是使其能夠在各種平台上運行。該支援人員建立豐富的、具有絢麗視覺效果的互動式體驗,並且可以隨處實現:無論是在瀏覽器內、在多個裝置上還是在案頭作業系統(如 Apple Macintosh)中。
Java SWT
Java 已經出現幾年了,並且完全支援建立基於表單的使用者介面。除了Java基礎類(JFC/Swing)中的使用者介面組件之外,開發人員還可以使用來自於 Eclipse Project的SWT工具箱和許多第三方工具箱進行開發。對於圖形來說,可以採用Java 2D API:一個非常完整且非常複雜的圖形API。你可以通過一個Web瀏覽器使用Java外掛程式軟體,或使用Java運行時環境中較新的Java Web Start技術來部署應用程式。使用Java建立Rich Client的主要缺陷是它的複雜性(即使對簡單的表單和圖形也要求編寫非常煩瑣的代碼)和Java瀏覽器外掛程式的低市場佔有率。
作為微軟技術的鐵杆粉絲,我在這裡當然是力挺SilverLight,其直接可以使用C#、VB等開發語言,也和WPF共用其介面呈現技術,學習和開發成本較低,也更快構建RIA應用。
本文就到此為止,接下來將和大家共同學習SAAS、SOA、網路計算、雲端運算相關。
相關連結
DotNET企業架構應用實踐-系列目錄
AgileEAS.NET平台開發Step By Step系列-藥店系統-索引
AgileEAS.NET應用開發平台介紹-文章索引
QQ群:125643764,120661978