OWIN初探(转)
什么是 OWIN ?
OWIN?的全稱是 "Open Web Interface for .NET", OWIN 在 .NET Web 服務器和 .NET Web 應用之間定義了一套標準的接口, 其目的是為了實現(xiàn)服務器與應用之間的解耦, 鼓勵為 .NET Web 應用開發(fā)簡單模塊。
OWIN 是一個開源開放的標準, 有助于建設 .NET 開發(fā)的開源生態(tài)環(huán)境,OWIN 定義了如下幾個概念:
-
服務器 (Server)
HTTP 服務器直接與客戶端交互, 并用 OWIN 語義處理請求,服務器需要一個適配層將客戶請求轉換 成 OWIN 語義。 支持 OWIN 的服務器有?Katana?和?Nowin?。
-
Web 框架 (Web Framework)
構建在 OWIN 之上的自包含的獨立組件, 向 Web 應用提供可用的對象模型或者接口。 Web 框架可 能需要一個適配層來轉換 OWIN 語義。 支持 OWIN 的 Web 框架有:
- Nancy
- SignalR
- WebApi
- FubuMVC
- Simple.Web
- DuoVia.Http
-
Web 應用 (Web Application)
一個特定的 Web 應用, 通常構建在 Web 框架之上, 使用 OWIN 兼容的服務器運行。
-
中間件 (Middleware)
特定目的的服務器和應用之間的可插拔組件, 可以監(jiān)視、 路由、 修改請求與響應。
-
宿主 (Host)
應用與服務器所在的進程, 主要負責應用的啟動, 有些服務器自身也是宿主, 比如 Nowin 。
為什么使用 OWIN
正如上面所說, OWIN 定義了 .NET Web 服務器與 .NET Web 應用之間的標準接口, 將應用與服務器 解耦, 使得便攜式 .NET Web 應用以及跨平臺的愿望成為現(xiàn)實, 標準的 OWIN 應用可以在任何 OWIN 兼容的服務器上運行, 不再依賴與 Windows 和 IIS 。
怎么使用 OWIN
OWIN 通過 NuGet 包的形式發(fā)布, 獲取和使用都非常方便。 下面就先建立一個最簡單的 OWIN 應用:
-
打開 Xamarin Studio, 新建一個 C# 命令行程序, 如下圖所示:
-
然后打開項目屬性, 確認目標框架設置為?
Mono/.NET 4.5?, 如下圖所示: -
向項目中添加如下幾個 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
對應上面 Startup 類的 HandleRequest 方法, 所以上面的 Startup 類就定義了一個最簡單的 OWIN 應用, 向客戶端輸出?Hello, World!
-
在自動生成的 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();}} } -
現(xiàn)在開始運行程序, 命令行顯示如下:
打開瀏覽器, 訪問 http://localhost:8080/ , 得到的響應如下:
到目前為止, 沒有 Windows , 更沒有 IIS , OWIN 應用就能正常運行了。
轉載于:https://www.cnblogs.com/tianma3798/p/4974899.html
總結
- 上一篇: CentOS6.5 下sciki-lea
- 下一篇: spark1.4加载mysql数据 创建