我在考虑将Service Iync Container依赖项配置置于Service类的RunAsync方法下,但我感觉不是一个不适合去的地方..
Azure Service Fabric Services中是否存在任何约定来放置此类配置而不会引起任何类型的冲突?
另外,你会在哪里发出处置电话?
注意:我为此使用Simple Injector,但其他IoC容器的其他示例也应该这样做。
答案 0 :(得分:5)
您可以在program.cs中的启动代码中创建IoC容器。注册服务时,可以向其传递一个传递ServiceContext
的回调方法。获得ServiceContext
后,您可以使用它来访问连接字符串等的应用程序配置。
这是我用来创建Ninject内核的一些代码。
namespace AccountCommandService
{
internal static class Program
{
private static void Main()
{
try
{
ServiceRuntime.RegisterServiceAsync("AccountCommandServiceType",
context =>
{
// Create IoC container
var kernel = new ServiceKernel(context);
// Create Service
return new AccountCommandService(context,
kernel.Get<IAccountDataContextFactory>(), // Pull a DBContext factory from the IoC
);
}).GetAwaiter().GetResult();
Thread.Sleep(Timeout.Infinite);
}
catch (Exception e)
{
ServiceEventSource.Current.ServiceHostInitializationFailed(e.ToString());
throw;
}
}
}
}