C/S和B/S應用程式的本質區別
- 單機程式(只考慮主體功能,程式更新和註冊等,也含網路通訊):WinForm,如:office、金山詞霸、防毒軟體等;控制檯程式;Windows服務等
- 網路通訊伺服器:可以是控制檯、Windows服務、WinForm等多種形式;也可以是WinForm單機服務管理程式加上多個Windows服務的形式(如SqlServer等資料庫服務端)
- 網路通訊客戶端:一般為WinForm形式,也有控制檯的,或者網路遊戲類的動畫形式
- 點對點網路通訊程式,其實就是一個程式既有服務端又有客戶端功能,或者採用UDP協議通訊
以上幾類應用程式絕大多數都有可單獨執行的exe,執行後產生一個或多個單獨的程式,也有依託於rundll32.exe等程式啟動的“可執行dll”程式(很多病毒木馬和監控客戶端屬於此類)。
顯然,C/S程式中的服務端S和客戶端C分別屬於網路通訊伺服器和網路通訊客戶端類。而B/S呢?不是單機程式,只能屬於網路通訊程式,但服務端和客戶端都沒有單獨的exe,也就是說B/S並不是完整的程式,其客戶端(browser)是IE等瀏覽器,服務端是IIS(Internet Information Services 網路資訊服務平臺,java採用tomcat等平臺,本文只以IIS講述,下同)。瀏覽器就是一個完整的網路通訊客戶端了,一般都有單獨的exe,IIS是一個WinForm的服務和配置管理程式加上多個Windows服務的組合(可能有作業系統的“親密”支援),是一套完善的網路通訊伺服器。
我們用Asp.net等語言寫的程式碼,編譯後會生成一個或多個dll,以及aspx、js、css、圖片等檔案,其中指令碼作為網路通訊客戶端的一部分,由瀏覽器解釋執行;dll在設定了虛擬目錄後動態載入到IIS,作為網路通訊伺服器的一部分,負責特定的業務處理。而瀏覽器和IIS間採用http頭+html體(或其它變種)的協議進行通訊,當瀏覽器向IIS發一個字串請求後,IIS根據aspx檔案中對字串的定義,提取控制元件值等資訊,分發給特定的dll,由我們編寫的dll進行業務處理,dll處理完後將新的控制元件值等資訊以函式返回值之類的形式返回給IIS,IIS再根據aspx中的定義處理成協議字串,回覆給瀏覽器。
所以B/S實質上是C/S的,只不過我們通常只做了服務端的業務處理部分,編譯成dll交給IIS,客戶端基本沒做什麼。單獨的IIS也沒有意義,必須有dll作為外掛進行業務處理。
B/S只能採用標準的http頭+html體(或其它變種)的通訊協議,而C/S更加靈活,可以採用任何標準協議和自定義協議,甚至可以是基於UDP的應用層協議。當我們自定義的協議形成一個體系時,服務端可以做一個通訊框架,甚至是通用的exe平臺,客戶端介面由伺服器取得,以後二次開發只需要做一個dll插入通用的伺服器平臺中即可。這樣就把C/S程式做成了B/S的形式。Wap就是和Web一樣的B/S類應用程式。
寫了這麼多,發現C/S和B/S本質上是一樣的,可以相互轉化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-464469/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C/S,B/S的應用的區別
- B/S與C/S的聯絡與區別
- C/S和B/S
- b/s架構和c/s架構(重點)架構
- String s = “hello“和String s = new String(“hello“)的區別
- Mysql中S 鎖和 X 鎖的區別MySql
- CEO 和 CTO 沒有本質的區別
- 正向代理和反向代理的本質區別
- c/s應用程式自動更新元件GeneralUpdate3.2.1釋出元件
- Integer.valueof(String s)和Integer.parseInt(String s)的具體區別是什麼?
- 創業和打工的最本質區別在哪裡?創業
- 『與善仁』Appium基礎 — 9、補充:C/S架構和B/S架構說明APP架構
- docker和k8s有什麼區別DockerK8S
- k8s中應用GlusterFS型別StorageClassK8S型別
- 玩k8s? ----管理應用程式配置K8S
- String s="a"+"b"+"c",到底建立了幾個物件?物件
- c s s 選擇器
- 榮耀暢玩7C和聯想S5區別對比 聯想S5和榮耀暢玩7C哪個好?
- 小米MIX2S和小米8區別對比 小米8和MIX2S哪個好?
- 在K8S中,Deployment和Statefulset有何區別?K8S
- SAP S/4HANA裡extension include view和extension view的區別View
- SAP R/3,SAP ECC 和 SAP S/4HANA 的聯絡和區別
- Web 和移動應用程式測試之間的區別Web
- PWA 應用和原生應用的一些區別
- Linux下su與su -命令的本質區別Linux
- Go 中的 channel 與 Java BlockingQueue 的本質區別GoJavaBloC
- 農產品S2B2B供應鏈商城系統
- SAP S/4 HANA 與R3(ECC) 的區別
- 程式語言:型別系統的本質型別
- go的 & 和 * 的區別,以及應用場景Go
- this和super的區別和應用 學習筆記筆記
- Helm部署k8s應用K8S
- [短文速讀-1] a=a+b和a+=b的區別
- C和C++區別C++
- S2B2C商城系統解決方案分享
- C++,程式休眠,暫停1sC++
- OPPO A1和魅藍S6區別對比 OPPO A1和魅藍S6哪個值得買?
- 【筆試】陣列、線性表的本質區別筆試陣列
- Java中equals與==的本質區別是什麼?Java