OWIN的英文全稱是Open Web Interface for .NET。 如果僅從名稱上解析,可以得出這樣的信息:OWIN是針對.NET平臺的開放Web接口。 那Web接口是誰和誰之間的接口呢?是Web應用程序與Web服務器之間的接口,OWIN就是.NET Web應用程序與Web服務器之間的接口。 為什么需要這樣一個接口呢?因為.NET Web應用程序是運行于Web服務器之中的,.NET Web應用程序需要通過Web服務器接收用戶的請求,并且通過Web服務器將響應內容發送用戶。如果沒有這樣一個接口,.NET Web應用程序就要依賴于所運行的具體Web服務器,比如ASP.NET應用程序要依賴于IIS。有了這個接口,ASP.NET應用程序只需依賴這個抽象接口,不用關心所運行的Web服務器。 所以,OWIN的作用就是通過引入一組抽象接口,解耦了.NET Web應用程序與Web服務器,再次體現了接口的重要性。在軟件開發中,每次解耦都是一次很大的進步。 【進一步的理解】 OWIN是對ASP.NET Runtime的抽象。 ASP.NET 5.0是OWIN的一種實現。 通過下面幾張圖可以更直觀地理解:
了解了一些基礎理論,下面我們來實際開發。
OWIN Self-Host ASP.NET Web API 2首先我們創建一個空的控制臺項目:
然后通過Nuget來安裝 Microsoft.AspNet.WebApi.OwinSelfHost
我們也可以打開NuGet控制臺..輸入命令:Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
然后我們再添加一個OWIN啟動類名為Startup 如下:
Startup中編寫代碼如下:
- using Owin;
- using System;
- using System.Web.Http;
- namespace OwinBlog
- {
- public class Startup
- {
- public void Configuration(IAppBuilder appBuilder)
- {
- HttpConfiguration config = new HttpConfiguration();
- config.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{id}",
- defaults: new { id = RouteParameter.Optional }
- );
- appBuilder.UseWebApi(config);
- }
- }
- }
復制代碼
下面我們編寫一個WebAPI的控制器,代碼如下:
- public class AccountController : ApiController
- {
- public string Get()
- {
- return "架構師 www.peaoiv.live";
- }
- }
復制代碼 最后我們啟動OWIN,在Program.cs 加入以下代碼:
- using Microsoft.Owin.Hosting;
- using System;
- namespace OwinBlog
- {
- class Program
- {
- static void Main(string[] args)
- {
- string baseAddress = "http://localhost:8080/";
- //string baseAddress = "http://+:8080/"; //綁定所有地址,外網可以用ip訪問 需管理員權限
- // 啟動 OWIN host
- WebApp.Start<Startup>(url: baseAddress);
- Console.WriteLine("程序已啟動,按任意鍵退出");
- Console.ReadLine();
- }
- }
- }
復制代碼
啟動控制臺程序,然后訪問我們剛才設置的地址:
http://localhost:8080/api/Account
|