什么是 OWIN ?
OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦, 鼓励为 .NET Web 应用开发简单模块。Owin将web服务器从web应用程序中抽象出来,所以还需要选择一种方式将应用程序链接到选择的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 。
创建一个控制台程序
新建一个Startup类
需要通过nuget安装 Microsoft.AspNet.WebApi.OwinSelfHost
public class Startup { public void Configuration(IAppBuilder appBuilder) { //创建一个HTTP的实例配置 HttpConfiguration config =new HttpConfiguration(); //映射路由 config.Routes.MapHttpRoute( name: "Defaultapi", routeTemplate: "api/{controller}/{id}", defaults: new {id = RouteParameter.Optional} ); //将配置注入OWIN管道中 appBuilder.UseWebApi(config); } }
class Program { static void Main(string[] args) { string addressUrl = "Http://localhost:8880/"; WebApp.Start<Startup>(url: addressUrl); Console.WriteLine("程序已启动,按任意键退出"); Console.ReadLine(); } }
创建一个api控制器 public class BlogController: ApiController { public string GetName() { return "东升,你好"; } }