将Ninject与MVC5和SignalR连接起来的最佳实践方式是什么?ASP.Net MVC 5 + 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拍摄的松耦合的精神。
感谢您的指点!
不要遵循的指导,这是老了。只需安装Ninject.MVC5,ninject将自行配置。按照下面的Anders建议(但使用Ninject.MVC5而不是MVC3,尽管MVC3也可以)。 –
酷,不知道他们得到周围升级包 – Anders