引用
寄宿ASP.NET Web API 不一定需要IIS 的支持,我们可以采用Self Host 的方式使用任意类型的应用程序(控制台、Windows Forms 应用、WPF 应用甚至是Windows Service)作为宿主。
一、摘要
本期同样带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现采用微软的ASP.NET OWIN技术承载WebAPI服务,如果您对本期的教程内容感兴趣,那么请允许让阿笨带着大家一起学习吧!
废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。
二、概念名称含义解释
2.1、Host和Self—Host分别是什么意思?
Host:中文解释是“宿主”的意思。Self—Host中文解释是“自我宿主”的意思。Host宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自主宿主SelfHost就是说,它可以自己去监听自己的服务,如你可以把一个web应用程序宿主到一个console控制台程序上,或者把一个webApi宿主到一个控制台应用程序、桌面应用程序或者windowService上,这都是可以的。
2.2、OWIN到底是神马东西?
OWIN的英文全称是Open Web Interface for .NET。
OWIN是针对.NET平台的开放Web接口,那Web接口是谁和谁之间的接口呢?OWIN就是.NET Web应用程序与Web服务器之间的接口。
OWIN定义了.NET web服务器和web应用程序间的抽象。OWIN通过将web服务器从应用程序解耦,使得为.NET web开发创建中间件和移植web应用程序到其他托管——比如,Window服务或其他进程的自我托管——变得更加容易。
2.3、基于OWIN规范实现的HTTP服务器有哪些?
支持OWIN标准的WEB应用的高性能的跨平台HTTP服务器,比如:TinyFox、Jexus Web Server 等等。
2.4、Owin协议的实现项目?
上面说了一大堆 Owin 的东西,而且是“虚”的东西,因为它只是定义,并不包含任何实现,基于 Owin 协议实现的组件和框架集合x项目有哪些?如下:
Katana、Nowin、Fracture等等。(我理解也不是很深刻,不敢随便乱写,怕误导别人!!!)
四、需求分析
4.1、上期回顾
上一期我们分享了基于开源SuperSocket实现客户端和服务端通信项目实战实现了WEB网页提交打印数据给WEB服务端,WEB服务端将接受的打印数据通过Socket通讯服务器推送给指定的客户端。
我们能否简化上面的调用过程步骤呢?
直接让客户端将打印数据给本地的客户端,而无须再通过Socket通讯服务端进行中转。
4.2、原理图
4.3、那么我们今天要解决的问题可以总结为下面的一句话:
如何让WEB网页端直接以HTTP方式访问本地桌面客户端,就像访问远程IIS上的Web应用程序一样?
4.4、实现WEB应用程序的Self-Host解决方案
通过HttpListener实现简单的Http服务
基于WCF堆栈的自宿主SelfHosting
采用ASP.NET HttpSelfHost来承载WebAPI服务 (.NET 4.0)
采用ASP.NET OWIN来承载WebAPI服务(.NET4.5 微软推荐使用)
等等......
五、涉及覆盖的知识点
ASP.NET WebAPI HttpSelfHost/OWIN 如何以桌面应用程序方式,宿主承载WebApi服务;
ASP.NET WebAPI HttpSelfHost/OWIN 如何让服务端支持CROS跨越访问;
IE10.0 以下浏览器通过XDomainRequest实现CORS访问;
六、源码在线解读和演示
腾讯课堂
网易云课堂
不信的话,扫一扫