1

我們只站在內部部署的MS服務結構集羣上。我有一些WebAPI,我想在其中主持。我正在尋找關於如何使用我們的標準4.5 WebAPI並將它們託管在Service Fabric中的資源,而無需創建Service Fabric項目並遷移它;這似乎太複雜了。服務結構上的主機WepAPI

我看了一些Service Fabric示例項目,似乎所有項目都與Service Fabric緊密結合。我的目標是讓這些應用程序不知道服務結構。

任何信息的鏈接非常感謝,謝謝!

回答

0

如果它是一個獨立的Web應用程序(如Katana,而不是IIS),那麼您可以簡單地將它作爲Guest Executable運行。

如果它不是自託管的,並且需要單獨的Web服務器才能運行,例如IIS,那麼您可以看看它在Container中的運行情況。

+0

謝謝您的信息! –

1

我們做了這樣:

  • 創建我們的WebAPI的相同的解決方案服務織物項目。
  • 在ServiceFabricHost項目中,我們創建了我們的HttpListenerService來公開使用服務結構的端口,這同樣適用於SelfHosted WebApi
  • 配置ServiceFabricHost以打開所需的端點。
  • 添加對WebApi項目的引用
  • 使用WebApi Startup發送IAppBuilder並使用外部(SF)配置(如端口和URL)配置api。

祕訣是:當你創建一個自託管的Web API時,你一般會創建一個控制檯應用程序,就像asp.net文檔一樣。使用服務結構,可以用ServiceFabricService代替控制檯,這與ConsoleApplication類似,但在這種情況下將是無狀態的服務。

在這種情況下,我們使用HttpListenerService的無狀態服務,如果您需要StateFull服務,您需要重構您的Api以使用可靠的集合。

這個傢伙Vaclac,創造了這一個很好的教程: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication-webapi/

+0

感謝您的信息! –

0

我有同樣的問題,並通過在啓動()類HttpConfiguration對象的DependencyResolver.GetService()方法來解決它。創建一個新的Service Fabric Stateless/Statefull WebAPI項目。在啓動()類,添加以下代碼:

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); 
    } 
} 

這可以讓你無需將整個代碼庫遷移到新項目中部署現有的API整合服務織物。不要忘記使用web.config中的所有適用設置來更新新項目中的app.config。

這裏完整的博客文章http://thenameisirrelevant.com/hosting-an-existing-webapi-in-service-fabric