HTTP層應(yīng)用層業(yè)務(wù)層當(dāng)然這里的層次名稱都是我隨便瞎編的,主要是方便理解不同的框架運(yùn)作的位置。

HTTP層" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > .NET 平臺(tái)中有很多 BS 框架,能介紹一下他們之間的關(guān)系和實(shí)用價(jià)值嗎?

.NET 平臺(tái)中有很多 BS 框架,能介紹一下他們之間的關(guān)系和實(shí)用價(jià)值嗎?

時(shí)間:2023-11-28 16:00:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-11-28 16:00:01 來源:網(wǎng)站運(yùn)營

.NET 平臺(tái)中有很多 BS 框架,能介紹一下他們之間的關(guān)系和實(shí)用價(jià)值嗎?:從層次結(jié)構(gòu)上來分,BS開發(fā)的框架,分為三個(gè)層次:

當(dāng)然這里的層次名稱都是我隨便瞎編的,主要是方便理解不同的框架運(yùn)作的位置。

HTTP層的框架負(fù)責(zé)最基礎(chǔ)的邏輯,監(jiān)聽TCP端口,解析HTTP請求并負(fù)責(zé)發(fā)送HTTP響應(yīng)。同時(shí)負(fù)責(zé)將不同的HTTP請求委派給不同的應(yīng)用處理。通常來說完成這個(gè)工作的就是WebServer,同時(shí),所謂的反向代理,七層交換機(jī),其工作原理也差不多。唯一的區(qū)別是HTTP請求的委派,WebServer通常透過接口委派,例如IIS的ISAPI,或者通用的CGI技術(shù)。而反代和七層交換機(jī)、負(fù)載均衡器等則以HTTP請求的方式委派。所以反代后面還得需要WebServer,也就是HTTP層的框架。

可以簡單的認(rèn)為,HTTP層之下,是TCP Stream,HTTP層之上,是HTTP Request。

HTTP層的東西,譬如IIS、Apache、nginx、Kestrel、servlet……等等




HTTP框架將TCP流解析為HTTP請求,然后就會(huì)根據(jù)規(guī)則轉(zhuǎn)發(fā)給應(yīng)用層框架進(jìn)行處理。譬如說http://ASP.NEThttp://ASP.NET Core、PHP、tomcat等等這些都是應(yīng)用層的框架。應(yīng)用層是一個(gè)承上啟下的東西,通常來說WebServer或者說HTTP框架轉(zhuǎn)發(fā)的請求仍然是一種低階的二進(jìn)制格式,WebServer通常不與任何具體的語言和運(yùn)行時(shí)綁定或者產(chǎn)生關(guān)系。一般而言,WebServer可以將請求委派給任意語言和運(yùn)行時(shí)處理,譬如同一個(gè)IIS上就可以同時(shí)跑PHP、http://ASP.NET和Java的應(yīng)用。

應(yīng)用層框架負(fù)責(zé)將這種低階的二進(jìn)制格式的請求和響應(yīng)數(shù)據(jù)轉(zhuǎn)換為對應(yīng)運(yùn)行時(shí)的結(jié)構(gòu)化數(shù)據(jù),在.NET就是HttpContext,并在接到請求時(shí),分配線程,路由到不同的代碼來處理請求。

所以應(yīng)用層的主要邏輯就是,數(shù)據(jù)封裝和路由,為應(yīng)用程序提供運(yùn)行時(shí)和環(huán)境。

這就是http://ASP.NET和IIS的關(guān)系,也可以認(rèn)為是http://ASP.NET Core和Kestrel的關(guān)系,當(dāng)然也可以認(rèn)為是PHP和Apache的關(guān)系,tomcat和servlet的關(guān)系。

不過目前有個(gè)趨勢就是很多應(yīng)用層框架會(huì)向下將WebServer的部分功能直接包含進(jìn)來,這樣,應(yīng)用層框架就可以脫離WebServer獨(dú)立運(yùn)行,例如tomcat、http://ASP.NET Core。當(dāng)然,http://ASP.NET也是可以獨(dú)立運(yùn)行的,這個(gè)超綱了就此打住。




最后是業(yè)務(wù)層,負(fù)責(zé)在應(yīng)用層的基礎(chǔ)上處理具體的業(yè)務(wù)信息,業(yè)務(wù)層框架通常都依賴于特定的應(yīng)用層,例如http://ASP.NET MVC顯然只能跑在http://ASP.NET上,而不可能跑在tomcat上。一個(gè)應(yīng)用層上通常也可以承載多個(gè)業(yè)務(wù)層框架,例如http://ASP.NET MVC和http://ASP.NET WebForm就可以并存,雖然這樣做會(huì)帶來一些問題,所以在一般應(yīng)用中我們不會(huì)同時(shí)使用兩種框架。




這三層框架,每一層都為上一層服務(wù),為上一層提供運(yùn)行的基礎(chǔ)。所以下層框架可以稱之為上層框架的宿主

也即是,IIS是http://ASP.NET的宿主,http://ASP.NEThttp://ASP.NET MVC的宿主。

如果像http://ASP.NET Core這樣,自帶了一個(gè)Kestrel來處理HTTP請求,Kestrel是http://ASP.NET Core的宿主,但同時(shí)也是http://ASP.NET Core的一部分。就可以稱之為自宿主(self-host)框架。




搞清楚了這三層的關(guān)系,各種B/S開發(fā)框架的關(guān)系就可以很輕松的厘清了。

譬如說,node.js應(yīng)該屬于哪一層的?很顯然node.js的職責(zé)是提供JS運(yùn)行環(huán)境,將HTTP請求包裝成JS數(shù)據(jù)結(jié)構(gòu),那他顯然是應(yīng)用層框架。那么它下面通常會(huì)有一個(gè)HTTP層框架,例如IIS、nginx之類。其上的話也會(huì)有很多業(yè)務(wù)開發(fā)框架來簡化我們的開發(fā)工作。

而任何一個(gè)應(yīng)用層框架,要么需要搭配一個(gè)WebServer宿主使用,要么它是自宿主的。

關(guān)鍵詞:關(guān)系,價(jià)值,實(shí)用,平臺(tái)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉