Memaksimumkan Ninject untuk Pembangunan Aplikasi MVC: Pengoptimuman dan Kemudahan
Pengurusan DbContext
Ninject memastikan bahawa DbContext anda dilupuskan dan dibersihkan dengan sewajarnya. Seperti yang dinyatakan oleh dokumentasi rujukan, bekas bertanggungjawab untuk melupuskan objek Pakai buang, seperti DbContext, apabila skop berkaitannya dikumpulkan oleh pemungut sampah.
Kesamaan Pengawal Asas
Untuk mengelakkan keperluan untuk menambah argumen DbContext secara manual pada pengawal individu, pertimbangkan untuk menggunakan penapis global. Penapis membolehkan anda menangani kebimbangan silang tanpa menggunakan warisan. Sebagai contoh, jika anda mempunyai sifat ViewBag biasa untuk ditetapkan berdasarkan pengguna semasa, anda boleh membuat penapis seperti berikut:
public class CurrentUserProfileFilter : IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var currentUserName = filterContext.HttpContext.User.Identity.Name; // Set ViewBag properties... } }
Selain itu, daftar penyedia penapis tersuai untuk menyelesaikan kebergantungan penapis dalam per- cara permintaan:
public class GlobalFilterProvider : IFilterProvider { public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor) { foreach (var filter in dependencyResolver.GetServices<IActionFilter>()) { yield return new Filter(filter, FilterScope.Global, order: null); } // Similar loop for other filter types... } }
Pendekatan ini menghapuskan keperluan bagi setiap pengawal untuk menerima DbContext sebagai hujah.
Mengoptimumkan Penciptaan DbContext
Untuk pertimbangan prestasi, anda mungkin mahu mengoptimumkan penciptaan contoh DbContext. Pertimbangkan untuk melaksanakan DependencyProvider tersuai untuk Ninject yang menyemak sama ada DbContext telah dibuat untuk permintaan semasa. Jika tidak, cipta DbContext dan simpannya dalam beg data HttpContext. Jika wujud, dapatkan semula dan gunakan tika sedia ada.
Strategi ini memastikan tika DbContext hanya dibuat apabila permintaan memerlukan akses pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah Ninject Optimize Pengurusan DbContext dan Pembangunan Pengawal dalam Aplikasi MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!