標籤:style blog http color os io 使用 ar 資料
系統架構師-基礎到公司專屬應用程式架構-用戶端/伺服器開篇
上篇,我們介紹了,單機軟體的架構,其實不管什麼軟體系統,都是為瞭解決實際中的一些問題,軟體上為了更好的解決實際的問題才會產生,那麼對於單機軟
件的架構則也是在不斷的變化和發展,當然好的軟體架構會對軟體的生命週期起到決定的作用。好的軟體架構,無疑會延長單機軟體的生命週期,同時適應後期的不斷的衍生的需求變化,.NET FrameWork的架構設計和體繫結構設計,我相信是非常優秀的。
本篇,將會講述大家比較常見的架構模式,用戶端-伺服器的模式,可以理解成C/S架構模式。現在的C/S架構已經從原來的簡單的用戶端-伺服器的形式,變成了
更多衍生的架構模式,C/A/S,C/S/M/S。包括多層C/S的架構。本篇就將總結這些架構模式之間的細微變化和應用情境來簡單說明,當然由於本人的經驗和學識不夠,
錯誤之處,還請大家多多指出。
大綱
1、開篇
2、大綱
3、C/S架構的產生
4、C/S架構的常見情境和架構模式演變
5、C/S架構總結及說明
C/S架構
C/S和B/S架構我想大家應該都還是比較瞭解其本質和區別的。
wiki百科的定義:
C/S(Client/Server)結構,即大家熟知的客戶機和伺服器結構。它是軟體系統體繫結構,通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到Client端和
Server端來實現,降低了系統的通訊開銷。目前大多數應用軟體系統都是Client/Server形式的兩層結構,C/S的優點是能充分發揮用戶端PC的處理能力,很多工作可以
在用戶端處理後再提交給伺服器。對應的優點就是用戶端響應速度快。
有不少的朋友和我爭辯,未來是B/S的天下,這種C/S的架構模式,可能就會越來越少,甚至被取代,話說,我的理解是這樣的,任何一種架構模式的存在,還是
那句話,都是為了目前解決不同應用情境的問題而存在的。所以關於未來是否被取代我們還不好輕易的下結論,但是有一點,如果我們迴歸本質去看的話,你回傳現,瀏覽器本身就是C/S程式的,除非某一天,我們不需要瀏覽器,即可上網的時候,也許我將會同意你的觀點。
科技發展的步伐不斷的進步,C/S的傳統架構可能是這樣的。
這裡應該比較容易理解,我們把商務邏輯都寫在用戶端應用程式內部,用戶端這時候,就是富用戶端的形式,只需要讀
取資訊或則是寫回資訊的時候訪問資料庫,這時候我們可以把資料庫看作是伺服器端。這樣的方式,應該是目前很多的軟體都是這麼構建的吧,當然可能現階段很多
新的軟體的架構模式已經發生了變化了,不是簡單的這樣的結構,因為無論是應用的整合或者是後續的擴充等這樣的架構方式,無疑都是需要大批量的修改程式才能
實現的,並且在效能等各方面都會有瓶頸。
對於與C/S相對應的架構B/S我們來看,一般的方式如下:
上面我給出的是一般的B/S應用的物理部署架構。
我們迴歸下我們上面說的瀏覽器本身就是個用戶端軟體,通過DNS網域名稱解析伺服器,向指定的web伺服器發送請求,web伺服器根據使用者的請求,來產生HTML文
檔,處理的過程中需要訪問資料庫,處理完畢後,返回給用戶端瀏覽器,瀏覽器根據返回的資訊,進行渲染呈現到瀏覽器用戶端。我上面只是大體的介紹了下過程,
並沒有把很多細節說明白。下面我們就來看看C/S架構的不斷衍生和變種。
C/S架構的情境及架構模式演變
我們上節也說了,C/S架構經過不斷的改進,目前已經衍生出很多的架構模式,我們下面就來回顧和分析,每種架構模式的一般應用情境。
1、用戶端包含業務
用戶端應用程式,內部包含了商務邏輯處理,只是在必要的時候請求和訪問資料庫。進行資料的持久化
操作。
這種模式的應用情境:一般應用於需要用戶端提供富應用的情況,比如醫院資訊系統。
這種模式的代表語言:PB,VB,Delphi等。當然.NET的Winfrom應用程式,這樣的也有不少。
優點:可以重複利用PC資源,降低伺服器的壓力,符合使用者的操作習慣,使用者體驗較好。
缺點:安裝和更新麻煩,不輕便,資訊共用比較麻煩,互連網上沒有辦法進行訪問。
2、C/A/S架構
這種結構看起來強大多了,為啥呢,用戶端是輕量級的了,和瀏覽器差不多,不但提供了強大的使用者體驗和符合使用者的傳統軟體的操作方式,同時不會像胖客
戶端一樣,那麼重,該用戶端還能支援自動升級。
應用伺服器:負責處理用戶端提交的複雜應用,當然後如果用戶端使用者量大的時候,可以通過一些措施來將請求進行任務的分發等,這個就是我們後面說的
多層了。這裡應用伺服器是負責處理用戶端發送的請求資訊處理,帶有與資料庫資料相關的商務邏輯操作時,用戶端將請求打發送到應用伺服器,應用伺服器接收請
求,並進行處理。應用伺服器會根據用戶端的請求,訪問資料庫,並進行商務邏輯處理,將處理完成後的結果,返回給用戶端,用戶端顯示結果。
這樣,用戶端內部只要包含必要的組件即可,所有的業務處理過程都通過應用伺服器來完成。這樣會大大的降低用戶端的運行效率,同時為日後的使用者增
長,提供了水平擴充的基礎。
3、多次C/S結構
上面我們講述了,C/A/S的已經比較強大的結構了,不但提供了類似瀏覽器的支援互連網訪問,同時具有很好的使用者體驗。
下面我們來看看基於上述架構產生的新的物理架構模式。
當然,隨著伺服器效能的提速,我們會發現,其實並不是CPU慢,也不是記憶體不夠用,所有的效能瓶頸,全部都是出現在IO,這個問題,不管是現在談的任何
的邏輯架構,物理架構,或者是資料架構,一般來說,都是為瞭解決IO瓶頸方面的問題。我們不放仔細的考慮考慮目前的很多上市的大公司,不管是互連網的還是工
具類的。一旦資料量大,請求的響應效果,關鍵點就是在IO。
我們學過電腦群組成原理,我們能知道記憶體和CPU之間有差,數量級上就有差別,硬碟和記憶體之間,又有數量級上的差別,所以這CPU一般來說,不進行多任務
或者大量運算的時候,瓶頸一般不會出現在這裡了。
4、還是多層
當然可以是資料庫叢集,或者是分散式資料庫儲存的結構。
5、分布式應用
分布式應用部署伺服器,實現業務切分的部署。
6、SOA架構
上面我們說了基本上目前的比較流行的物理架構的部署方式。
下面我們來說下,關於C/S的邏輯架構。
先說胖用戶端。
慢慢演變:
再抽象。
這樣還不行,因為這樣在UI上,還會不太合適。所以衍生出MVC架構,一般MVC模式適用在Web上,C/S上一般不會這麼採用這樣的方式,目前流行的 J2EE開發架構,如JSF、Struts、Spring、Hibernate等及它們之間的組合,如 Struts+Spring+Hibernate(SSH)、JSP+Spring+Hibernate等都是面向MVC架構的。.NET下大家應該都
瞭解過ASP.NET MVC吧。
一般來說,現在的架構,都不是簡單的這些模式了,都已經依託於某一整合架構,或者是應用開發平台,通過平台提供的中介軟體,實現多種系統的整合或者交
互,通過這些中介軟體提供的強大功能,使我們可以專註業務需求,而不用考慮太多的非功能性需求。
C/S架構總結
上面我們講述了比較常見的C/S架構的模式及演變,其實邏輯架構的方面,總體來說,變化不會太大的,一般都是這些模式,關於如何分層,分層多細,那需要
看項目的具體需求和非功能的需求,包括應用部署的要求等。
隨著目前互連網應用的普及和快速發展,未來生活互連網應用的天下,這個是沒有任何的疑問和問題的,但是我們也能看出來未來C/S架構的發展和商機,目前
不管是任何大公司,都在推廣自己的基礎平台,在平台之上發展應用,通過SAAS的方式,提供方便的購買服務的商店,這樣不但能夠方便使用者使用好的應用服務,
而且也為開發人員提供了商機,所以目前C/S架構的模式越來越多的向SOA和SAAS方向轉變。
我們應該認清形式和方向,如果發展自主創新的道路,那麼必須要考慮未來,架構設計則是適應未來需求和公司發展的關鍵,這也是目前火熱的SOA架構對企業
戰略影響的關鍵所在。大夥都知道,名詞吧,大家都會說,但是實踐的過程中總是困難重重,但是如果因為困難就放棄,那麼相信企業也會因為困難而倒閉。在中
國,經營企業是困難的。
扯得有點多了,C/S架構的發展,未來定是上述的走基礎平台,應用整合,SAAS方面的,C/S可能越來越少,但是不會被取代。目前案頭的應用軟體,多數都是
這樣的模式,越來越多,我相信大家都司空見慣了。現在的有遠見的公司,都知道關注企業的未來發展,所以搶佔手機和瀏覽器市場,通過使用者的粘度,來維持企業
的可持續發展和商業價值空間。
商業和架構能扯上什麼關係,其實仔細想想是有關聯的,好的基礎可以有好的發展,好的公司,如果沒有可持續的眼光和基礎,註定要失敗,最近比較火熱的一
篇口水貼,也能看出端倪,大公司為什麼要打造自己的平台,是有原因的。
每個公司都想要,可惜,可能因各種原因,沒有搭建起來,這個時候,就可以考慮低投入,高回報的方式,通過購買現有市面比較好一些的基礎平台,不但能夠
瞬間增強企業活力,同時提升企業的競爭力,最快的速度搶佔市場。未來雲端運算是趨勢,沒辦法的事情。當一個人說的時候,你不信,二個人說的時候你還不信,當
周圍的人都信的時候,你就相信了。雖然很多人大喊雲裡霧裡。
方案有很多,關鍵是看你是否抓住機會,機遇總是被有準備的人抓住。
目前,我們已完成了第一步:SAAS。
<轉>C/S架構分析