1

オンプレミスMSサービスファブリッククラスタを立ち上げたばかりです。私はいくつかのWebAPIを持っています。サービスファブリックプロジェクトを作成して移行することなく標準4.5 WebAPIを使用してサービスファブリックでホストする方法に関するリソースを探しています。ちょうど複雑すぎるようです。ホストWepAPI on Service Fabric

私はいくつかのService Fabricサンプルプロジェクトを見ており、すべてのプロジェクトがService Fabricと強く結びついているようです。私の目標は、これらのアプリケーションがサービスファブリックを認識しないようにすることです。

情報のリンクは大変ありがとうございます。

答えて

0

自己ホスト型Webサーバー(たとえば、IISではなくKatana)を使用するスタンドアロンWebアプリケーションの場合は、単にGuest Executableとして実行できます。

自己ホスティングではなく、IISのように実行するために別のWebサーバーが必要な場合は、Containerで実行することができます。

+0

ありがとうございます! –

1

私たちは、この方法をした:

  • は、私たちのWebAPIのと同じ溶液中のサービス・ファブリック・プロジェクトを作成しました。
  • ServiceFabricHostプロジェクトの内部では、HttpListenerServiceを作成して、サービスファブリックを使用してポートを公開しました。これはSelfHosted WebApiと同じです。
  • 必要なエンドポイントを開くようにServiceFabricHostを設定します。
  • WebApiプロジェクトへの参照を追加する
  • WebApiスタートアップを使用して、IAppBuilderを送信し、ポートやURLなどの外部(SF)構成でAPIを構成します。

秘密は次のとおりです。自分でホストされたWeb APIを作成するときは、asp.netドキュメントのようなコンソールアプリケーションを作成します。サービスファブリックでは、コンソールをServiceFabricServiceに置き換えます。これはConsoleApplicationと似ていますが、この場合はステートレスサービスになります。

この場合、HttpListenerServiceにはステートレスサービスを使用しました.StateFullサービスが必要な場合は、信頼できるコレクションを使用するようにAPIをリファクタリングする必要があります。私は同じ問題を抱えていたし、スタートアップ()クラスでHttpConfigurationオブジェクトにDependencyResolver.GetService()メソッドを使用して、それを解決し https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication-webapi/

+0

この情報をありがとうございます! –

0

仲間Vaclacは、このための素晴らしいチュートリアルを作成しました。新しいService Fabric Stateless/Statefull WebAPIプロジェクトを作成します。スタートアップ()クラスでは、次のコードを追加します。これは、あなたが新しいプロジェクトにコードベース全体を移行することなく、サービスの生地にあなたの既存のAPIを展開することができます

public static class Startup 
{ 
    // This code configures Web API. The Startup class is specified as a type 
    // parameter in the WebApp.Start method. 
    public static void ConfigureApp(IAppBuilder appBuilder) 
    { 
     // Configure Web API for self-host. 
     HttpConfiguration config = new HttpConfiguration(); 
     // Allow custom routes in controller attributes. 
     config.MapHttpAttributeRoutes(); 
     config.Routes.MapHttpRoute(
      name: "Default", 
      routeTemplate: "{controller}/{action}/{id}", 
      defaults: new { controller = "API", action = "HealthCheck", id = RouteParameter.Optional } 
     ); 
     //inject controllers here 
     config.DependencyResolver.GetService(typeof({{YourWebAPIRootNamespace}}.Controllers.APIController)); 

     appBuilder.UseWebApi(config); 
    } 
} 

。新しいプロジェクトのapp.configをweb.configのすべての設定で更新することを忘れないでください。

フルブログの投稿はこちらhttp://thenameisirrelevant.com/hosting-an-existing-webapi-in-service-fabric

関連する問題