2014-07-14 139 views
2

将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拍摄的松耦合的精神。

感谢您的指点!

+0

不要遵循的指导,这是老了。只需安装Ninject.MVC5,ninject将自行配置。按照下面的Anders建议(但使用Ninject.MVC5而不是MVC3,尽管MVC3也可以)。 –

+0

酷,不知道他们得到周围升级包 – Anders

回答