我們只站在內部部署的MS服務結構集羣上。我有一些WebAPI,我想在其中主持。我正在尋找關於如何使用我們的標準4.5 WebAPI並將它們託管在Service Fabric中的資源,而無需創建Service Fabric項目並遷移它;這似乎太複雜了。服務結構上的主機WepAPI
我看了一些Service Fabric示例項目,似乎所有項目都與Service Fabric緊密結合。我的目標是讓這些應用程序不知道服務結構。
任何信息的鏈接非常感謝,謝謝!
我們只站在內部部署的MS服務結構集羣上。我有一些WebAPI,我想在其中主持。我正在尋找關於如何使用我們的標準4.5 WebAPI並將它們託管在Service Fabric中的資源,而無需創建Service Fabric項目並遷移它;這似乎太複雜了。服務結構上的主機WepAPI
我看了一些Service Fabric示例項目,似乎所有項目都與Service Fabric緊密結合。我的目標是讓這些應用程序不知道服務結構。
任何信息的鏈接非常感謝,謝謝!
如果它是一個獨立的Web應用程序(如Katana,而不是IIS),那麼您可以簡單地將它作爲Guest Executable運行。
如果它不是自託管的,並且需要單獨的Web服務器才能運行,例如IIS,那麼您可以看看它在Container中的運行情況。
我們做了這樣:
祕訣是:當你創建一個自託管的Web API時,你一般會創建一個控制檯應用程序,就像asp.net文檔一樣。使用服務結構,可以用ServiceFabricService代替控制檯,這與ConsoleApplication類似,但在這種情況下將是無狀態的服務。
在這種情況下,我們使用HttpListenerService的無狀態服務,如果您需要StateFull服務,您需要重構您的Api以使用可靠的集合。
這個傢伙Vaclac,創造了這一個很好的教程: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication-webapi/
感謝您的信息! –
我有同樣的問題,並通過在啓動()類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
謝謝您的信息! –