自助托管Web API的正确方法是什么?

我不是在寻求最佳实践建议,因为互联网上有很多关于这个主题的博客文章和教程。

我问起了混乱,因为微软对整个自托管程序进行了很多改动,我find的每个教程都采用了不同的,不赞成的或不熟悉的方法。

我的目标是在旧版Windows服务中设置自托管Web API ,以控制来自非Windows客户端的各种长时间运行的任务,例如集成WCF / SOAP客户端的Android应用程序可以真正成为PITA。

我知道WCF能够提供RESTful服务这一事实,但由于Web API非常适合这样的任务,我想我试了一下。

这就是我目前使用OWINKatana )启动我的API的方式:

public class ApiBootstrap { var httpConfiguration = new HttpConfiguration(); // ... configure routes etc. appBuilder.UseWebApi(httpConfiguration); // appBuilder = IAppBuilder var disposable = WebApp.Start(_myBaseUri); } 

但大多数教程都采用不同的方法:

 var config = new HttpSelfHostConfiguration("http://localhost:999"); // ... configure routes etc.. var server = new HttpSelfHostServer(config); server.OpenAsync().Wait(); 

现在,我理解HttpSelfHostServer类来自System.Web.Http.SelfHost而不使用OWIN ,两者都可以正常工作。

但是我几天来一直在努力实现非常简单的任务,例如使用SSL保护连接,创建授权等,只是因为我在这些主题上find的每个教程都引用了不使用OWIN的自托管方法。 但AFAIK, OWINKatana )是微软首选实现自托管的方法。

作为一个初学者,我完全困惑和无助!

编辑 :4个赞成票,1个collections和30个观看仅在6分钟内但仍无法回答。 真的不能说我在这里做的是多汁的咖啡还是只是一个令人难以置信的愚蠢问题。

HttpSelfHostServer现在在Nuget上标记为遗留。 但是,Owin HTTPListener现在只在相当短的时间内进行了RTM。

此外,Owin的一部分意图是确保您设置中间件的方式是相同的,无论您如何托管。 因此,您可能不会看到很多直接针对Owin HttpListener托管的文章,因为它与您正在使用的主机无关。

OwinHttpListener目前使用标准的.net HttpListener,它实际上与HttpSelfHostServer使用的相同。 因此,像SSL这样的东西应该以几乎相同的方式配置。

就身份validation而言,你看过Microsoft.Owin.Security,很可能你需要的一切都在那里。