OWIN初探

作者: 張志敏  發布時間: 2014-11-24 11:45  閱讀: 44937 次  推薦: 33   原文鏈接   [收藏]  

  什么是 OWIN ?

  OWIN 的全稱是 "Open Web Interface for .NET", OWIN 在 .NET Web 服務器和 .NET Web 應用之間定義了一套標準的接口, 其目的是為了實現服務器與應用之間的解耦, 鼓勵為 .NET Web 應用開發簡單模塊。

  OWIN 是一個開源開放的標準, 有助于建設 .NET 開發的開源生態環境,OWIN 定義了如下幾個概念:

  • 服務器 (Server)

    HTTP 服務器直接與客戶端交互, 并用 OWIN 語義處理請求,服務器需要一個適配層將客戶請求轉換 成 OWIN 語義。 支持 OWIN 的服務器有 Katana 和 Nowin 。

  • Web 框架 (Web Framework)

    構建在 OWIN 之上的自包含的獨立組件, 向 Web 應用提供可用的對象模型或者接口。 Web 框架可 能需要一個適配層來轉換 OWIN 語義。 支持 OWIN 的 Web 框架有:

  • Web 應用 (Web Application)

    一個特定的 Web 應用, 通常構建在 Web 框架之上, 使用 OWIN 兼容的服務器運行。

  • 中間件 (Middleware)

    特定目的的服務器和應用之間的可插拔組件, 可以監視、 路由、 修改請求與響應。

  • 宿主 (Host)

    應用與服務器所在的進程, 主要負責應用的啟動, 有些服務器自身也是宿主, 比如 Nowin 。

  為什么使用 OWIN

  正如上面所說, OWIN 定義了 .NET Web 服務器與 .NET Web 應用之間的標準接口, 將應用與服務器 解耦, 使得便攜式 .NET Web 應用以及跨平臺的愿望成為現實, 標準的 OWIN 應用可以在任何 OWIN 兼容的服務器上運行, 不再依賴與 Windows 和 IIS 。

  怎么使用 OWIN

  OWIN 通過 NuGet 包的形式發布, 獲取和使用都非常方便。 下面就先建立一個最簡單的 OWIN 應用:

  1. 打開 Xamarin Studio, 新建一個 C# 命令行程序, 如下圖所示:

    OWIN Hello

  2. 然后打開項目屬性, 確認目標框架設置為 Mono/.NET 4.5 , 如下圖所示:

  3. 向項目中添加如下幾個 NuGet 包:

    • Owin
    • Microsoft.Owin
    • Microsoft.Owin.Hosting
    • Microsoft.Owin.Host.HttpListener
  4. 添加一個 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

    對應上面 Startup 類的 HandleRequest 方法, 所以上面的 Startup 類就定義了一個最簡單的 OWIN 應用, 向客戶端輸出 Hello, World!

  5. 在自動生成的 Program.cs 文件中的 Main 方法中添加如下代碼, 來啟動 OWIN 應用:

    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();
            }
        }
    }
  6. 現在開始運行程序, 命令行顯示如下:

    打開瀏覽器, 訪問 http://localhost:8080/ , 得到的響應如下:

    OWIN Hello

  到目前為止, 沒有 Windows , 更沒有 IIS , OWIN 應用就能正常運行了。

33
1
 
標簽:OWIN
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()