什么是自承载Web API的正确方法?

我并不是要求一个最佳实践的build议,因为有很多关于这个话题在整个互联网上的博客文章和教程。

由于微软对整个自托pipe程序做了很多改变,我发现每一个教程都采取了不同的,不赞成的或者不熟悉的方法,所以我只是在混淆。

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

我知道WCF能够提供一个RESTful服务的事实,但是由于Web API非常适合这样的任务,所以我认为我给了它一个镜头。

这是我目前开始使用OWINKatana )托pipe的API:

public class ApiBootstrap { var httpConfiguration = new HttpConfiguration(); // ... configure routes etc. appBuilder.UseWebApi(httpConfiguration); // appBuilder = IAppBuilder var disposable = WebApp.Start<ApiBootstrapper>(_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保护连接,创build授权等等,仅仅是因为我在这些主题上find的每个教程都引用了不使用OWIN的自托pipe方法。 但是AFAIK, OWINKatana )则是微软首选实现自主托pipe的方法。

作为初学者,我完全困惑和无奈!

编辑 :4 upvotes,1喜和30在6分钟内的意见,但仍然没有答案。 真的不能说我是否在这里做了很好的咖啡,或者只是一个令人难以置信的愚蠢的问题。

Related of "什么是自承载Web API的正确方法?"

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

此外,Owin确保您安装中间件的方式的一部分是相同的,无论您如何托pipe。 所以你不可能直接看到很多针对Owin HttpListener托pipe的文章,因为它应该与你使用的主机无关。

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

就authentication而言,你是否看过Microsoft.Owin.Security,很可能你需要的只是在那里。