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

Acr*_*gma 25 c# wcf android asp.net-web-api owin

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

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

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

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

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

public class ApiBootstrap {

    var httpConfiguration = new HttpConfiguration();
    // ... configure routes etc.

    appBuilder.UseWebApi(httpConfiguration);     // appBuilder = IAppBuilder
    var disposable = WebApp.Start<ApiBootstrapper>(_myBaseUri);

}
Run Code Online (Sandbox Code Playgroud)

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

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

var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
Run Code Online (Sandbox Code Playgroud)

现在,我知道这个HttpSelfHostServer课程来自System.Web.Http.SelfHost和不使用OWIN,两者都运行良好.

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

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

编辑:仅6分钟即可获得4次赞成,1次收视和30次观看,但仍无法回答.真的不能说我在这里做的是好吃的咖啡还是只是一个令人难以置信的愚蠢问题.

Dar*_*ler 6

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

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

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

就身份验证而言,您是否看过Microsoft.Owin.Security,很可能您需要的一切都在那里.