Owin中介軟體動手做

2021-09-20 08:36:40 字數 2594 閱讀 4337

摘要:本文目的是了解owin基本原理。講述如何從控制台建立乙個自宿主的owinhost,然後再編寫一兩個中介軟體

首先通過visualstudio建立乙個控制台應用

然後新增owin的nuget包引用

需要的包如下

owin

microsoft.owin

microsoft.owin.hosting

microsoft.owin.host.httplistener

準備工作到此結束

public class startup

static task handlerequest(iowincontext context)

}

當owinhost執行時,會首先載入startup類,configuration方法是必須有的,在configuration方法中向owin管道插入中介軟體,所有的請求都是中介軟體處理。

這個中介軟體做的事很簡單,就是向響應寫入乙個字串,無論請求是什麼結果都是一樣的。

static void main(string args)

}

startoptions類用來指定一些啟動引數,最少應該指定乙個url,這裡一併指定了使用8080埠

啟動程式控制臺輸出如下

server run at http://localhost:8080/ , press enter to exit.
用瀏覽器開啟 http://localhost:8080/

效果如下:

`hello world from myowin`
嘗試更改路徑你得到的始終是乙個結果

你可以嘗試將configuration中的**注釋掉,在執行程式,這是訪問將得到空頁面,http**也將是404,因為owin管道中沒有中介軟體處理請求。

我們編寫乙個名為ding的中介軟體

public class dingmiddleware : owinmiddleware

public override task invoke(iowincontext context)

if (next != null)

return task.completedtask;

}}

這個中介軟體在檢測到訪問路徑是/home/index時向response中寫入一句話,然後檢測是否有下乙個中介軟體,如果有就呼叫。

public static class mymidlewareextention

}

修改configuration中的**:

現在管道中有兩個中介軟體了,現在執行程式,在位址列中輸入http://localhost:8080/home/index將得到如下結果

hello world from home/indexhello world from myowin

因為ding中介軟體在處理之後繼續呼叫了接下來的中介軟體

輸入其他路徑將得到hello world from myowin這個結果

public class dididimiddleware : owinmiddleware

public override task invoke(iowincontext context)

if (next != null)

return task.completedtask;

}}

這個中介軟體在位址列querystring(?後邊的部分)等於boom時結束請求。

mymidlewareextention**修改如下:

public static class mymidlewareextention

}

startup類修改如下:

public class startup

}

**改動如下:

public class defaultmiddleware : owinmiddleware

public override task invoke(iowincontext context)

!");

return task.completedtask;

}}

public class startup

}

執行程式觀察結果是否符合預期。

當位址中含有?boom時會的到乙個boom!boom!boom!

總結:owin的管道概念其實簡單易懂,在程式啟動之前,向裡面插入中介軟體,中介軟體決定請求是否繼續向下走。在管道中的中介軟體可以拿到請求的所有資訊以對請求進行處理,管道裡的中介軟體執行結束之後,這個請求就被處理完成了,然後發回瀏覽器。

自己動手做網線

幾天沒在,公司位置上的網線就不翼而飛了,鬱悶,還是要硬著頭皮再到人事處申請做一根。可問題又來了,上次還是請別人幫我做的,現在怎麼好意思再求他呢。無奈,我決定自己嘗試做一下,其實也沒有什麼難的,只是從沒做過,心裡沒底,更怕不小心做壞了 還是到人事拿材料,甚是麻煩的。鼓了下勇氣,我就開始自己動手做了。之...

Petroglyph專訪 中介軟體做遊戲

xsolla有幸與petroglyph的總裁及創始人michael legg進行了對話。這是及時戰略遊戲中對主要一家公司。由前westwood的員工 創辦,還設計了一塊新的rts遊戲 grey goo,會將傳統的命令與征服的遊戲情景提公升到乙個全新的階段。michael講解了一些遊戲發展過程,並介紹...

Redis做訊息中介軟體MQ

redis的pub sub功能相較於常見的rabbitmq等訊息中介軟體還是有一些差異,在使用前需要進行甄別,確認是否適用當前專案,畢竟技術選型脫離現實是耍流氓。關於 pub sub 功能,redis共提供了六個命令 網上有很多這方面的文章,這裡就不貼了,使用難度不大。由於服務基本都是多例項部署,當...