[.Net/C# 团队]2000人开发交流Qq群:348041382

阿里云优惠券

架构师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 866|回复: 1

[WebAPI] 使用OWIN 为WebAPI 宿主服务

[复制链接]
发表于 2017-1-10 14:24:24 | 显示全部楼层 |阅读模式
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的一种实现。
通过下面几张图可以更直观地理解:

241803517776656.png

241805030596645.png


了解了一些基础理论,下面我们来实际开发。

OWIN Self-Host ASP.NET Web API 2首先我们创建一个空的控制台项目:
443844-20151230110416104-360678543.jpg

然后通过Nuget来安装 Microsoft.AspNet.WebApi.OwinSelfHost
443844-20151230110434307-678751022.jpg
我们也可以打开NuGet控制台..输入命令:Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

然后我们再添加一个OWIN启动类名为Startup 如下:

443844-20151230110502917-1010320994.jpg

Startup中编写代码如下:

  1. using Owin;
  2. using System;
  3. using System.Web.Http;

  4. namespace OwinBlog
  5. {
  6.     public class Startup
  7.     {
  8.         public void Configuration(IAppBuilder appBuilder)
  9.         {
  10.             HttpConfiguration config = new HttpConfiguration();
  11.             config.Routes.MapHttpRoute(
  12.                 name: "DefaultApi",
  13.                 routeTemplate: "api/{controller}/{id}",
  14.                 defaults: new { id = RouteParameter.Optional }
  15.             );

  16.             appBuilder.UseWebApi(config);
  17.         }
  18.     }
  19. }
复制代码

下面我们编写一个WebAPI的控制器,代码如下:

  1. public class AccountController : ApiController
  2.     {
  3.         public string Get()
  4.         {
  5.             return "架构师 www.itsvse.com";
  6.         }
  7.     }
复制代码
最后我们启动OWIN,在Program.cs 加入以下代码:

  1. using Microsoft.Owin.Hosting;
  2. using System;

  3. namespace OwinBlog
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             string baseAddress = "http://localhost:8080/";
  10.             //string baseAddress = "http://+:8080/"; //绑定所有地址,外网可以用ip访问 需管理员权限
  11.             // 启动 OWIN host
  12.             WebApp.Start<Startup>(url: baseAddress);
  13.             Console.WriteLine("程序已启动,按任意键退出");
  14.             Console.ReadLine();
  15.         }
  16.     }
  17. }
复制代码


启动控制台程序,然后访问我们刚才设置的地址:

http://localhost:8080/api/Account


QQ截图20170110141856.jpg



上一篇:IAppBuilder接口没有UseWebApi方法
下一篇:由于启动计算机时出现了页面文件配置问题,Windows 在您的计算机上创建了一个临时
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2017-1-10 14:24:55 | 显示全部楼层
IAppBuilder接口没有UseWebApi方法
http://www.itsvse.com/thread-3453-1-1.html
(出处: 架构师)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|网站地图|架构师 ( 鲁ICP备14021824号-2

Flag Counter

GMT+8, 2017-6-24 06:19

Powered by Discuz! X3.2

© 2001-2014 Comsenz Inc.

快速回复 返回顶部 返回列表