Ninject für die MVC-Anwendungsentwicklung maximieren: Optimierung und Komfort
DbContext Management
Ninject sorgt dafür dass Ihr DbContext entsprechend entsorgt und bereinigt wird. Wie in der Referenzdokumentation angegeben, ist der Container für die Entsorgung von Einwegobjekten wie DbContext verantwortlich, wenn der zugehörige Bereich vom Garbage Collector erfasst wird.
Basis-Controller-Gemeinsamkeit
Um zu vermeiden, dass DbContext-Argumente manuell zu einzelnen Controllern hinzugefügt werden müssen, sollten Sie stattdessen die Verwendung globaler Filter in Betracht ziehen. Mit Filtern können Sie übergreifende Anliegen bearbeiten, ohne auf Vererbung zurückgreifen zu müssen. Wenn Sie beispielsweise allgemeine ViewBag-Eigenschaften basierend auf dem aktuellen Benutzer festlegen möchten, können Sie einen Filter wie den folgenden erstellen:
public class CurrentUserProfileFilter : IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var currentUserName = filterContext.HttpContext.User.Identity.Name; // Set ViewBag properties... } }
Registrieren Sie außerdem einen benutzerdefinierten Filteranbieter, um Filterabhängigkeiten in einem bestimmten Zeitraum aufzulösen. Anfrageart:
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... } }
Dieser Ansatz macht es überflüssig, dass jeder Controller DbContext als akzeptieren muss Argument.
DbContext-Erstellung optimieren
Aus Leistungsgründen möchten Sie möglicherweise die DbContext-Instanzerstellung optimieren. Erwägen Sie die Implementierung eines benutzerdefinierten DependencyProviders für Ninject, der prüft, ob der DbContext bereits für die aktuelle Anfrage erstellt wurde. Wenn nicht, erstellen Sie den DbContext und speichern Sie ihn in einem HttpContext-Datenbeutel. Wenn sie vorhanden ist, rufen Sie sie ab und verwenden Sie die vorhandene Instanz.
Diese Strategie stellt sicher, dass eine DbContext-Instanz nur dann erstellt wird, wenn die Anforderung Datenbankzugriff erfordert.
Das obige ist der detaillierte Inhalt vonWie kann Ninject das DbContext-Management und die Controller-Entwicklung in MVC-Anwendungen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!