通过MVC5和SignalR连接Ninject的最佳实践方法是什么?
Ninject建议让Global.asax继承NinjectHttpApplication并实现CreateKernal方法:
//Global.asax ([Ninject MVC Website Guidance][1])
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel(new NinjectRegistrations());
var ninjectResolver = new CustomNinjectDependencyResolver(kernel);
DependencyResolver.SetResolver(ninjectResolver); // MVC
GlobalConfiguration.Configuration.DependencyResolver = ninjectResolver; // Web API
return kernel;
}
SignalR希望我们使用其OwinStartup类注册一个NinjectDependencyResolver:
//OWIN Startup ([ASP.Net Website Guidance][2])
public void Configuration(IAppBuilder app)
{
var kernel = new StandardKernel();
var resolver = new NinjectSignalRDependencyResolver(kernel);
var config = new HubConfiguration();
config.Resolver = resolver;
Microsoft.AspNet.SignalR.StockTicker.Startup.ConfigureSignalR(app, config);
}
这两个位置都需要IKernel和NinjectDependencyResolver。一个选择是开始对它们使用静态单例,但这似乎不符合我们首先使用Ninject所寻求的松散耦合的精神。
感谢您的指导!
您只需MapSignalR
要从Owin配置调用。Ninject MVC管道使用WebActivator激活Ninject,安装软件包Ninject.MVC5
。
在这里查看如何将SignalR添加到Ninject启动
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句