咨詢電話:023-6276-4481
熱門文章
電 話:023-6276-4481
郵箱:broiling@qq.com
地址:重慶市南岸區(qū)亞太商谷6幢25-2
OWIN 的全稱是 "Open Web Interface for .NET", OWIN 在 .NET Web 服務(wù)器和 .NET Web 應(yīng)用之間定義了一套標(biāo)準(zhǔn)的接口, 其目的是為了實(shí)現(xiàn)服務(wù)器與應(yīng)用之間的解耦, 鼓勵為 .NET Web 應(yīng)用開發(fā)簡單模塊。
OWIN 是一個開源開放的標(biāo)準(zhǔn), 有助于建設(shè) .NET 開發(fā)的開源生態(tài)環(huán)境,OWIN 定義了如下幾個概念:
服務(wù)器 (Server)
HTTP 服務(wù)器直接與客戶端交互, 并用 OWIN 語義處理請求,服務(wù)器需要一個適配層將客戶請求轉(zhuǎn)換 成 OWIN 語義。 支持 OWIN 的服務(wù)器有 Katana 和 Nowin 。
Web 框架 (Web Framework)
構(gòu)建在 OWIN 之上的自包含的獨(dú)立組件, 向 Web 應(yīng)用提供可用的對象模型或者接口。 Web 框架可 能需要一個適配層來轉(zhuǎn)換 OWIN 語義。 支持 OWIN 的 Web 框架有:
Web 應(yīng)用 (Web Application)
一個特定的 Web 應(yīng)用, 通常構(gòu)建在 Web 框架之上, 使用 OWIN 兼容的服務(wù)器運(yùn)行。
中間件 (Middleware)
特定目的的服務(wù)器和應(yīng)用之間的可插拔組件, 可以監(jiān)視、 路由、 修改請求與響應(yīng)。
宿主 (Host)
應(yīng)用與服務(wù)器所在的進(jìn)程, 主要負(fù)責(zé)應(yīng)用的啟動, 有些服務(wù)器自身也是宿主, 比如 Nowin 。
正如上面所說, OWIN 定義了 .NET Web 服務(wù)器與 .NET Web 應(yīng)用之間的標(biāo)準(zhǔn)接口, 將應(yīng)用與服務(wù)器 解耦, 使得便攜式 .NET Web 應(yīng)用以及跨平臺的愿望成為現(xiàn)實(shí), 標(biāo)準(zhǔn)的 OWIN 應(yīng)用可以在任何 OWIN 兼容的服務(wù)器上運(yùn)行, 不再依賴與 Windows 和 IIS 。
OWIN 通過 NuGet 包的形式發(fā)布, 獲取和使用都非常方便。 下面就先建立一個最簡單的 OWIN 應(yīng)用:
打開 Xamarin Studio, 新建一個 C# 命令行程序, 如下圖所示:
然后打開項(xiàng)目屬性, 確認(rèn)目標(biāo)框架設(shè)置為 Mono/.NET 4.5
, 如下圖所示:
向項(xiàng)目中添加如下幾個 NuGet 包:
Owin
Microsoft.Owin
Microsoft.Owin.Hosting
Microsoft.Owin.Host.HttpListener
添加一個 OWIN Startup 類, 代碼如下:
public class Startup { public void Configuration(IAppBuilder appBuilder) { appBuilder.Run(HandleRequest); } static Task HandleRequest(IOwinContext context) { context.Response.ContentType = "text/plain"; return context.Response.WriteAsync("Hello, world!"); } }
OWIN 約定的處理請求的代理類型是:
Func<IOWinContext, Task> handler
對應(yīng)上面 Startup 類的 HandleRequest 方法, 所以上面的 Startup 類就定義了一個最簡單的 OWIN 應(yīng)用, 向客戶端輸出 Hello, World!
在自動生成的 Program.cs 文件中的 Main 方法中添加如下代碼, 來啟動 OWIN 應(yīng)用:
class MainClass { public static void Main(string[] args) { var url = "http://localhost:8080/"; var startOpts = new StartOptions(url) { }; using (WebApp.Start<Startup>(startOpts)) { Console.WriteLine("Server run at " + url + " , press Enter to exit."); Console.ReadLine(); } } }
現(xiàn)在開始運(yùn)行程序, 命令行顯示如下:
打開瀏覽器, 訪問 http://localhost:8080/ , 得到的響應(yīng)如下:
到目前為止, 沒有 Windows , 更沒有 IIS , OWIN 應(yīng)用就能正常運(yùn)行了。