2017-03-08 3 views
1

Ich bin fasziniert davon, wie Azure Functions so viele Methodensignaturen über Bindungen ermöglichen. Weiß jemand, wie sie unter der Decke arbeiten oder irgendwelche Verbindungen zu Ressourcen haben, die sie beschreiben?Wie funktioniert Azure Functions Bindings?

Ich bekomme, dass die Bindungen angegeben werden müssen, aber wie ermittelt das Framework die Methodensignatur zum Aufrufen?

Antwort

5

eine gute Möglichkeit, zu lernen, wie Bindungen Arbeit ist selbst eine Beurteilung zu schreiben! Wir haben eine Wiki-Seite Binding Extensions Overview, um zu beginnen, zusammen mit Links zu Beispielbindungen und Starter-Projekten. Die allgemeine Bindungspipeline ist in The Binding Process beschrieben. Selbst wenn Sie nicht losgehen und Ihre eigene Erweiterung schreiben, werden Ihnen diese Links helfen, die Dinge zu verstehen. Sie können auch über die Beispielbindungen oder tatsächliche Bindungen debuggen, um zu sehen, wie sie funktionieren - es ist alles Open Source :) Viele der Bindungen, die Sie von Azure-Funktionen erkennen, leben in diesem Repo, so dass Sie ihre inneren Abläufe dort sehen können. Andere Kernbindungen leben in azure-webjobs-sdk.

Alle Azure Functions-Bindungen sind hinter den Kulissen WebJobs SDK-Bindungserweiterungen, wie in diesen Wiki-Links beschrieben. Azure Functions-Layer über dieser Grundlage und bringt ein JSON-basiertes Metadatenmodell mit unterschiedlichen Sprachen dazu, wie im Blogpost Azure Functions: The Journey beschrieben.

2

Ich glaube nicht, dass es irgendwelche öffentlichen Dokumente im Detail zu beschreiben sind, wie es funktioniert, aber das Projekt ist Open Source, so dass Sie den Code anzeigen können Sie sich: https://github.com/Azure/azure-webjobs-sdk-script/

Es ist ziemlich viel Code beteiligt, aber ich würde konzentrieren: https://github.com/Azure/azure-webjobs-sdk-script/tree/dev/src/WebJobs.Script/Description

Hier ist der Code, die Funktionsparameter bekommt: https://github.com/Azure/azure-webjobs-sdk-script/blob/dev/src/WebJobs.Script/Description/DotNet/DotNetFunctionDescriptorProvider.cs#L72