我不是在寻求最佳实践建议,因为互联网上有很多关于这个主题的博客文章和教程。
因为微软对整个自托管程序进行了很多改动,而且我找到的每个教程都采用了不同的,不赞成的或不熟悉的方法,所以我要求混淆。
我的目标是在旧版Windows服务中设置自托管 Web API ,以控制来自非Windows客户端的各种长时间运行的任务,例如集成了的Android应用程序WCF / SOAP 客户端实际上可以是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);
}
但大多数教程都采用不同的方法:
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 保护连接,创建授权等,只是因为我在这些主题上找到的每个教程都引用了自托管方法不使用 OWIN 。但AFAIK, OWIN ( Katana )是微软首选实现自托管的方法。
作为初学者,我完全感到困惑和无助!
编辑:仅仅6分钟内有4个赞成票,1个收藏夹和30个观看次数,但仍无法回答。真的不能说我在这里做的是好吃的咖啡还是只是一个令人难以置信的愚蠢问题。
答案 0 :(得分:6)
HttpSelfHostServer现在在Nuget上标记为遗留。但是,Owin HTTPListener现在只在相当短的时间内进行了RTM。
此外,Owin的一部分意图是确保无论您如何托管,设置中间件的方式都是相同的。所以你不会看到许多直接针对Owin HttpListener托管的文章,因为它与你正在使用的主机无关。
OwinHttpListener目前在封面下使用标准的.net HttpListener,实际上与HttpSelfHostServer使用的内容相同。因此,像SSL这样的东西应该以几乎相同的方式配置。
就身份验证而言,你看过Microsoft.Owin.Security,很可能你需要的一切都在那里。