OWIN介绍和使用
Posted 搬砖滴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OWIN介绍和使用相关的知识,希望对你有一定的参考价值。
一、概述
1、什么是OWIN
OWIN是Open Web Server Interface for .NET的首字母缩写,官网定义如下:
OWIN在.NET Web Servers与Web Application之间定义了一套标准接口,OWIN的目标是用于解耦Web Server和Web Application。基于此标准,鼓励开发者开发简单、灵活的模块,从而推进.NET Web Development开源生态系统的发展。
怎么理解呢?OWIN是针对.NET平台的开放Web接口,是Web应用程序与Web服务器之间的接口,OWIN通过引入一组抽象接口,解耦了.NET Web应用程序与Web服务器。总结来说:OWIN是对ASP.NET Runtime的抽象,ASP.NET 5.0是OWIN的一种实现。
2、OWIN的作用
IIS作为.NET开发者来说是最常用的Web Server,源于微软产品的紧耦合关系,我们不得不将Website、Web Application、Web API等部署在IIS上,但随着近些年来Web的发展,特别是移动互联网飞速发展,IIS作为Web Server已经暴露出他的不足了。主要体现在两个方面,ASP.NET (System.Web)紧耦合IIS,IIS紧耦合OS,这就意味着,我们的Web Framework必须部署在微软的操作系统上,难以跨平台。所以我们需要OWIN来解耦,在面向对象的世界里,接口往往是解耦的关键:使用OWIN,Web Framework不再依赖IIS和OS。
3、OWIN规范
OWIN定义了四层:
-
Host:主要负责应用程序的配置和启动进程,包括初始化OWIN Pipeline、运行Server。
-
Server:绑定套接字并监听的HTTP请求然后将Request和Response的Body、Header封装成符合OWIN规范的字典并发送到OWIN Middleware Pipeline中
-
Middleware:称之为中间件、组件,位于Server与Application之间,用来处理发送到Pipeline中的请求
-
Application:这是具体的应用程序代码,只不过我们将他们注册到OWIN Pipeline中去处理HTTP 请求,成为OWIN管道的一部分
二、OWIN示例
1、新建控制台项目
2、引入Microsoft.AspNet.WebApi.OwinSelfHost
3、添加Startup 类
using Owin; using System.Web.Http; namespace OWINConsole { 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); } } }
4、添加WebAPI控制器
using System.Collections.Generic; using System.Web.Http; namespace OWINConsole { public class TestController: ApiController { // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "hello", "world" }; } // GET api/<controller>/5 public string Get(int id) { return string.Format("owin {0}", id); } // POST api/<controller> public void Post([FromBody] string value) { } // PUT api/<controller>/5 public void Put(int id, [FromBody] string value) { } // DELETE api/<controller>/5 public void Delete(int id) { } } }
5、在Program.cs中添加如下代码
using Microsoft.Owin.Hosting; using System; namespace OWINConsole { class Program { static void Main(string[] args) { string baseAddress = "http://localhost:9000/"; // 启动 OWIN host WebApp.Start<Startup>(url: baseAddress); Console.WriteLine("程序已启动,按任意键退出"); Console.ReadLine(); } } }
6、项目结构及运行效果
运行效果如下:
7、跨平台
通过OWIN宿主ASP.NET WebAPI还可以完美的兼容Mono 3 及以上版本。可以参考https://www.cnblogs.com/zergcom/p/4619106.html查看如何部署到Linux。
三、参考资料
以上是关于OWIN介绍和使用的主要内容,如果未能解决你的问题,请参考以下文章