欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

OWIN產(chǎn)生的背景以及簡單介紹

系統(tǒng) 1714 0

OWIN產(chǎn)生的背景以及簡單介紹

隨著VS2013的發(fā)布,微軟在Asp.Net中引入了很多新的特性,比如使用新的權(quán)限驗證模塊Identity, 使用Async來提高Web服務(wù)器的吞吐量和效率等。其中一個不得不提的是OWIN和Katana. OWIN的全稱是Open Web Interface For .Net, OWIN是.Net開源社區(qū)借鑒Ruby而制定的.Net Web開發(fā)架構(gòu),有著非常簡單的規(guī)范定義,同時極度降低了模塊間耦合。OWIN并不是一個具體的實現(xiàn),而只是一個規(guī)范,用來指導(dǎo)如何構(gòu)建一個符合OWIN標(biāo)準(zhǔn)的Web生態(tài)環(huán)境。微軟引入并推廣OWIN,同時依照OWIN規(guī)范,實現(xiàn)了Katana。

可以這么說,OWIN將會使Asp.net煥發(fā)第二春。下面,就讓我們一步一步走近OWIN和Katana,一睹芳容。

閱讀目錄:

一. 回顧Asp.net的發(fā)展歷史

二. 解決問題的思路

三. OWIN介紹

四,OWIN前景以及預(yù)測

一, 回顧Asp.net的發(fā)展歷史

不知不覺,Asp.net已經(jīng)伴隨我們了10多個年頭,漸漸步入中年。面對日新月異的Web開發(fā)變革,Asp.net已經(jīng)顯得有些力不從心。為什么會出現(xiàn)這種情況,讓我們來回顧一下Asp.net的發(fā)展歷史:

Asp階段

最初開發(fā)Web,使用的是Asp, 這是一種嵌入在頁面中的腳本語言。Asp的優(yōu)勢是簡單,上手快,但是隨著開發(fā)的日益復(fù)雜和Web程序的不斷龐大,Asp這種邏輯代碼和頁面Html混在一起的開發(fā)方式已經(jīng)不能夠適應(yīng)了。

Asp.net Web Form階段

由于Asp的短板,升級Asp,打造一個新的Web開發(fā)平臺已經(jīng)是必然的事情了。猜想微軟可能想讓W(xué)inform上的開發(fā)者方便地遷移到Web開發(fā)上來,于是打造了一個開發(fā)過程和Winform及其類似的開發(fā)方式,這就是Asp.Net.

Asp.net Web Form在當(dāng)時無疑是先進(jìn)的,但是隨著時間的推移,它的一些問題也暴露出來:
Asp.net中大部分的核心類都包含在System.Web.dll中,而System.Web.dll是包含在.Net Framework中的,這就意味著如果要發(fā)布一個新版本的Asp.net必須伴隨著新的.Net Framework一起發(fā)布,這導(dǎo)致了Asp.net更新頻率降低。另外,System.Web.dll是和IIS耦合的,使得Asp.net程序無法遷移到其它服務(wù)器上。

積極的改變

新的Asp.net MVC改變了過去的缺點(diǎn),它是作為獨(dú)立于.Net Framework發(fā)布的。所以MVC的版本變化,是無需受制于.Net Framework. 開發(fā)MVC的項目組就可以自主的快速開發(fā)和發(fā)布新的版本的MVC.
更進(jìn)一步,在開發(fā)和發(fā)布Web API的時候,甚至都沒有用到任何包含在System.Web.dll中的類型,這意味著:

  • Web API完全是無外部依賴的,它通過Nuget快速的發(fā)布和更新。
  • 不依賴于System.Web.dll, 也就意味著不依賴于IIS的服務(wù),所以Web API是可以運(yùn)行在其它宿主進(jìn)程中的, 比如控制臺程序,windows service等。

未來:更加靈活的框架

通過解構(gòu)Asp.net開發(fā)中的一個一個框架組件,微軟就能夠更加快速的迭代和通過Nuget發(fā)布新的版本,添加新的增強(qiáng)功能。
未來更加靈活的框架就是我們可以隨意根據(jù)項目需要,組合這些組件,然后運(yùn)行在支持的Host上。

二,解決問題的思路

在引入OWIN之前,我們來對Web請求到響應(yīng)的過程進(jìn)行 抽象 :
一個Web請求的全過程是一個簡單的輸入和輸出, 輸入是request包含的頭信息、cookie、數(shù)據(jù)等信息,輸出是最后的Html. 這就好像是放進(jìn)去面粉,最后出來的是做好的饅頭。但是從面粉變成饅頭卻要經(jīng)歷很多工序,這一道一道的工序,就組成了整個流程。非常類似于裝飾者模式,每一個裝飾者對象都遵循同樣的接口,這樣我們就可以將不同的裝飾者拼接起來。

下圖是借鑒的python中的WSGI規(guī)范(Python Web Server Gateway Interface), 和下面將講到的OWIN基本類似. Request經(jīng)過一層層的洋蔥皮,最后輸出。這一層一層的洋蔥皮就是我們的符合OWIN規(guī)范的組件。

pylons_as_onion ?

三,OWIN介紹

OWIN就是按照上面思路和目標(biāo)制定的一個規(guī)范,不包含任何具體實現(xiàn) 。其目的是在web服務(wù)器和應(yīng)用程序之間隔離出一個抽象層,使它們之間解耦。
OWIN設(shè)計的2個目標(biāo):? 簡單,以及盡量少的依賴其它的框架類型。
這樣就能夠:

  • 新的組件能夠非常簡單的開發(fā)和應(yīng)用
  • 程序能夠簡便地在host和OS上遷移

OWIN核心定義

OWIN將web應(yīng)用中的request, response, session, cookie等所有相關(guān)信息都簡化成下面的字典 。本質(zhì)上來說,這個字典就包含了一個web請求的所有上下文信息。
一個符合OWIN的web服務(wù)器,需要將請求信息包裝成下面的字典類型,傳遞到下一層中。而下一層的組件或者應(yīng)用程序,所要做的就是讀取,修改這個字典的數(shù)據(jù)。最后,Web服務(wù)器得到這個層層處理過的字典,然后輸出網(wǎng)頁到客戶端

        IDictionary<string, object>
      

下面是具體的定義

Key Name

Value Description

"owin.RequestBody"

A Stream with the request body, if any. Stream.Null MAY be used as a placeholder if there is no request body. See? Request Body .

"owin.RequestHeaders"

An? IDictionary<string, string[]><string, string[]="">? of request headers. See? Headers .

"owin.RequestMethod"

A? string ?containing the HTTP request method of the request (e.g.,? "GET" ,? "POST" ).

"owin.RequestPath"

A? string ?containing the request path. The path MUST be relative to the "root" of the application delegate; see? Paths .

"owin.RequestPathBase"

A? string ?containing the portion of the request path corresponding to the "root" of the application delegate; see? Paths .

"owin.RequestProtocol"

A? string ?containing the protocol name and version (e.g.? " HTTP/1.0 " ?or? " HTTP/1.1 " ).

"owin.RequestQueryString"

A? string ?containing the query string component of the HTTP request URI, without the leading “?” (e.g.,? "foo=bar&baz=quux" ). The value may be an empty string.

"owin.RequestScheme"

A? string ?containing the URI scheme used for the request (e.g.,? "http" ,? "https" ); see? URI Scheme .

另外一個核心是application delegate ,這是所有運(yùn)行在OWIN協(xié)議下的組件都需要遵循的接口

        Func<IDictionary<string, object>, Task>;
      

這樣定義的原因是:?

  • 由于依賴少,寫一個component非常容易和簡單
  • 異步設(shè)計使得程序的運(yùn)行效率更高,特別是在遇到一些I/O密集的操作時
  • application delegate 是可執(zhí)行的最小單元,OWIN components可以非常容易的互相連接組成一個Http處理管道

四,OWIN前景以及預(yù)測

由于使用OWIN規(guī)范,使得Asp.net進(jìn)化的更加快,對于新的東西也能夠快速響應(yīng)。

OWIN的發(fā)展,將來會有越來越多的基于OWIN的應(yīng)用框架出現(xiàn)(中間件),也將會由更多的OwinHost出現(xiàn),其一就是微軟先發(fā)制人Katana,它能夠運(yùn)行于Windows中,獨(dú)立于IIS為支持OWIN協(xié)議的框架提供宿主支持;而另外一款則是率先支持OWIN協(xié)議的運(yùn)行于Linux以及FreeBSD的Jexus Web Server(需要Jexus 5.6 以上版本).

盡管Asp.Net年紀(jì)很大,但是現(xiàn)在也越來越潮了,小伙子們有的東西,它也有了,而且以后對時尚的敏感度會更加敏銳。而它所具有的穩(wěn)定,成熟氣質(zhì),卻是其它小伙子難以具備的。這是.Net最好的時代,不是嗎?

OWIN產(chǎn)生的背景以及簡單介紹


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线不卡一区 | 毛片.com | 亚洲免费人成在线视频观看 | 久久99国产亚洲精品观看 | 91香蕉人成app | 无限资源动漫精彩日本 | 六月色播 | 久草8 | 二区三区偷拍浴室洗澡视频 | 日本无卡无吗在线 | chinese xxxxhd videos麻豆 | 日日摸夜夜添夜夜 | 亚洲欧美日韩精品一区 | 亚洲男人的天堂久久精品 | 天堂在线www网亚洲 欧美 日韩 | 国产成人免费无庶挡视频 | 久久亚洲最大成人网4438 | 91视频麻豆视频 | 精品久久一区二区三区 | 夜夜未满 18勿进的爽影院 | 日韩高清中文字幕 | 一级片视频免费 | 国产精品亚洲一区 | 欧美三级视频在线观看 | 国产视频资源在线观看 | 性xxxx免费观看视频 | 国产成人一区二区三区久久久 | 久久视频国产 | 黄色免费网站在线观看 | 成人永久福利免费观看 | 精品一区二区久久久久久久网站 | 精品综合 | 日韩免费观看视频 | 精品欧美乱码久久久久久1区2区 | 久久中文字幕一区二区三区 | 超碰97人 | 国产在线资源 | 成人毛片一区 | 国产精品毛片久久久久久 | 欧美精品aaa久久久影院 | 色精品|