Ich habe einige Klassenbibliotheken, die ich in meiner ASP.NET-Web-API-Anwendung verwende, die alle meine Back-End-Sachen behandeln, z. CRUD-Operationen für mehrere Datenbanken wie Azure SQL Database, Cosmos DB usw.
Ich möchte das Rad nicht neu erfinden und dazu in der Lage seinVerwenden Sie sie in einer neuen Azure-Funktion, die ich in Visual Studio 2017 erstelle. Alle meine Repository-Methoden verwenden eine Schnittstelle. Wie also implementiere ich die Abhängigkeitsinjektion in meine neue Azure-Funktion?
Ich sehe keine Unterstützung für DI, aber ich bin ein bisschenverwirrt. Es scheint, dass Azure Functions auf dem gleichen SDK wie WebJobs basieren, und ich denke, letztes Jahr hat Microsoft damit begonnen, DI in WebJobs zu unterstützen - ich weiß es genau, weil ich es mit Ninject implementiert habe.
Gibt es einen solchen Weg, damit ich meine vorhandenen Bibliotheken in meinem neuen Azure-Funktionen-Projekt verwenden kann?
Antworten:
16 für die Antwort № 1Ich sehe diese beiden Techniken zusätzlich zum Service-Locator (Anti) -Muster. Ich habe das Team von Azure Functions um Kommentare gebeten.
https://blog.wille-zone.de/post/azure-functions-dependency-injection/
https://blog.wille-zone.de/post/azure-functions-proper-dependency-injection/
6 für die Antwort № 2
Da ist ein Öffnen Sie die Feature-Anforderung auf den GitHub-Seiten für Azure-Funktionen in dieser Angelegenheit.
Die Art und Weise, wie ich mich dem annähere, ist jedoch eine Art "Wrapper" -Einstiegspunkt, den ich mit Hilfe des Service-Locators lösen und von dort aus starten kann.
Das sieht ein bisschen so aus (vereinfacht)
var builder = new ContainerBuilder();
//register my types
var container = builder.Build();
using(var scope = container.BeginLifetimeScope())
{
var functionLogic = scope.Resolve<IMyFunctionLogic>();
functionLogic.Execute();
}
Das ist ein bisschen hacky natürlich, aber es ist das Beste, was es gibt, bis es im Moment (zu meinem Wissen).