web-dev-qa-db-ja.com

Web APIをセルフホストする正しい方法は何ですか?

インターネット全体にこのトピックに関するブログ投稿やチュートリアルが多数あるため、ベストプラクティスのアドバイスを求めているわけではありません。

マイクロソフトがセルフホスティング手順全体に多くの変更を加え、私が見つけたすべてのチュートリアルが異なる、非推奨の、またはなじみのないアプローチを採用しているので、私は混乱から質問しています。

私の目標は、レガシーWindowsサービスでセルフホストWeb APIをセットアップして、Windows以外のクライアントからのさまざまな長時間実行タスクを制御することです。 Android[〜#〜] wcf [〜#〜]/[〜#〜] soap [〜#〜]クライアントは実際にはPITAになることができます。

[〜#〜] wcf [〜#〜]がRESTfulサービスを提供できるという事実を知っていますが、WebAPIはそのような作業に本当に適しているので、私はそれを試してみようと思いました。

これが、現在[〜#〜] 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 [〜#〜]カタナ)セルフホスティングを実現するためにMicrosoftが好むアプローチです。

初心者として、私は完全に混乱して無力です!

編集:わずか6分で4つの賛成票、1つのお気に入り、30のビューがありますが、それでも回答はありません。私がここで素晴らしいコーヒーをやっているのか、それとも信じられないほど馬鹿げた質問なのか、本当に言えません。

26
Acrotygma

HttpSelfHostServerは、Nugetでレガシーとしてマークされるようになりました。ただし、Owin HTTPListenerは、かなり短い期間だけRTM)になっています。

また、ミドルウェアのセットアップ方法がホスト方法に関係なく同じであることを保証するというOwinの意図の一部です。したがって、使用しているホストとは無関係であるため、OwinHttpListenerホスティングを直接ターゲットにしている記事はあまり表示されません。

OwinHttpListenerは現在、内部で標準の.net HttpListenerを使用しています。これは、実際にはHttpSelfHostServerが使用したものと同じです。したがって、SSLなどはほぼ同じ方法で構成する必要があります。

認証に関する限り、Microsoft.Owin.Securityを見たことがありますか。おそらく、必要なものはすべてそこにあります。

6
Darrel Miller