百戰(zhàn)WEB前端全系列2023
S架構(gòu)的發(fā)展過(guò)程經(jīng)歷了兩層CS架構(gòu),三層CS架構(gòu)以及多層CS架構(gòu)的演變。
兩層的CS架構(gòu)是由客戶端和后面的數(shù)據(jù)庫(kù)組成的。數(shù)據(jù)庫(kù)用于存放數(shù)據(jù),并且使用數(shù)據(jù)庫(kù)編程語(yǔ)言編寫業(yè)務(wù)邏輯,客戶端則使用VB、VC、Delphi這樣的可視化編程方便的語(yǔ)言來(lái)開發(fā)客戶端的輸入輸出界面。用戶通過(guò)界面向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器發(fā)回的數(shù)據(jù)則通過(guò)界面進(jìn)行顯示,服務(wù)器的角色就由數(shù)據(jù)庫(kù)來(lái)充當(dāng)。這樣做的好處就是開發(fā)效率高,滿足企業(yè)需求。但是這種架構(gòu)存在著很大的弊端,第一是可移植性差,如當(dāng)數(shù)據(jù)庫(kù)從SQL Server更換為Oracle時(shí)就必須將業(yè)務(wù)邏輯用新的語(yǔ)言再重新編寫一遍;第二則是大型系統(tǒng)做不了,因?yàn)榭蛻舳伺c數(shù)據(jù)庫(kù)需要建立持續(xù)的連接,而數(shù)據(jù)庫(kù)能夠支持的最大連接數(shù)是有限制的。所以在2000年這樣的架構(gòu)流行之后,慢慢的就開始向三層CS架構(gòu)轉(zhuǎn)變。
三層的CS架構(gòu)指的是客戶端+應(yīng)用服務(wù)器+數(shù)據(jù)庫(kù),即將混合在數(shù)據(jù)庫(kù)端的業(yè)務(wù)邏輯從中分離出來(lái),放入到應(yīng)用服務(wù)器中,數(shù)據(jù)庫(kù)只負(fù)責(zé)數(shù)據(jù)的管理、存儲(chǔ)及檢索??蛻舳素?fù)責(zé)界面。三層之中的應(yīng)用服務(wù)器其實(shí)也是程序,類似于前面講過(guò)的TCP、Socket編程,任何支持TCP編程的語(yǔ)言都可以作為應(yīng)用服務(wù)器。三層CS架構(gòu)的工作流程。
用戶通過(guò)GUI(圖形用戶界面)進(jìn)行操作,然后調(diào)用客戶端的通信模塊,通信模塊依據(jù)自定義協(xié)議將請(qǐng)求數(shù)據(jù)打包,通過(guò)網(wǎng)絡(luò)發(fā)送該請(qǐng)求,到達(dá)應(yīng)用服務(wù)器時(shí),應(yīng)用服務(wù)器同樣也有一個(gè)通信模塊,將收到的數(shù)據(jù)包按照協(xié)議進(jìn)行拆包,調(diào)用相應(yīng)的業(yè)務(wù)處理模塊,處理數(shù)據(jù),其中可能需要訪問(wèn)數(shù)據(jù)庫(kù)來(lái)完成數(shù)據(jù)的獲取,將處理完的結(jié)果再次發(fā)送給通信模塊,通信模塊將結(jié)果按照自定義協(xié)議進(jìn)行打包,然后將數(shù)據(jù)包發(fā)送給客戶端的通信模塊,客戶端進(jìn)行拆包獲取響應(yīng)數(shù)據(jù),將結(jié)果顯示在界面上,更新界面上的數(shù)據(jù)顯