C# Owin初探 概念理解
目錄
1.Owin定義
2.為什么要用Owin
3.作用
4.總結(jié)
1.Owin定義
Owin是Open Web Interface For .NET。也就是.Net開(kāi)源的web接口,聽(tīng)起來(lái)口氣有點(diǎn)大,值得我們下面深入了解。
2.為什么要用Owin
百度百科的CV大法
過(guò)去,IIS作為.NET開(kāi)發(fā)者來(lái)說(shuō)是最常用的Web Server(沒(méi)有之一),源于微軟產(chǎn)品的緊耦合關(guān)系,我們不得不將Website、Web Application、Web API等部署在IIS上,事實(shí)上在2010年前并沒(méi)有什么不妥,但隨著近些年來(lái)Web的發(fā)展,特別是移動(dòng)互聯(lián)網(wǎng)飛速發(fā)展,IIS作為Web Server已經(jīng)暴露出他的不足了。主要體現(xiàn)在兩個(gè)方面,ASP.NET (System.Web)緊耦合IIS,IIS緊耦合OS,這就意味著,我們的Web Framework必須部署在微軟的操作系統(tǒng)上,難以跨平臺(tái)。
正是由于微軟產(chǎn)品系緊耦合的關(guān)系,才造成跨平臺(tái)上的不足,這也是被飽受詬病。所以我們需要OWIN來(lái)解耦,在面向?qū)ο蟮氖澜缋?#xff0c;接口往往是解耦的關(guān)鍵,如下圖所示:
使用OWIN,Web Framework不再依賴IIS和OS,這意味著你能使用任何你想的來(lái)替換IIS(比如:Katana或者Nowin),并且在必要時(shí)隨時(shí)升級(jí),而不是更新操作系統(tǒng)。當(dāng)然,如果你需要的話,你可以構(gòu)建自定義的宿主和Pipeline去處理Http請(qǐng)求。
這一切的改變都是由于OWIN的出現(xiàn),他提供了明晰的規(guī)范以便我們快速靈活的去擴(kuò)展Pipeline來(lái)處理Http請(qǐng)求,甚至可以不寫(xiě)任何一句代碼來(lái)切換不同的Web Server,前提是這些Web Server遵循OWIN規(guī)范。
3.作用
Owin完全解耦了IIS,Owin可以在任何的服務(wù)器上使用。為什么呢?
它是web服務(wù)器的一個(gè)標(biāo)準(zhǔn)接口,借助這一接口使得web應(yīng)用和服務(wù)器解耦。Owin在.Net web服務(wù)器和.Net web應(yīng)用之間定義了一套標(biāo)準(zhǔn)的接口,其目的是為了實(shí)現(xiàn)服務(wù)器與應(yīng)用之間的解耦。基于此標(biāo)準(zhǔn),鼓勵(lì)開(kāi)發(fā)者開(kāi)發(fā)簡(jiǎn)單、靈活的模塊,從而推進(jìn).NET Web Development開(kāi)源生態(tài)系統(tǒng)的發(fā)展。
OWIN定義了4層:
Host:主要負(fù)責(zé)應(yīng)用程序的配置和啟動(dòng)進(jìn)程,包括初始化OWIN Pipeline、運(yùn)行Server。
Server:這是實(shí)際的Http Server,綁定套接字并監(jiān)聽(tīng)的HTTP請(qǐng)求然后將Request和Response的Body、Header封裝成符合OWIN規(guī)范的字典并發(fā)送到OWIN Middleware Pipeline中,最后Application為Response Data填充合適的字段輸出。
Middleware:稱之為中間件、組件,位于Server與Application之間,用來(lái)處理發(fā)送到Pipeline中的請(qǐng)求,這類組件可以是簡(jiǎn)單的Logger或者是復(fù)雜的Web Framework比如Web API、SignalR,只要Sever連接成功,Middleware中間件可以是任何實(shí)現(xiàn)應(yīng)用程序委托的組件。
Application:這是具體的應(yīng)用程序代碼,可能在Web Framework之上。對(duì)于Web API、SignalR這類Web Framework中間件而言,我們僅僅是改變了他們的托管方式,而不是取代ASP.NET WEB API、SignalR原先的應(yīng)用程序開(kāi)發(fā)。所以該怎么開(kāi)發(fā)就怎么開(kāi)發(fā),只不過(guò)我們將他們注冊(cè)到OWIN Pipeline中去處理HTTP請(qǐng)求,成為OWIN管道的一部分,所以此處的Application即正在意義上的處理程序代碼。
4.總結(jié)
OWIN的思想就是簡(jiǎn)單、靈活——通過(guò)要求OWIN中間件只依賴AppFun類型,為開(kāi)發(fā)基于OWIN的中間件提供了的最低門(mén)檻。同時(shí),通過(guò)使用環(huán)境字典在各個(gè)中間件之間進(jìn)行信息的傳遞,而非傳統(tǒng)ASP.NET(System.Web)中使用HttpContext貫穿ASP.NET整個(gè)生命周期來(lái)傳遞。
總結(jié)
以上是生活随笔為你收集整理的C# Owin初探 概念理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用事务操作SQLite数据批量插入,提
- 下一篇: 基金是每天都有收益吗