/ / DI in Azure-Funktionen - azurblaue, azurblaue Funktionen

DI in Azure Functions - azurblaue, azurblaue Funktionen

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 № 1

Ich 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).