Tôi có ứng dụng MVC 5 sử dụng Ninject và tôi thêm Hangfire vào nó.Cấu hình Hangfire và cấu hình Ninject
Khi tôi đã thêm Ninject, tôi đã sử dụng gói gói NinjectWebCommon
vì tính đơn giản trong cấu hình. Vì vậy, bây giờ Ninject được cấu hình thông qua lớp NinjectWebCommon
tạo ra một hạt nhân chuẩn và thêm các ràng buộc.
Hơn nữa tôi đã tạo ra một số mô-đun tùy chỉnh mà tôi tải khi tạo hạt nhân
private static IKernel CreateKernel() {
var kernel = new StandardKernel(new MyCustomModule());
try {
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch {
kernel.Dispose();
throw;
}
}
Các Ninject Web chung được đăng ký thông qua các lớp WebActivatorEx
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyProject.Web.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(MyProject.Web.NinjectWebCommon), "Stop")]
Bây giờ vấn đề có liên quan về cách tạo Hangfire để xem cấu hình Ninject. Bằng cách nhìn vào gói Hangfire.Ninject
tôi có thể đọc
Các gói phần mềm cung cấp một phương pháp mở rộng cho giao diện IGlobalConfiguration :
var kernel = new StandardKernel();
GlobalConfiguration.Configuration.UseNinjectActivator(kernel);
Bây giờ câu hỏi của tôi là:
- Vì giao diện
IGlobalConfiguration
, tôi nên thêm cấu hình Hangfire Ninject bên trong phương thức khởi động OWIN (nơi cấu hình Hangfire đã được đặt). Làm thế nào tôi nên lấy hạt nhân Ninject hiện tại (cái mà NinjectWebCommon đã cấu hình? - Điều gì về thứ tự thực hiện? Là thực hiện
WebActivatorEx
trước hoặc sau khi khởi động OWIN? - Điều gì xảy ra nếu tôi cố gắng thực hiện cấu hình hai lần ?
Tổng quát hơn, làm thế nào tôi có thể chia sẻ cấu hình Ninject giữa hai?
Chỉnh sửa: Đề xuất tùy chỉnh thay thế với đề xuất dựa trên Bootstrapper tốt hơn và thêm một chút vào gốc sáng tác. – CrazyPyro