Transkripte
1. Einführung: Hallo und willkommen zu meinem Kurs, Microsoft Azure Functions entwickelt
serverlose Lösungen. Ich bin Ihr Ausbilder für Krieg Williams und ich bin seit
dem letzten Jahrzehnt Softwareingenieur, Vortrag und Code-Praktiker
. In diesem Kurs konzentrieren
wir uns auf Azure-Funktionen
und ihre Funktionsweise. Wir haben uns angeschaut, wie wir sie erstellen, testen und bereitstellen können. Wir haben uns die verschiedenen
Funktionsauslösertypen angeschaut und ganze Wochenende MY interagieren
mit externen Diensten, auch von
Azure bereitgestellt werden,
und andernfalls alle
diese Konzepte durchlaufen werden
wir alle
diese Konzepte durchlaufen. interagieren Sie mit
verschiedenen Entwicklungswerkzeugen, alle darauf ausgerichtet sind,
uns dabei zu helfen, so produktiv
wie möglich zu sein. Tools wie Visual Studio, Visual Studio-Code als 0
Funktionen, Kern-Tools. Wir haben uns den
Speicher-Emulator
und den Kosmos-DB-Emulator angeschaut . Wissen Sie, dass Sie wahrscheinlich etwas verschwommen sind, was
Azure-Funktionen sind. Ihr Telefon meidet
eine der schnellsten
und einfachsten Möglichkeiten, Ihren Code
in Azure zum Laufen zu
bringen und gleichzeitig
ein kostengünstiges und
serverloses Modell beizubehalten . Mit anderen Worten, Sie können eine Anwendung
schreiben,
ohne sich um
die Infrastruktur
oder Server oder irgendetwas kümmern zu müssen . Und er kann es in der
Cloud bereitstellen und innerhalb weniger
Minuten etwas
einsatzbereit haben . Es unterstützt auch
viele Sprachen. Obwohl wir uns auf dotnet und C-Sharp
konzentrieren werden, können
Sie auch JavaScript,
TypeScript, Python,
Java und andere Sprachen
sofort verwenden . Jetzt konzentrieren
wir uns während des Kurses auf Ihre Funktionen,
aber wir werden mit
anderen Azure-Technologien
wie Azure Storage, azure AD,
azure Cosmos DB, Application
Insights und App interagieren wie Azure Storage, azure AD,
azure dienstleistungen. Lassen Sie mich noch einmal sagen, wie
aufgeregt ich bin, Sie in
diesem Kurs zu haben , und ich kann es kaum erwarten, loszulegen. Wir sehen uns bald.
2. Einführung in die Azure-Funktionen: In diesem Abschnitt werden wir
einige der Geheimnisse entmystifizieren ,
die
die Konzepte von Azure Function umgeben . Erstens gehe ich davon aus, dass Sie
bereits einen aktiven
As-Ära-Kegel haben und dass Sie
genug Credits haben , um
die Aktivitäten im Zusammenhang mit diesem Kurs
zu durchstehen . Einige der Dinge
werden Geld kosten, aber wir sind noch nicht am
Geldkostenteil. Ich möchte nur, dass wir uns
mit Azure Portal vertraut machen
, wie wir mit Funktionen und
einigen der Konzepte und
Keywords rund um ihre
Abläufe
interagieren können.
Also bleib hier. Wir werden genau
verstehen, was eine 0-Funktionen sind, und schauen uns die verschiedenen Möglichkeiten an, wie
sie verwendet werden können.
3. Erstelle eine Function: Okay, also lasst uns gleich eine 0-Funktionen
verstehen. Jetzt
mache ich an dieser Stelle ein paar Annahmen. Erstens, dass Sie bereits einen aktiven Microsoft
Azure-Kegel haben und Ihre Kreditkarte
eingerichtet haben oder Sie
die kostenlosen Credits als einige
der Aktivitäten
für die Dauer
dieses Programms
zur Verfügung haben die kostenlosen Credits als einige
der Aktivitäten
für die Dauer
dieses Programms
zur Verfügung der Aktivitäten
für die Dauer wird natürlich etwas Geld
kosten. Aber wir sind noch nicht wirklich
beim Geldverdienen
oder beim Geldausgabenteil. Darum schauen wir uns nur
die grundlegenden Konzepte an. Ich bin bereits bei meinem
Azure-Konto angemeldet. Sie können zum Azure-Portal gelangen indem Sie zu portal.azure.com gehen und sich mit dem
Konto anmelden, mit
dem Sie Ihr Konto erstellt haben. Und dann siehst du ein Dashboard. Es mag
so aussehen oder auch nicht, als hätte meins tatsächlich etwas Zeit und Mühe investiert, um diesen
anzupassen. Sie sehen hier habe ich
einige Ressourcen , die
von einem anderen Kurs bereitgestellt werden. Und Sie werden sehen, dass
Sie dies
anpassen können. Sie können jederzeit zu Neues
Dashboard oder zu
einem leeren Dashboard gehen, oder Sie können dieses einfach bearbeiten und alle
unsere eigenen verschieben und sie nach Ihren Wünschen
anpassen. Nein, wir werden zu den Funktionen nach
oben oder zumindest
zur Serviceliste springen den Funktionen nach
oben oder zumindest und eine Funktion einer Funktion
auf
israelischen und App-Dienst erstellen . Sie hätten also gesehen, dass
das Schlüsselwort serverless angekündigt
wurde, wenn
Sie eine 0-Funktionen sehen. Es ist serverlos,
da kein physischer
Server beteiligt ist. Es ist ein Service, der
angeboten wird , mit dem wir
Funktionen hosten können. Also kann ich hier einfach zu All Services
gehen. Dann kann ich filtern
und Funktion sagen. Und dann werde ich von hier aus sehen, dass ich
eine Funktion erstellen kann. Wenn ich das mache, kann ich auf
Create, Create Function klicken. Um fortzufahren, gehe
ich durch einen Assistenten. Also erstens, was sind
Ihre Abonnements? Wenn Sie also
unterschiedliche Abonnements haben, stehen
Sie wahrscheinlich vor Gericht. Sie sind wahrscheinlich auf
Pay-as-you-go-Dev Slash-Tests wie ich. Sie befinden sich wahrscheinlich
auf einem speziellen für Ihr Unternehmen oder
für Ihre Organisation, unabhängig davon, dass Sie
das auswählen , das Sie
verwenden werden. Ich hab nur einen. Sie möchten
eine neue Ressourcengruppe erstellen. So kannst du fortfahren
und auf „Neu erstellen“ klicken. Und ich sehe Funktion, RG, Funktionsstrich, Dash RG. Klicken Sie auf. Okay. Was soll diese Funktion
benannt sein? Ich werde mich
mit dem Kurs benennen, der
Azure, Funktionen,
Dash-Grundlagen ist ,
wissen, wann Sie
das tun, wie Sie sehen können, wird
es tatsächlich
eine öffentliche Adresse sein. Was Sie also tun können
, um es
individueller zu gestalten , falls dies nicht verfügbar ist. Sie können auch Dash
und Ihre Initialen oder
Ihren Namen oder einen Teil Ihres Namens setzen Ihren Namen oder einen Teil Ihres Namens nur um es ein
bisschen einzigartiger zu machen. Dies wird auf einer öffentlichen, öffentlich zugänglichen
URL erfolgen, die es
uns ermöglicht , zu den
Funktionen zu navigieren, die
bereitgestellt werden , um
von überall auf
die Funktionen zuzugreifen, die im zentralen Bereich
bereitgestellt werden auf der Welt. Ich bin sicher, dass wir alle wissen,
wie URLs geschrieben funktionieren. Okay, also als nächstes
wollen wir veröffentlicht sagen, wollen wir vorerst Code oder einen
Docker-Container, ich gehe mit Code. Welchen Laufzeit-Stack wollen wir? Eine 0-Funktion unterstützt viele
verschiedene Sprachen. Wir sehen, dass es Unterstützung für das Dotnet-Framework
oder die Plattform hat. Wir können NodeJS,
Python, Java, Polar, Show, Custom verwenden, und es werden andere
Sprachen hinzugefügt. Sehr Unregelmäßigkeit
für diesen Kurs werden wir uns auf dotnet
konzentrieren. Also wählen wir das aus, dann wählen
wir die Version aus. Dotnet 60 ist der neueste
und beste. Also werden wir damit fortfahren. Zu der Zeit, als wir diesen Kurs
gemacht haben, haben
sie möglicherweise eine spätere Version. Sie können das auch nutzen. Wenn Sie nicht bis zu dotnet sechs sind, können
Sie auch wählen, dass dotnet
Core 3.1 erforderlich ist wenn Sie zum Zeitpunkt
dieses Kurses kein Visual Studio
2022 oder höher haben .
Das ist in Ordnung, aber ich werde es sein
zeigt mit fertig um sechs Uhr. Und dann wäre Ihr Grund das Rechenzentrum, das
Ihrem geografischen Standort am nächsten ist. Wenn Sie in Australien sind, möchten
Sie das in
Australien auswählen , das Ihnen am nächsten liegt. Ich bin in der Karibik. Das beste für mich
ist normalerweise die Ost-USA. Und ich wähle einen Hocker, ein neueres Rechenzentrum für den Osten der USA ist. Nachdem wir all das getan
haben, können wir uns einfach
durchklicken und
die anderen potenziellen Sitzungen sehen die anderen potenziellen Sitzungen damit wir
ein Speicherkonto einrichten können da wir einen Link zu
einem Speicherkonto
erstellen müssen Blobs und Warteschlangen
und Tabellenspeicher, jede Form von Unterbrechung
mit diesen. Wir können ein
Betriebssystem wählen. Ich überlasse das als Windows. Wir können auch einen Plantyp auswählen, nicht der Plantyp wird sich
direkt auf die Kalkulation auswirken und die Ressourcen speichern , um
Ihre Funktionen zu unterstützen. also auf klicken, erfahren
Sie mehr, können Sie
die Dokumentation so erweitern, dass der Verbrauchsplan automatisch
skaliert wird und Sie nur für
Rechenressourcen bezahlen , wenn Ihre
Funktionen ausgeführt werden. Der Nachteil daran ist, dass
sie die Ressourcen
nach einer Zeit der Inaktivität tatsächlich ausschalten oder D zuweisen. Und wenn Sie sie dann wieder
brauchen, wurden sie hochgezogen,
aber das kann einige Zeit dauern,
also ist es so, als wäre es nicht wirklich immer an Bord, dann wird es
irgendwie abgerissen, so dass
Sie lange Geld sparen Lauf jedoch, wenn es etwas ist,
das Sie immer brauchen, dann ist dies möglicherweise
nicht unbedingt der beste Plan für Sie, oder? Jetzt. Der Premium-Plan basiert
automatisch auf Nachfrage und es gibt
keine Leerlaufzeiten, sodass er immer skaliert wird und immer aktiviert ist, wenn Sie ihn benötigen, er ist jederzeit da. Eine andere Sache, die Sie beachten sollten,
ist auch die Ausführungszeit. Der Verbrauchsplan hat also
grundsätzlich eine Grenze von 20 Minuten, wenn ich mich nicht irre. Das bedeutet also, dass unsere Funktion die 20 Minuten nicht mehr
abläuft. Während der Premium-Plan diese
Frist nicht haben wird. Es wird also länger dauern als die maximale Ausführungszeit uns durch den
Verbrauchsplan
gegeben wird. Wie ich schon sagte, du
musst wissen, was deine Kontexte sind und was
du davon brauchst. Der dedizierte Plan
gibt Ihnen tatsächlich die Art der Laufzeit des App
Service-Plans,
was bedeutet, dass er über
dedizierte Ressourcen für Ihre AP-Funktion, Ihre Funktion, verfügt. Und Sie müssen nicht raten
und buchstabieren, um zu sagen: Okay, ich gebe zu viel für die
Ausgaben aus. Es wird automatisch skaliert und es ist weitaus
prädiktiver, wenn Sie wissen , dass Sie Funktionen
benötigen, und Sie werden dies langfristig
tun. Sie möchten wahrscheinlich die dedizierte Anlage
verwenden da Sie dann tatsächlich
richtig abschätzen können ,
wie hoch Ihre Kosten bei einer bestimmten
Art von Belastung sein
werden. Sie können den
auswählen, den Sie
entsprechend Ihrem Kontext
für diesen Kurs benötigen entsprechend Ihrem Kontext
für diesen Kurs Wir werden mit
dem Salzverbrauchsplan fortfahren
, der als Serviceplan aufgeführt wird. Als nächstes gehen wir auf
die Netzwerkseite. Es gibt
hier nicht viel oder irgendetwas zu konfigurieren, da es
so ziemlich so konfiguriert ist, dass es öffentlich mit
dem Internet konfrontiert ist. Wir müssen also hier keine virtuellen
Netzwerkanpassungen vornehmen, wir können zur
Überwachung übergehen, wo wir Application Insights
einschalten können . Und das ermöglicht es uns, Protokolle zu
fotografieren und
die Funktionen zu überwachen , während
sie
die Laufzeit ausführen, und
die Fehler , die sie
alle erhalten. Daher würde ich empfehlen
, dass Sie dies aktivieren. Es kostet ein
bisschen Geld, aber ich denke, dass es
sich auf lange Sicht lohnt. Und dann sind Tags gut
für die Erstellung einer Benennungsressourcen, insbesondere in einer Einstellung,
in der Sie möglicherweise
viele Ressourcen haben , die
ziemlich ähnlich sind , die
verschiedenen Zwecken dienen. So können Tags helfen, sie zu isolieren und Ihnen langfristig beim Aufbau und der
Ressourcenzuweisung
zu helfen. Aber das können wir für null überspringen. Und dann gehen wir zu
Review and Create. Sobald wir überprüft haben, dass
alles das ist, was wir wollen, können
wir einfach auf Erstellen klicken. Wenn dieser Vorgang abgeschlossen ist, können
Sie immer einfach
auf Gehe zu Ressource klicken. Gehe einmal zur Ressource. Wenn Sie jemals
einen App-Dienst bereitgestellt haben, wird
es einen sehr
ähnlichen Dashboard-Vers haben, der sich
ähnlich fühlt. Wenn nicht, dann ist das in Ordnung. Dies ist das Dashboard
, das Sie bekommen. Sie werden also hier sehen, dass
er einige Diagramme erhält, einige Metriken zu
Laufzeitbenachrichtigungen. Sie können die Zugriffssteuerung durchführen, um zu sehen, welcher Benutzer in
Ihrer Organisation oder in Ihrem Azure AD das tun kann, was
in dieser bestimmten Ressource Wir können Sicherheitswarnungen
für Eindringlinge oder
potenzielle Eindringlinge konfigurieren . Wir können Veranstaltungen einrichten. Und dann können wir natürlich, der Grund, warum wir hier sind, der Grund, warum wir hier sind,
mit der Erstellung von Funktionen beginnen. Jemand, für den man es dort lassen kann. Nein, wir haben uns nur angeschaut, wie
Sie eine Funktion
erstellen und die verschiedenen
Arten von Hosting-Modellen, die verschiedenen Preismodelle
, die Ihnen zur Verfügung stehen. Und natürlich
bestimmt der Kontext die Entscheidungen
, die Sie treffen. Wir werden
in den kommenden Lektionen einige Konzepte
durchgehen .
4. Trigger und Bindungen: Alles klar Leute, in dieser
Lektion werden wir uns Auslöser
und Bindungen
ansehen, und wir machen noch
keine Programmierung. Wir untersuchen immer noch nur
im Dashboard, um zu sehen, was Schwämme, was der Fachsprache bedeutet und wie wir
die Punkte zwischen
unseren Bedürfnissen verbinden und beobachten können unseren Bedürfnissen verbinden und beobachten die Azure-Funktionen
sie uns zur Verfügung stellen. Wir haben unsere
Funktion bereits erstellt und noch einmal, das geht nicht zum
USV-Dienst, der
alle Funktionen hosten sollte, die ausgeführt werden
müssen. So können wir dorthin gelangen,
indem wir zu dieser URL gehen. Und wenn ich darauf klicke, wirst
du sehen, dass meine Funktionen laufen und laufen. Natürlich gibt es
keine Phonetiker, durch die ich stöbern kann,
also ist das in Ordnung. Wenn ich zu
diesem Abschnitt gehe , der Funktionen enthält und auf Funktionen
klicke, kann ich
alle Funktionen sehen ,
die ich haben würde, den Trigger und den Status. Wenn ich also auf Erstellen klicke, wird dieser
Beschnitt angezeigt, der
es mir ermöglicht, die
Entwicklungsumgebung zu definieren. Sie sehen hier, dass wir ein paar Optionen
haben, die wir uns später ansehen werden. Und dann bitten sie uns
, eine Vorlage auszuwählen. Das ist ziemlich gut und
Sie können sehen, dass Sie in
diesem Vorlagenbereich einige Optionen haben . Der Trigger
repräsentiert
die Aktion , mit der die Funktion ausgeführt wird, da eine Funktion
nur dort sitzen wird. Wir alle, an dieser Stelle, gehe
ich von unseren Programmierern aus, also wissen wir alle, dass
Funktionen
in einem Programm enthalten sein müssen und sie
aufgerufen werden müssen, um ausgeführt zu werden. Nein, die Sache mit
Azure-Funktionen ist, dass sie eigentlich eher
eigenständige Funktionen ähneln, aber sie haben
Auslöser
und ein Trigger wird
zur Ausführung auffordern. Wenn wir uns also die Spalte „Anforderungen
dieser Vorlagen“ ansehen, sehen
Sie die verschiedenen
ausgelösten Typen , die
unter diesen Vorlagen verfügbar sind. Sie haben also den HTTP-Trigger, d. h. eine Funktion, die ausgeführt
wird, wenn sie eine HTTP-Anfrage
erhält,
und sie antwortet. Wenn Sie also über APIs Bescheid wissen, ist das alles eine API. Sie erstellen ein HTTP namens vielleicht Daten einschließen,
vielleicht nicht. Aufgrund dieses Aufrufs reagiert
die API jedoch entsprechend
der Art und Weise, wie sie
den Anruf im Verhältnis zu den Daten verstanden hat, die sie möglicherweise erhalten hat oder nicht. Das ist also eine von HTTP
ausgelöste Funktion. Als Ihre Funktion
haben Sie Timer-Trigger,
was bedeutet, dass Sie ihn auf einen Timer
setzen, alle fünf Minuten
ausführen, einmal am Tag ausführen können usw. Also, Sie haben diesen Windows Scheduler oder Sie haben
Bei diesen Cron-Jobs in Linux können
Sie Timer-Trigger
im Cloud-Bereich verwenden um diese Art von
Ausführungen im Hintergrund durchzuführen. Ich werde nicht
durchgehen und erklären was jeder einzelne Typ ist, aber Sie können die
Beschreibungen immer
einfach durchgehen und lesen, oder? Während eine
Zuora-Klage Dinge schafft, wird es Sie tatsächlich aufklären, damit
Sie
die gerichtliche Entscheidung treffen können , die Sie haben Ihre Warteschlangengeschäfte ausgelöst werden, Sie haben Service Bus-Trigger, Themen oder Cue Trigger basierend darauf, welchen Sie für den Service Bus
verwenden, haben
Sie Cosmos
DB-Trigger, oder? Und dann hast du im selben Atemzug das, was
du Bindings nennst. Bindung ist im Grunde genommen, dass
Sie
eine nicht funktionsbezogene Funktion
oder Funktionen abonnieren eine nicht funktionsbezogene Funktion , die Daten
lesen oder schreiben. Sie haben also Input
- und Output-Bindings. Wenn wir das sagen, gebe
ich Ihnen nur
dieses Szenario, damit Sie schätzen
können, was ich sehe. Wenn Sie einen
Timer-Trigger haben, ein Bild aus
dem Blob-Speicher entfernen oder
eine Nachricht aus der Warteschlange nehmen
und etwas
in Blob Storage legen
soll dem Blob-Speicher entfernen oder
eine Nachricht aus der Warteschlange nehmen . Nehmen wir an, Sie hatten ein einfacheres Formular angezeigt, das am meisten ausgelöst
wurde. Wissen Sie, dass dieses Telefon
angezeigt wurde, wird eine Bindung an die Warteschlange haben und es wird eine
Bindung an den Blob haben. Dies ermöglicht es Ihnen,
diese beiden Dienste von Drittanbietern abonnieren
zu können diese beiden Dienste von Drittanbietern ich von
Drittanbietern festlegen möchte, ich meine, sie sind nicht genau
mit der Funktion verbunden. Sie sind eigenständige
Azure-Dienste. Die Input-Bindung wäre also, ich lese aus der Warteschlange. Die Output-Bindung wäre, ich schreibe in den Blob Storage. Ich möchte nicht schreiben
müssen, wenn ich
50 Codezeilen in
unregelmäßigem Programm
zum Consumer-Blob brauchte und mich 50 Codezeilen in
unregelmäßigem Programm zum Consumer-Blob brauchte und damit
verbinde und
genau weiß, wohin ich gehe. wird es wahrscheinlich
drei bis fünf Zeilen dauern Aufgrund dieser
Bindungsfunktion wird es wahrscheinlich
drei bis fünf Zeilen dauern. Das ist eine sehr leistungsstarke
Funktion, mit der Sie einen Großteil
des Boilerplate-Codes ausschneiden und einfach auf den Punkt
kommen und die Geschäftslogik
implementieren können. Es ist also sehr nützlich,
Funktionen oder
Funktionen zu implementieren , anstatt dass Sie
schnelles Urteilsvermögen benötigen, Sie wissen genau, was Sie wollen. Sie haben keine Zeit, zu viel Code zu
schreiben. Das bringen diese
Triggervorlagen auf den Tisch. Und die Möglichkeit,
die Funktion einfach an eine
externe Ressource zu binden die Funktion einfach an eine
externe Ressource zu macht es sehr einfach,
eine App bereitzustellen , die viele
verschiedene Teile einer 0 berührt. Das ist wirklich alles, was ich hier besprechen
wollte. Wir erstellen
noch keine Funktion. Wir wärmen uns immer noch auf
das Armaturenbrett und die Sprache auf. Wenn wir wiederkommen, sprechen
wir über die Entwicklungstools, die uns
zur Verfügung stehen , obwohl wir nicht zu viel eingehen werden. Was wir gerade besprochen haben, welche Möglichkeiten es gibt.
5. Entwicklungstools: Alles klar, das
letzte Mal, wenn wir hier sind, schauen
wir uns die verschiedenen
Arten von Triggern an, die Azure Functions haben könnten. Nein, lassen Sie uns den Schritt
weiter gehen und uns tatsächlich die Werkzeuge
ansehen
, die uns umgeben würden, tatsächlich
eine Interaktion schaffen. Wir hatten gesagt, Funktionen,
kein Upsilon, es wäre die
offensichtlichste Option,
die darin besteht,
das
Portal zu verwenden, weil die Ports ein sehr,
sehr leistungsfähiges Werkzeug sind. Es sitzt im Browser. Es benötigt nur sehr minimale Ressourcen
auf Ihrem tatsächlichen Computer. Dies wäre also wahrscheinlich eher
die Funktion oder die
Option, nicht viele Personen
könnten sich
entscheiden, wenn Sie
zu Create Function gehen,
die erste, die dort ein Entwicklungsportal
ist. Sie können Ihre
Vorlage auswählen und dann auf Erstellen klicken, nachdem
Sie ihr einen Namen gegeben haben, sagen
wir, testen Sie das Portal. Http-Funktion tut etwas damit wir genau wissen, was die
Autorisierungsstufe mit den
Autorisierungsstufen
zu tun hat mit den
Autorisierungsstufen
zu tun , mit denen
wir Personen zur
Interaktion interagieren werden diese Funktion. Also
sage ich nur eine Funktion, du interagierst nur
als funktionale Ebene im Vergleich zu anonym gegen Admin. Was passiert, ist, dass Sie,
wenn Sie die Funktion verwenden, einen vollständigen Begriffsschlüssel benötigen. Wenn Sie Admin verwenden, benötigen Sie einen Hauptschlüssel und
Sie können diese Schlüssel unter
dem Abschnitt „Schlüsselverwaltung“ hier tatsächlich verwalten . Wenn ich also nur anonym sage, dann werden keine Schlüssel benötigt. Also mache ich
das einfach dafür, wir klicken einfach auf Erstellen und das
gibt uns ein kleineres Dashboard. Wir können uns den Code
ansehen und direkt
hier im Portal
ausführen und testen. Und wie gesagt, ich stecke nicht zu viel in
den Code ein, oder? Nein, ich werde nicht
erklären, was das ist. Ich zeige Ihnen nur, dass
dies ein Texteditor
hier im Browser ist ,
damit Sie ihn speichern können, Sie können ihn hier testen und
ausführen. Sie können alles tun, was
Sie tun müssen. Wir können die Funktions-URL abrufen. All das kann
genau hier im Portal passieren. Das ist also Option a für Ihr
Tool, um eine Funktion zu schreiben. Keine Option B wäre hier
Visual Studio und
Visual Studio. Der, den ich verwende, ist das Installationsprogramm für
Visual Studio 2022 Community
Edition. Sie möchten sicherstellen,
dass Sie diese
Azure Development
Workload ausgewählt haben . daher unter allen anderen
Workloads, die Sie möglicherweise benötigen,
sicher, dass Sie
den Azure-Entwicklungsworkflow aufgenommen haben . Und wenn Sie diese Arbeitsbelastung
haben, werden Sie
beim Erstellen
unserer Projekte geladen
oder Sie haben
die Möglichkeit ,
ein Projekt mit 0 Funktionen zu erstellen. Dies wäre,
dies wäre
nützlich , wenn Sie ein ganzes
Entwicklungsprojekt haben an einem Team arbeiten. Sie wollen
Quellcodeverwaltung, Management und all diese Dinge. Und Sie haben diese
Lösung mit einer Reihe von Funktionen, die Sie bereitstellen könnten. Stellen Sie die Funktion nach oben ein. Und wenn Sie Visual
Studio-Unregelmäßigkeiten
verwenden, muss ich nicht
als sehr gutes
Entwicklungstool an Sie vermarktet werden. Eine andere Option, die Sie hätten , wäre Visual Studio-Code. Und Sie können immer zu den Erweiterungen
gehen und als Ihre Tools installiert werden. So
werden 0-Tools eine Reihe von
Erweiterungen für alle Arten
von Azure-Entwicklung
enthalten, einschließlich einer 0-Funktionen. Wenn Sie nicht das
gesamte Toolset möchten, können
Sie natürlich speziell
nach den Azure-Funktionen suchen, aber warum nicht einfach alle Tools
installieren? Jetzt ist diese Option
perfekt für Sie,
wenn Sie Linux oder Mac verwenden, da Visual Studio-Code Open Source und
plattformübergreifend
ist. Es ist also nicht auf
den Windows-PC beschränkt , wie es
Visual Studio sein könnte. Es wäre eine gute Alternative,
den Code
wieder auf Ihrem Computer und die
Quellcodeverwaltung usw. zu haben , außerhalb dessen sich
im Portal befindet. Jetzt die nächste Option,
die
ich zugegebenermaßen nie versucht habe
zu benutzen, aber sie ist da. Also werden wir, wir werden
besprechen, dass es der beliebige Editor und die
Kern-Tools
sein würde , oder? So können wir fortfahren und
Node.JS verwenden und diese Bibliotheken installieren
. Und dann sagen sie uns, wie wir anfangen
können zu sagen, dass wir
es testen können , oder wir können ein Projekt
erstellen , mit dem Sie es veröffentlichen können. Wenn Sie also kein GS bevorzugen, können
Sie
diesen Anweisungen folgen
und dies durchgehen. Aber wie gesagt, wir programmieren in dieser
speziellen Lektion
keine Codierung, ich werde diese Funktion tatsächlich
löschen weil ich
sie nicht brauche. Wissenswertes. Wenn wir wiederkommen, werden
wir weiterhin
einige weitere Konzepte diskutieren und
dann werden wir
diesen Abschnitt abschließen und
uns mit dem Spaß befassen , für den
wir hierher gekommen sind.
6. Abschnitt Rezension – Azure Function Einführung: Alles klar, also
schauen wir uns diese als sexuelle Notizen an. Lassen Sie uns überprüfen, was
wir erreicht haben. Erstens haben wir uns angeschaut,
was nötig ist, um eine 0-Funktion nach oben zu
erstellen. Und wir haben darüber gesprochen, dass es sich bei
der Funktion um eine einzige
Bereitstellungseinheit handelt. Es ist ein App-Dienst
, der eine
Reihe von Funktionen hosten wird . So kann eine Funktion erstellt werden und sie kann
verschiedene Vorlagen haben ,
sind verschiedene Trigger. Die Vorlage ist also nur
die vordefinierte Kälte, aber Sie können jederzeit jede Art
von Vorlage
bereitstellen und
den Code entsprechend lesen. Aber wir haben verschiedene
Trigger,
die die Funktionen auslösen. Wir haben uns bereits eine von HTTP
ausgelöste Funktion angeschaut. Wir haben Timer wird q haben, wir haben Service Bus ausgelöst. Wir haben eine Reihe von ihnen, die
wir verwenden können, langlebig und MQ. Später werden wir uns ansehen, was die Durable Functions
wirklich bedeuten. Aber der Punkt ist
, dass uns all diese Optionen zur Verfügung stehen. Wir haben uns auch einige
der Entwicklungstools angeschaut , die uns zur Verfügung stehen. Wir werden Visual Studio verwenden oder ich werde
Visual Studio verwenden. Aber meistens, wenn nicht, kann
alles, was ich tue, im Portal
erreicht werden die anderen Tools verwenden,
wenn Sie sie verwenden müssen. Wenn wir zurückkommen, werden
wir uns mit
Funktionen
beschäftigen etwas mehr mit
Funktionen
beschäftigen, die das
Portal verwenden, und
wir werden uns mit etwas Code die
Hände schmutzig machen, an einem Test
halten oder funktional und verkauft, um sich
die Ausführung anzusehen und tatsächlich zu sehen, was es braucht, um
einige Azure-Funktionen zu erstellen und bereitzustellen.
7. Azure-Funktionen in Azure Webportal: Alles klar Leute, willkommen zurück. In dieser Lektion werden
wir
direkt in den Fonds einsteigen und hier im Webportal
einige Azure-Funktionen
erstellen . Wir werden uns also Beispiele für von
HTTP ausgelöste Filmvorführungen
ansehen . Wir würden uns mit Timer
ausgelösten Funktionen ansehen. Und wir werden uns eine mit Blob Storage
ansehen,
ungeachtet dessen, dass Sie
dieselben Schritte ausführen und
jede Art von Funktion bereitstellen können , die Sie benötigen, entsprechend der gewünschten Uhr, da
sich der Auslöser fokussiert
an diesen drei Beispielen. Und wir werden uns auch
anschauen, wie Sie testen können. Nun, wir können uns die Protokolle
ansehen ,
die Sie
mit den Funktionen tun können, nur um sicherzustellen, dass Sie es
richtig machen und
alle Grundlagen abdecken. Also bleib hier. Wir haben viel Spaß im Overhead.
8. Erstelle eine HTTP-Anforderung, die ausgelöst wird:: Okay, also
beginnen wir damit,
eine von HTTP-Anfragen
ausgelöste Funktion zu erstellen . Und das haben wir schon gemacht. Also werden wir unsere Schritte einfach wiederholen. Wir sind in der Funktion oben und gehen dann
zwei Funktionen nach unten, dann klicken wir oben auf Erstellen. Und dann gibt uns das die Liste. Und aus dieser Liste
wollen wir den HTTP-Trigger. Wenn Sie darauf klicken, geben Sie
ihm einen Funktionsnamen. Ich nenne es einfach HTTP, fordere Bindestrich Funk
oder eine Funktion an. Lass mich das einfach aufschreiben. Und dann hier für
die Autorisierung von Endo das letzte Mal überflogen, aber ich werde diesmal viel
langsamer vorgehen und genauer
erklären, wann wir,
wenn wir die
Autorisierungsstufe für Funktion wählen, was passieren wird,
ist, dass jedes Gerät, jede Farbe dieser
Funktion
einen für diese Funktion spezifischen
Schlüssel bereitstellen muss . Indem wir also eine Funktion
erstellen, erhalten wir einen Schlüssel, und dieser Schlüssel muss
in allen Anforderungen an
diese Funktion vorhanden sein, damit
er tatsächlich ausgelöst wird. Wenn wir anonym sagen, ist
es offen, jeder
kann darauf zugreifen. Es sind keine Notwendigkeit für unsere Schlüssel
oder zusätzliche
Sicherheitseinschränkungen. Wenn wir dann admin verwenden, bedeutet
dies, dass der Administrator, der ein Hauptschlüssel
war, der
es dem Administrator ermöglicht,
jede Funktion, überhaupt,
aber nur auf
Admin-Ebene auszuführen überhaupt, , nicht ausgeführt werden kann. Ich lasse das
auf Funktionsebene für null und klicke auf Create. Jetzt, da unsere Funktion erstellt
wurde, können
wir zum
Code gehen und Beschnitt testen. Sobald wir in diesem Blade sind,
wird uns
einen Boilerplate-Funktionscode zeigen . Eine Menge Dinge, die für uns definiert
sind. Sie werden feststellen, dass die
Dateierweiterung hier Punkt CSS ist. Basierend auf der Vorlage, die Sie verwenden,
bedeutet,
dass Sie JavaScript verwenden
oder C-Sharp verwenden usw. Dann
wird diese Dateierweiterung natürlich anders sein. Und wenn Sie das ablegen, werden
Sie feststellen, dass Sie
auch eine Read
Me-Datei Punkt MD haben oder Mark nicht ähnlich ist wie auf GitHub oder 0 DevOps für
Dokumentationszwecke. Und Sie haben auch
Function Dot JSON. Und diese Funktionspunkt-JSON-Datei hat
im Grunde nur
Konfigurationen für verschiedene Bindungen und verschiedene Metadaten
über die Funktion. Hier können Sie also sehen, dass es
spezifisch ist, dass wir
den HTTP-Trigger verwenden und die Methoden
von GET und post
akzeptiert. Wenn wir also packen
und vielleicht patchen und löschen wollen
usw., erweitern Sie einfach
den ganzen Abschnitt. Es gibt vier Methoden. Es gibt Zeiten, in denen Sie diese Datei möglicherweise ändern
müssen, aber im Moment
müssen wir dies nicht unbedingt ändern. Also lassen wir das einfach Ruhe und lassen uns zurück
zu unserem Randolph CS6. Und was wir
hier tun werden, ist den Code durchzusehen. Es ist also wirklich einfacher Code
, bei dem ein paar Bibliotheken verwendet werden. Und hier schließen wir eine Bibliothek
von Drittanbietern ein, die Sie wahrscheinlich mit
NuGet bekommen
müssten , wenn Sie eine unregelmäßige
Dotnet-Anwendung durchführen. Aber wir benutzen hier ein paar
Bibliotheken. Und dann haben wir eine Methode, die ein Augenaktionsergebnis
zurückgibt. Wenn Sie also jemals mit APIs
gearbeitet haben, wären
Sie vertraut, dass
sogar unser regulärer MVC hoch ist. Sie wären mit dem Ergebnis
der Augenaktion vertraut. Beachten Sie, dass die von HTTP ausgelöste
Funktion normalerweise
sehr nützlich ist , um so zu tun
oder nicht so zu tun, sondern um sich wie eine API zu verhalten. Und es ist auch sehr nützlich,
um auf Webhooks zu reagieren. Alles, was HTTP-Datenverkehr in der HTTP-ausgelösten Funktion , ist
im Allgemeinen ist, ist
im Allgemeinen für
diese Art von Operation ausgestattet. Und so können Sie
tatsächlich
eine vollständige API oder eine vollständige
Anwendungslogik erstellen eine vollständige API oder eine vollständige
Anwendungslogik indem Sie eine Reihe von
HTTP-Anfragen ausgelösten Funktionen verwenden, jeweils entsprechend auf die
spezifische Anforderung reagieren. Hier, innerhalb unserer Methode, sehen
wir, dass wir zu
Parametern kommen, ist GTP-Anfrage. Ich rufe mich bei Rick an,
und wir setzen
auch eine Instanz unseres Loggers ein. Also protokollieren wir Informationen in
erster Zeile, wo sie sehen, dass dies ein Prozess
war. Es hieß, wir
bearbeiten unsere Anfrage. Dann erhalten wir
von der Anfrage eine Abfragezeichenfolge mit
dem Namen. Wir erhalten also den Wert
aus der Abfragezeichenfolge mit dem Namen. Und wir speichern es innerhalb
dieser Variablen namens name. Und dann sehen wir bitte den Prozess
des Anforderungstextes in
dem Anforderungstext. Ich suche diesen Anforderungstext, wenn es JSON ist oder streame ihn an JSON, schau hinein und schau nach,
ob du den Namen finden kannst. Hier heißt es, dass Sie
entweder die Abfragezeichenfolge
mit
dem Namen
in der Abfragezeichenfolge
in der URL selbst finden Abfragezeichenfolge
mit
dem Namen
in der werden. Oder Sie können
im Anforderungstext nachsehen ,
falls es sich um
eine Post-Anfrage handelt und nach Daten
suchen, die den Namen haben eine Post-Anfrage handelt und nach Daten
suchen , bitte geben Sie mir diesen Text an. Das ist alles
, was gerade tut. Es hätte
entweder so sein können, weil du normalerweise entweder
nach oben schickst oder ich bekomme, was hier ist. Der Code zeigt Ihnen nur
, dass Sie hier
einen Abfragezeichenfolgenwert erhalten , und hier
erhält er etwas
von einem Meinungsforscher. Das ist alles, was
wirklich passiert. Dann wird es
eine Antwortnachricht formulieren. Und es ist gut zu sagen, ob diese Namensvariable
nicht null oder leer ist, oder es tut mir leid, wenn sie kleiner,
leer ist , geben Sie ihnen
einen Fehler C und Sie müssen sie entweder in
der Kernzeichenfolge anhalten oder
im Anforderungstext. Und wenn es nicht Dollar leer
ist, drucken wir Hello name. Dies wurde erfolgreich ausgeführt. Dann kehren wir zurück, okay, was sind 200 Ergebnisse,
wenn Sie mit
HTTP-Antwortcodes vertraut sind , okay? Die Funktion OK gibt sowohl
einen 200-Antwortcode als
auch diese Nachricht zurück . In Ordnung, das war
ein Rundgang durch den Code. Ich werde es nicht ändern. Das wird es testen. Also lasst uns testen und laufen. Wir sehen hier zuerst wird
OK sagen und testen, machen
Sie einen Post
- oder einen Get Methodenaufruf? Zweitens, welche Art
von Schlüssel, richtig, damit ich das
Hauptschlüsselmonster verwenden kann, denn im Portal sind wir die Administratoren und ein Hauptschlüssel kann sowieso
alles tun. Nun, Sie könnten
es einfach mit einer Funktionstaste testen, da wir es dafür
bereitgestellt haben. Sie können hier einen Parameter hinzufügen oder den Körper hier ändern. Also gehe ich in der Leiche zu
meinem Namen. Das ist eine Post-Anfrage. Wenn ich also auf Ausführen klicke, bekomme ich die
ALU-Ausgabe Alpha 200-Antwort,
hallo, den Namen, den ich eingegeben habe. Dies wurde erfolgreich ausgelöst. Das ist also ein guter Test. Nun springen wir zurück zur Eingabe und ändern die Parameter. Also mache ich diesmal eine
GET-Anfrage und stelle
diese Abfrage und rufe
den Variablennamen auf. Die Parameter im Namen
und im Wert sind also immer noch mein Name. Und ich sage einfach „Dash get“. Und ich weiß nicht, ob
Sie das erleben, aber während ich das Portal
benutze, muss ich einen
Knopf drücken und dann
warten , bis der Charakter erscheint. Das ist also einer der Gründe
, die nicht wirklich gerne direkt im Portal
arbeiten, zumindest für diese
Art von Operation. Es ist ein bisschen langsam für mich, aber du kannst es mich wissen lassen, wenn
du das auch erlebst. Aber wenn ich auf Ausführen klicke, erhalten wir die gleichen Ergebnisse. Diesmal bekam es es aus der Abfragezeichenfolge im Gegensatz zum Anforderungstext wie
für den Beitrag. Wenn ich nun diesen
Abfrageparameter verpasse und dann starte, kommen wir zu unserem Fehler. Dieses HTTP löste Schaum aus, den
Sean erfolgreich ausgeführt hat. Aber bitte geben Sie Daten
wie erwartet ein. Das ist so ziemlich Halt. Die von HTTP ausgelöste
Funktion funktioniert. Ich bitte, dass Daten eingeliefert werden. Wir schreiben Code, um
die Daten zu analysieren sie so zu
manipulieren, was
wir damit tun müssen. Und dann schicken wir vielleicht zurück, wir schreiben ein Protokoll,
damit wir den
Ausführungspfad tatsächlich zurücklegen können . Aber wir lassen sie auch einfach
wissen, welche Art von Reaktion. Also könnte ich tatsächlich NC antworten, wenn der Abfrageparameter nicht null
war, dann geben Sie ein neues möglicherweise schlechtes
Anforderungsobjekt-Ergebnisse zurück, oder? So etwas. Das ist ziemlich viel
Holdout funktioniert. Nein, ich kann
die Funktions-URL tatsächlich abrufen , indem ich oben auf
diese Schaltfläche klicke. Dann wird es sagen,
gib mir den Standardwert. Nun, welchen Link willst du? Es wird also tatsächlich den Schlüssel in dieser URL
enthalten. Will ich den Hauptschlüssel oder möchte
ich eine Funktionstaste? Also habe ich
es auf Standardeinstellung belassen. Und wenn wir uns diese URL
ansehen, benutze ich einfach Notepad Plus Plus. Hier sehen wir, dass wir
die URL zur Funktion nach oben haben. Und dann heißt es Slash-API und dann der Name
der Funktion. Und dann ist Code gleich, und dann diese gedämpfte Zeichenfolge, die dieser Schlüssel ist, Das ist die Funktionstaste. Wenn ich
dies also von irgendeiner Art
von Anwendung ausführen musste ,
die ich schreibe, muss ich es erneut ausführen. Du siehst also
mindestens so aus. Ohne diesen Code würde es
niemals das Ziel erreichen. Er würde
den Antrag einfach ganz ablehnen. Wenn wir die
anderen Seiten durchgehen, die uns
von diesem Bildschirm aus zur Verfügung
stehen, können
wir zur Integration gehen, die
es uns ermöglicht, bestimmte Dinge zu bearbeiten. Also wir Kandidatenauslöser, wir können die Funktion bearbeiten, wir können die Eingaben ändern und die Ausgänge sind
ein Mini-Flussdiagramm, nur um zu sagen, dass es hier beginnt, dies ist der Prozess
und
das ist es, was erwartet wird. Wir können zum Monitor gehen
, der uns im Grunde zeigt, dass alle Hinrichtungen und Hausbesitzer
für sie erfolgreich waren, wie viele von ihnen sind gescheitert? Dann können wir zu
den Funktionstasten gehen, die uns unsere Tasten zeigen. Wir können jederzeit klicken, um
den Wert anzuzeigen , da wir die Funktionstaste
verwenden, unsere Funktionstaste, wenn
Sie ihn jemals abrufen müssen, wenn Sie ihn erneuern, zurücksetzen müssen usw., was auch immer
Sie tun müssen, das ist
so ziemlich zum Einrichten einer HTTP-ausgelösten Funktion.
9. Erstelle eine Timer: Die nächste Art von Funktion, die
wir uns
ansehen werden, ist eine
durch Timer ausgelöste Funktion. Das wurde also auf Funktionen geworfen. Fahren Sie fort und klicken Sie auf Erstellen, und dieses Mal möchten wir, dass der
Timer ausgelöst wird. Also haben wir auf Timer Trigger geklickt
und wir können ihm einen Namen geben,
jemanden, der Timer
ausgelöst Funktion sitzt. Dann können wir den Zeitplan aufstellen. Der Zeitplan basiert auf
einem chronischen Ausdruck. Wenn Sie also
mit Linux vertraut sind, dann
sind chronische Ausdrücke genau so, wie Sie das Intervall
darstellen, in dem
Sie möchten, dass etwas
wiederholt werden soll. Sie können also hier sehen
, dass es in Form einer Sekunde, dann Minute ist,
dann alles was wir sind, so
dass jedes
Sternchen im Grunde diese Zeiteinheit
repräsentiert. So ziemlich hier. Es sieht 0 Sekunden,
aber fünf Minuten. Wenn ich das also in eins ändere, wäre das wie immer Minuten im Gegensatz zu
mehr als fünf Minuten. Und dann würde dieses Sternchen das niedrigere als
das d und dann den Wochentag
oder den Monat
und den Wochentag
darstellen das d und dann den Wochentag . Das ist das alles, was Sie
wirklich planen würden, an das Sie sich gewöhnen
können sich gewöhnen wenn Sie nicht
vertraut sind, wie es ist, aber es sind sehr
mächtige Konstrukte verstehen und schätzen
müssen. Lassen Sie uns also fortfahren und
diese von Timer ausgelöste Funktion erstellen . Sobald das erstellt wurde, können wir zu Code und Test
springen. Und Sie sehen hier, dass es sich einen relativ einfachen Code handelt. Wir haben eine Funktion namens Ron, und sie hat einen Parameter
namens mein Timer, der alle
Dinge enthält, die Sie benötigen ein Objekt zu
umgeben
, das es ermöglicht, es zu erfahren. Ich bin Details über
den
verwendeten Timer und er hat auch die
Logging-Bibliothek. Es protokolliert bei
den Informationen oder
macht einen
Informationslogger jedes Mal, wenn er
ausgeführt wird und den Zeitstempel anzeigt. Wenn ich jede Minute in die
Protokolle schaue, wirst
du das
sehen, also lasse ich es so Minuten und zeige
dir dann die Folgen. Okay, also habe ich zwei Minuten
gewartet. Und dort sieht man
die Hinrichtung für die erste
Minute und die Hinrichtung
zum zweiten Mal. Alles klar? Das ist so ziemlich das, was Ihnen der
Timer-Service bringt. Ich bin mir sicher,
dass Sie über
verschiedene Anwendungen nachdenken , die dies haben könnte, es könnte sich in einer Anwendung befinden,
in der Sie jeden
Morgen oder jede Nacht eine Säuberung
durchführen müssen , oder Sie benötigen eine Stapelverarbeitung um jeden Tag zu einer
bestimmten Zeit einzusteigen. Sie haben eine Reihe
von Anwendungen für Timer, Timer
ausgelöste Funktionen. In dieser Situation
brauche ich es nicht
im Hintergrund laufen. Wenn Sie nicht möchten, dass es im Hintergrund
läuft, können
Sie es immer einfach deaktivieren. Und wir haben uns bereits angeschaut, wie
wir eine Funktion löschen können. Also habe ich diesen einfach deaktiviert vielleicht in der Zukunft,
wenn wir es wieder benutzen, aber das ist
es wirklich für ein Ganzes. Sie erstellen durch Timer ausgelöste
Funktionen und wie sie funktionieren.
10. Erstelle eine Blob ausgelöst von Funktion: Alles klar, als Nächstes
schauen wir uns an, was nötig ist um eine durch Blob
ausgelöste Funktion zu erstellen. Also lasst uns in der Klinge kreieren, wir werden nach Blob suchen. Sobald es geladen ist. Da sind wir los. Also wie dein Blob Storage
Trigger, richtig. Sie sehen also, dass es eine Reihe von
ihnen gibt , und ich ermutige
Sie, sie tatsächlich auszuprobieren. Möglicherweise haben Sie sie außerhalb
dieser Demonstrationen
, die ich mache,
nützlich . Daher ermutige ich Sie
, zu
versuchen, zu sehen, wie das
Quartal aussieht, und sehen Sie, wie der
Bindungscode aussieht. Aber hier, wenn wir den
Blob Storage Trigger machen, kann
ich den Namen ändern, damit die
Blob ausgelöst Funktion ist. Und dann
wird unser Weg sein, im Grunde wird der Weg sein
, wo soll ich hinschauen? Slash, am Ende
verbindender Ausdruck, worauf sollte ich achten? Also hier sage ich, dass
ich nach
dem Namen von allem suche , was im Blob
ist. Das ist ein verbindlicher Ausdruck. Gib mir den Namen, damit
ich auf diesen Thread zugreifen kann. Und dann wird die
Speicherkontoverbindung ziemlich gefragt, wird die
Speicherkontoverbindung ziemlich gefragt, welches Speichersymbol ich verwenden soll? Es wird also
standardmäßig auf einen Wert gesetzt, der bereits mit dem AP
verknüpft in dem
die Funktion gehostet
wird. Also gehe ich weiter und klicke auf „Erstellen“. Und dafür gehen
wir zu Code und Test,
wo wir sehen werden, dass wir
Informationen von einem haben ,
dem Stream, der mein Blob genannt
wird. Und dann der Name, der der verbindliche
Ausdruck ist , den wir eingerichtet haben. Und dann haben wir den Logger. Natürlich ist das
Sitzen und den Blob zu beobachten. Wechseln wir nun
zum Funktionspunkt JSON und schauen noch einmal nach. Also haben wir den Namen
des Typs Blob Trigger, wir haben den Pfad, Samples, Dash Workitems, Schrägstrich den Namen. Was wir also tun müssen, ist einen Blob zu
haben, der mit diesem Namen
existiert. Wenn ich in meinen
Speicherkonten schaue und
zum Speicher komme, gehe
ich und falls
Sie nicht vertraut sind, können
Sie zum Dashboard gehen, Sie können es unter
allen Ressourcen sehen. Wenn nicht, können Sie einfach zu Speicherkonten
gehen. Und dann können Sie auf
Speicherkonten klicken. Das zeigt alle
Ihre Container nicht an. Diese Behälter sind also wirklich die Art, in der die
Akten gespeichert werden. Ich möchte keinen
Container mit diesem Namen haben. Wie auch immer du heißt, ich würde da sitzen einige gestrichelte Arbeitselemente
waren die Standardeinstellung. Das haben wir nicht geändert. Welchen CPI es ändert, egal welchen
Namen Sie dort angeben, Sie müssen sicherstellen
, dass Sie einen Blob haben , der mit diesem Namen existiert. Also werde ich
diesen Container erstellen und einfach
weitermachen und
wissen, dass er existiert. Ich kann anfangen, Dateien hinzuzufügen. Also lade ich einfach
eine Testdatei hoch , die ich auf meinem Computer
habe. Also klicke ich einfach auf
Hochladen und wähle die Datei aus. Und manchmal ist dies
möglicherweise schneller wenn Sie den
Storage Explorer haben. Das ist also ein
Tool eines Drittanbieters, das Sie, wenn
Sie möchten, Microsoft
Azure Storage Explorer installieren
können, mit dem Sie alle seine Speicherkonten und
alles von Ihrem Computer aus verwalten können, aber das ist ein Gespräch
für ein anderes Mal. Teilen Sie die Datei auf und wählen Sie dann meine Testdatei aus und laden Sie sie hoch. Und du siehst, dass ich es im Tab
hochgeladen habe. Wenn ich zurück
zur Funktion gehe
und mir das Log anschaue, das
du hier siehst ,
protokolliert es, dass es eine neue
Datei sieht und das ist der Pfad. Du siehst den Namen dort,
blob dash test.txt. Sie sehen die kreative
Zeiteinfügezeit bei
all diesen Dingen. So
können Sie sich hinsetzen und
das Aufbewahrungsohr beobachten , um es zu sehen. Vielleicht wolltest du Bilder
komprimieren,
sobald sie hochgeladen wurden. Vielleicht willst du sie
bewegen oder umbenennen. Es gibt eine Reihe
von Dingen, die Sie mit so etwas
machen können . Wieder einmal bestimmen Ihre Kontexte
immer
Ihre Bewerbung.
11. Section – Verschiedene Azure-Funktionen: Wo ist das Ende dieses
Abschnitts? Und wir werden nur
überprüfen, was wir gelernt haben. Eine für den Fall, dass Sie es verpasst haben, als wir es
zum ersten Mal wieder gemacht haben, und wir haben es noch dreimal gemacht. Wir wissen, wie man eine neue Funktion
erstellt. Innerhalb unserer Funktion würden
wir also erstellen und dann wählen
wir aus der Liste die Vorlagen aus, die
am besten zu dem passen, was wir brauchen. Es ist besser, es einfach
aus den zehn Fuß zu erstellen , anstatt einen zu erstellen und es dann für einen anderen
anzupassen. Aber lassen Sie uns einfach mit dem arbeiten, was
es uns als Vorlagen gibt. Und wir haben uns
den HTTP-Trigger angeschaut, uns den
Timer Trigger
angeschaut und uns den Blob
Storage Trigger angeschaut. Basierend auf den
verschiedenen Ressourcen
und Diensten, mit denen Sie
am Ende interagieren, können
Sie jedoch und Diensten, mit denen Sie
am Ende interagieren, von Anfang an mit der entsprechenden Vorlage beginnen. unsere
HTTP-Anfragen anschauten, auf die
wir uns konzentrieren sollten, haben wir gesehen, dass wir ein
Mini-Dashboard erhalten haben, das es uns ermöglicht ,
die Ausführungen
zu sehen, die fehlgeschlagen sind, wie oft wir eine erfolgreiche Ursache
haben, vielleicht 400 Anrufe,
500-Klausel usw. All diese stehen uns leicht zur Verfügung. Wir können die Funktions-URL erhalten
, , der der Code oder der Schlüssel
angeschlossen ist, der es uns ermöglicht
,
ihn an jede Anwendung anzuschließen. Wir haben auch besprochen, dass
wir beim
Erstellen der Funktion, zumindest der HTTP-Funktion, zumindest der HTTP-Funktion, sie als anonym
oder für anonymen Zugriff für
eine Sicherheits- oder
Moschee erstellen können eine Sicherheits- oder , um Sicherheit
oder Admin-Ebene bereitzustellen sicherheit. Wir haben uns das alles angeschaut. Dieser ist sozusagen außerhalb
der Funktionsebene beschränkt . Der Code plus Test. Wir können uns den Code ansehen
, den wir ändern müssen. Natürlich, was dieser tut ist, dass es sowohl in
der Abfragezeichenfolge als auch
im Anforderungstext basierend auf
der Art der Anfragen aussieht im Anforderungstext basierend auf ,
die
wir ausführen, wir würden das eine und nicht
das andere vielleicht oder beide verwenden. Es hängt von Ihrem Kontext ab. Wir können von
dieser Schnittstelle aus immer selbst testen und
wir können die Protokolle
genau hier anzeigen , um zu sehen, was
basierend
auf unseren Protokollinformationen passiert , die wir in unseren Code schreiben. Dies ist also die Konsolenära, die uns alle Daten
gibt. Entsprechend. Wissen Sie, wenn
wir zur Integration gehen, erhalten wir einen schönen
kleinen Workflow-Bildschirm ,
der es
uns ermöglicht, einige der
Bindungen zu ändern, und wir werden uns später mit Bindungen befassen. Wir haben also Eingabebindungen
und Output-Bindings. Wir haben den Auslöser
, den wir ändern können. Wir können wieder zum Code springen. Wenn wir im Monitor schauen, sehen
wir hier, dass wir
Zugriff auf die
Anwendungseinblicke erhalten . Denn denken Sie daran, dass wir das
aktiviert haben, als wir die Funktion erstellt haben. So können wir alle
Anrufungen sehen. Jedes Mal, wenn es ausgeführt wurde, war
das Ergebnis, wie lange es gedauert hat, eine erfolgreiche
Ausführung oder nicht. Wir können auch in den Protokollen nach
detaillierteren Protokollen von allem suchen detaillierteren Protokollen von allem , was
mit der App passiert ist oder passiert. Zu dieser Zeit. Wir können auch zu
Funktionstasten gehen und wir können eine neue
Funktionstaste erstellen, wenn wir möchten, wir können eine widerrufen, die wir erneuern können. Wenn wir die
vollständige Kontrolle darüber haben müssen ,
wie diese Funktion funktioniert. Und all das ist nur
die HTTP-Anforderungsfunktion. Aber wir haben auch gesehen,
dass
jeder Funktionstyp zwar ähnlich ist, aber
seine eigenen Nuancen aufweist , basierend auf dem,
wofür er da ist. Der Timer hat einen ausgelöst, wird immer wieder etwas tun basierend auf dem von uns angegebenen
Cron-Ausdruck. Der Blob wollte
uns dabei beobachten unsere Akte
dort abgelegt wird , und dann
kann sie verarbeitet werden. All diese Dinge sind also möglich, mit all dem erledigt, wir haben diesen Abschnitt abgeschlossen. Wenn wir wiederkommen, werden
wir versuchen, Visual Studio zu verwenden, um eine Funktion zu
erstellen. Und wir werden sehen, was die
Unterschiede zwischen der Durchführung im Portal und der Verwendung von
Visual Studio auf unserem Computer bestehen.
12. Azure-Funktionen in Visual Studio: Okay, also in diesem Abschnitt werden
wir
einige Funktionen erstellen , die eine Funktion
mit Visual Studio verwenden. Was ich hier gemacht habe, ist, dass ich Porto
gesprungen bin, erstellt, zu Funktionen
gegangen bin
und dann
das Visual Studio aus
der Dropdown-Liste ausgewählt habe . Und sie skizzieren
alles, was Sie brauchen, um
das zum Laufen zu bringen. Sie werden immer noch
in Visual Studio 2019 erwähnt. Wenn
Sie also damit arbeiten, dann
können Sie kein Problem mitverfolgen. Aber ich werde
Visual Studio 2022 für diese Reihe von Aktivitäten verwenden. Sie können
diesen Anweisungen einfach folgen. Und wirklich und
wirklich das ist
so ziemlich genau das, was ich mit dir
durchgemacht habe. Wenn du das einfach
lesen und
den Rest dieser Lektionen überspringen willst,
dann liegt das an dir. Aber im Moment werde ich fortfahren und wir werden gerade
im nächsten Video zu Visual
Studio
springen und loslegen.
13. Erstelle eine Function: Ordnung, also gehe ich an dieser Stelle davon aus, dass Sie
Visual Studio
bereits installiert haben und Ihre Azure-Workload bereits eingerichtet haben, wie wir zu
Beginn dieses Kurses besprochen haben. Um loszulegen, werden
wir
rüberspringen und ein neues Projekt erstellen. Und dann kannst du filtern. Sie können immer einfach den Zeitraum von
Vorlagen nach Ihren Funktionen
suchen . Oder wenn du es schon sofort getan hast. Irgendwann wäre
es zur Seite. Hier. Ich werde nur
eine 0 Funktionen sehen Fundamentals. Das ist der Name des
Projekts und die Lösung. Und dann klicke ich einfach auf Create. An diesem Punkt werden
sie mir ein paar Fragen stellen. Erstens, welche Art von
Vorlage hätte ich gerne? Ähnlich wie das Portal in dem wir eine Vorlage
auswählen können, fragen
sie mich, ob Sie
einen
Dienstauslöser usw. möchten , Sie in den Vorlagen sehen. Dieses Mal gehe
ich mit leeren , damit wir
ein wenig erforschen können. Also
sage ich leer und dann kann
ich einen Speicheremulator verwenden. Wenn Sie dies also tun,
ohne vielleicht direkten Zugriff auf das
Azure-Abonnement zu oder mit Azure noch nicht so
weit gekommen sind, könnten
Sie tatsächlich einfach
einen Speicheremulator verwenden , in dem wir tun Sie so, als hätten Sie eine Lagerung von Zapfen, die ab dem
Kurs gekauft wurden, mit einigen Einschränkungen. Also werde ich einfach mit all dem
fortfahren und gehe weiter
und klicke auf Erstellen. Sobald dieses Projekt erstellt wurde, können
wir uns einige
der Dateien ansehen , die uns zur Verfügung
stehen. Also wollte ich
mit den Projektdateien beginnen. In dotnet gibt es ine.net Core
Drei-Punkt-Ein-O-Boards, wenn Sie auf die
CS-Annäherungsdatei klicken, können
Sie tatsächlich
die XML-Datei dahinter sehen. Sie können immer
mit der rechten Maustaste klicken und zur Projektdatei
bearbeiten gehen , und Sie
erhalten diese Ansicht ebenfalls. Diese Akte Die ist
ein bisschen größer. Diese Datei
beschreibt wirklich nur die Schriftart, auf
die wir abzielen, das Dotnet sucht
Framework und wir verwenden Azure Functions Version für zum Zeitpunkt dieser Aufnahme, dies ist die neueste und am größten. Und wenn wir arbeiten werden, müssen
wir auf
das Paket Microsoft.Net.SDK
Punktfunktionen verweisen . Und hier
geht es um zwei Dateien, die uns Host Dot JSON und den
lokalen Punkt settings.js SON
gegeben werden . Und sie lassen uns wissen , dass sie sie in das Ausgabeverzeichnis
für
die lokale
settings.js kopieren werden, wenn sie Ausgabeverzeichnis
für
die lokale nie in ein veröffentlichtes Verzeichnis gehen
. Und das liegt wirklich daran, dass
es sich um eine lokale Datei handelt, aber wir werden sehen, warum in ein paar. Wenn wir also zur
Host-Punkt-JSON-Datei springen, ist
es nur eine Konfigurationsdatei. Es sagt OK Version 2, wir werden sehen, wofür das in ein paar
steht, aber es hat auch einige
Konfigurationen protokollieren, wo es
sieht, dass es die Application Insights
verwenden sollte , die ist das, was wir wissen, dass wir in unserer Funktion
aktiviert haben. Das ist wirklich alles,
was dort vor sich geht. Wenn wir uns die lokalen
Loseinstellungen, JSON, ansehen, wird es uns
wissen lassen, dass es nicht verschlüsselt ist und einige Werte
hat. also, dass der Speicher von 0 Web Jobs Wir wissen also, dass der Speicher von 0 Web Jobs
tatsächlich das Speicherkonto sein
soll , das mit einer Funktion
verbunden ist. Aber weil wir
den Entwicklungsspeicher verwenden , der auf true festgelegt ist, ist
dies der Wert, den er sieht. Tu einfach so, als
gäbe es so ziemlich. Und dann gibt es uns die Arbeit oder Laufzeit der Ozeane,
die auf dotnet eingestellt ist, was
etwas sein könnte, das
auf der Art der verwendeten Sprache
basiert . Aber weil wir C-Sharp verwenden, brauchen
wir eine Dotnet-Laufzeit. Das ist also
standardmäßig auf dotnet festgelegt. Das ist also ein grundlegender Rundgang durch
diese Funktionen nach oben. Und die beiden Akten, die wir bekommen haben. Wenn wir zurückkommen,
schreiben
wir tatsächlich Code, um eine Funktion zu
schreiben.
14. Testfunktion in Visual Studio: Alles klar, jetzt
, da wir unser
Projekt in Betrieb haben , haben
wir nicht
eine tatsächliche Funktion. In Ordnung, also klicke ich mit der
rechten Maustaste auf das Projekt, gehe zu Hinzufügen und dann gehe ich
zu der neuen Azure-Funktion. Wenn ich das tue, wähle ich den Namen dieser Funktion
und lasse einfach die Standardfunktion
Ein-Punkt CS will diesmal nicht, dass dies kein
Punkt-CSS ist, aber ich belasse den Standardnamen. Geh weiter und klicke auf Hinzufügen. Ich weiß, dass dieses Dialogfenster
uns fragt , welche Vorlage wir haben möchten. Also haben wir das erste Mal, wenn
Sie ein Projekt erstellen, sind wir mit
einem leeren gegangen, aber es ist Geld. Für jede Funktion, die
wir erstellen werden, sehen
wir dieselben Vorlagen , die im Portal
gesehen hätten. Und jeder von ihnen
würde uns
die gleichen
Konfigurationsfragen stellen , die wir
gesehen hätten , wenn wir sie
im Portal mit einem Timer erstellen würden im Portal mit einem Timer um den
Zeitplan
immer noch mit dem Blob einzurichten, wir können die Verbindung immer noch
einrichten. Nun, dieser ist ein bisschen anders als das, was
wir zuvor gesehen haben, wo wir uns setzen, um
den Weg und eine Reihe von Dingen einzurichten . Nun, ich werde mit
einem Weg des geringsten Widerstands gehen. Gehen wir mit dem
HTTP-Trigger und ich
werde dieses Mal einen
anonymen aussuchen. Und lasst uns weitermachen und hinzufügen. Sobald wir das gemacht haben, erhalten wir
diese Funktionsdatei. Und ich werde feststellen,
dass wir nur die CSV-Dateipunkte haben, die Punkte CS6 fünf. Wir haben auch keine
Funktion, die JSON-Datei enthält. Was passiert, ist, dass wenn wir Visual Studio zum
Erstellen unserer Funktionen
verwenden, es tatsächlich in eine DLL
kompilieren wird. Und wenn Sie
Dotnet lange genug benutzt haben, wissen
Sie, was eine DLL ist. Und dann
haben wir diese DLL alle
Informationen, die das
Portal verwenden muss sobald es bereitgestellt wurde, um
irgendwelche Konfigurationen und
alles andere zu ermitteln , was ich geschrieben habe. Es wird also
von Visual Studio vorkompiliert und
einfach in
Azure bereitgestellt , anstatt sich in einer 0
zu treffen und dann in einer 0 kompiliert
und dann in Azure verwendet, wie wir
es im Portal machen. Sie sind also wahrscheinlich vertrauter
Bereich, wenn Sie
Ihren Code schreiben , und Sie
haben besseren Zugriff auf Intelligenz und Ressourcen
hier in Visual Studio Wir können auch viel mit dem
Debuggen umgehen besser
, weil wir es tatsächlich
einfach im
Debug-Modus ausführen und
unsere Haltepunkte genau
wie bei
jeder anderen Art von Anwendung setzen unsere Haltepunkte genau
wie bei jeder anderen Art von Anwendung , die wir
in Visual Studio erstellen werden. Hier haben wir eine statische Klasse und dann haben wir
den Funktionsnamen. Und dann haben wir eine statische
Methode namens run,
die weiß, dass es sich um
einen HTTP-Trigger handelt. Es weiß, dass die
Autorisierungsstufe anonym ist, was ich
hier immer ändern kann ,
um
beide zu funktionieren, natürlich müsste
man etwas
mehr Konfiguration mit dem Schlüssel haben usw. Aber das ist anonym. Wir haben die verschiedenen Arten von Anfragen, die akzeptiert werden. Also GET und poste. Und dann können wir
eine Wurzel und eine Reihe von
Dingen definieren , die uns direkt hier
zur Verfügung stehen. Letztendlich ähnelt der Code
oder der Code im Hauptteil
der Funktion selbst
dem was wir zuvor
gesehen hatten. Wenn wir das ausführen würden
und ich einfach
F5 drücken und ich setze
einen Haltepunkt, nur um Ihnen zu zeigen
, dass das Debuggen dieser funktioniert. Wenn ich F5 drücke, geht es
zu Visual Studio. Visual Studio-Dinge. Wenn es das erste Mal ist, Sie möglicherweise sehen, dass es einige
Werkzeuge installiert, während es weitergeht. Aber hier sehen wir,
dass es offen läuft. Es lässt uns also wissen, dass ,
um zu dieser Funktion zu gelangen, wir,
um zu dieser Funktion zu gelangen, eine Anfrage
über diese URL senden müssen. Ich leihe mir diese URL aus
und verwende ein Tool , das wir für
EPA-Tests verwenden, namens Postman. Wenn Sie also kein Post-Geld haben, können Sie es immer installieren. Es ist ziemlich einfach, Posts ME n zu
finden, aber es ist ein gutes Tool,
um
beim Testen einfach
zufällige HTTP-Anfragen abzusteigen . Also werde ich einfach
weitermachen und die URL eintragen. Ich lasse es so, wie ich es kriege. Und für die Parameter füge
ich
diesen Namensparameter ein. Und ich habe den Test
vom Postboten als Wert gesehen. Wenn ich dann sende, wird
es eine Verbindung zu
unserer App herstellen, die in Laufzeit ist, IACUC die Haltepunkte nimmt. Beachten Sie also, dass es einen Haltepunkt
setzt, ich kann meine Objekte tatsächlich
abfragen. Schauen wir uns also
die Anfrage selbst an. Das Anforderungsobjekt enthält alles über
die HTTP-Anfragen. Es hat einen Mythos, der benutzt
wurde. Der Pfad, alles, was ich so ziemlich wissen
muss ,
wenn ich keine Anfrage mache, werde
ich sehen, dass der Okayed einen in der Liste
gefunden
hat und dort den Schlüsselnamen und die
Wertest-Anpassung hat. Ich kann feststellen, dass es den Namen richtig machen
soll. Wenn ich also nur F5 drücke, kann
ich diesen
Haltepunkt wissen entfernen, und ich drücke einfach F5,
damit er fortfahren kann. Dann
tauchte das Konsolenfenster auf, als Sie
in den Debug-Modus gegangen sind. Aber wenn ich zurück zu Postman gehe, das ist das Tool, das die Anfrage
gestellt hat, dann werden Sie sehen, dass
es mit einer 200 geantwortet hat. Okay, hallo Tests vom Postboten. Diese von HTTP ausgelöste Funktion
wurde erfolgreich ausgeführt. Das ist nur halten lokale
Tests können passieren, nein. So können wir tatsächlich Tools wie
Postman und jedes andere
Tool
verwenden , das Sie vielleicht haben, vielleicht Fiddler oder
sogar Ihren Browser. Und versuchen Sie diese
Art von Operationen zu machen. Wir können wissen debuggen, und wir können unsere Anwendung
oder eine Funktion besser abfragen, leider
Code, während wir
Geschäftsregeln für Knoten erstellen ,
das ist es wirklich. Jetzt wissen wir, wie man eine Funktion mit
Visual Studio Hall
erstellt ,
um sie zu testen und in Tools
von Drittanbietern in
Ihrem Browser zu integrieren , um
HTTP oder Anfragen auszulösen. Wissen Sie, während wir weitermachen, werden
wir etwas
komplizierter. Aber im Moment
erstellen wir
so eine Funktion
mit Visual Studio.
15. Section in Visual Studio: Ordnung Leute, also das ist es
wirklich für diesen Abschnitt, wir haben uns angeschaut, wie wir Visual Studio 2022
oder 2019 mit Azure
einrichten können , die sich auf Sets
beziehen. Also haben wir als Workload installiert und das ermöglicht es uns, unsere Funktionen zu
erstellen. Und das ist wirklich
nur eine Funktion nach oben. Sie sehen also hier,
dass jede Funktion, die wir in
diesem Projekt erstellen würden ,
eine eigenständige Datei sein würde , die eine Funktion ist. Wenn wir das einsetzen, was wir später tun werden. Das wird nur
unsere Füße nass machen. Aber wenn wir
dieses gesamte Projekt bereitstellen, wird
es wirklich als Funktion mit verschiedenen Funktionen bereitgestellt. Wenn wir eine Reihe
von Dingen haben, die Sie
erreichen möchten , und eine
Funktion pro Aufgabe, dann haben wir ein Projekt
mit jeder Funktion für die Aufgabe, eine Setup-Konfigurationen, die alle diese Funktionen
regeln interagieren miteinander und wahrscheinlich mit jedem
anderen Dienst, den
sie benötigen, und jedem Drittanbieterdienst bei
dieser einen Bereitstellung werden durchgeführt. Wenn wir wiederkommen, werden wir uns
ansehen, wie Sie
Visual Studio-Code verwenden können , um
Ihre Azure-Funktionen zu entwickeln.
16. Verwendung von Azure Function: Alles klar Leute, also
lasst uns gleich darauf eingehen für diesen Abschnitt, in dem
wir
die Azure-Funktionen
mit Visual Studio Code
sowie den Kern-Tools besprechen werden die Azure-Funktionen
mit Visual Studio Code . Also bin ich hier auf einem pH-Wert, wir arbeiten mit einer 0
Funktion Kern-Tools ist die Überschrift, damit Sie dorthin gelangen
können, Sie können einfach
Ihre Foam Shedding Core-Tools googeln, und es ist die
Microsoft-Dokumentation Ciceronian, Die Kern-Tools
ermöglichen es uns, Funktionen lokal zu entwickeln und zu testen. Dies ist also eine bessere Option als Visual Studio, da
es plattformübergreifend ist. Es erstellt also eine Laufzeit
auf Ihrem Computer, um zu simulieren, wie die
Laufzeit der 0-Funktion aussehen muss. Und dann können Sie sich natürlich lokal entwickeln
und testen , bevor Sie veröffentlichen. Natürlich können Sie dies erneut tun, wenn Sie dies besuchen ,
aber das ist nicht immer
eine Option, die auf
Ihrem Betriebssystem und
anderen Einschränkungen basiert Ihrem Betriebssystem und , die Sie möglicherweise haben. Was wir mit
den Kernwerkzeugen machen können, wenn wir nach unten scrollen, sehen wir
die verschiedenen Versionen. Also verwende ich jetzt Version vier, weil ich natürlich dotnet
sechs Aufzählungszeichen verwende,
basierend auf dem, auf dem du feststeckst oder
auf welcher
Version von Dotnet auch immer, vergewissere dich, dass du
die richtige Version verwendest der Kernwerkzeuge
für die Installation. Wir haben die
Anweisungen für Windows, Mac OS und Linux, oder? Basierend auf Ihrem
Betriebssystem verwenden
Sie also das
, was Sie benötigen. Ich bin unter Windows, ich
werde das
64-Bit-Gerät verwenden , das
den typischen Windows-Installer startet , an den wir gewöhnt sind. Und wir können einfach weitermachen und jedes Mal auf
Next klicken und es installieren
lassen. Und während das
im Hintergrund passiert, werde
ich nur zeigen,
bis sie auch
zu den Kern-Tools von GitHub gelangen können . So können Sie zum
Azure-Projekt gehen und sich eher auf
Azure Functions- oder
Azure-Konten freuen , Andrew for Azure
Function Kerntools als ihre Funktionen Kerntools. Und dann, dass diese
Installationsanweisungen haben ,
je nachdem was immer Sie stecken, wahrscheinlich ein bisschen mehr
Informationen, als Sie in der
Microsoft-Dokumentation
leicht sehen würden . Diese Option existiert also auch. Niemand sagt fertig, ich werde einfach
meinen Visual Studio-Code starten. Und was ich normalerweise mache, wenn
ich ein neues Projekt
erstellen muss , ist, dass ich einfach
einen neuen Ordner erstelle. Ich habe
irgendwo auf meinem Computer einen neuen Ordner erstellt und geöffnet. Und ich gehe
davon aus, dass Sie mit Visual
Studio Code
vertraut sind , aber wenn nicht, klicke
ich normalerweise einfach auf Ordner
öffnen und dorthin
navigieren, wo
ich möchte, um den Ordner zu erstellen und dann benutze den Ordner
, den ich gerade erstellt habe. Und das ist es, was mein Projekt
erzeugt. Ich werde alle meine 0 Funktionen ohne verwandte
Operationen ausführen. In dieser Schnittstelle. Lassen Sie mich das einfach ein bisschen
größer machen, damit wir es sehen können. Das nächste, was
ich tun wollte, ist ein Eingabeaufforderungsfenster zu
öffnen. Wenn Sie also in Linux sind,
wenn Sie in Scheint sind, unterscheiden
Sie sich vielleicht
von Hawaii, ich benutze es, aber am Ende
des Tages können
wir uns alle einig sein, dass die Eingabeaufforderung auf
jeder Plattform
sehr ähnlich aussieht allen Befehlen, die ich hier verwende, werden das Betriebssystem verwendet werden, das
Sie zur Überprüfung verwenden. Nun, zuerst
habe ich
zu dem Ordner navigiert , in dem ich
weiß, dass mein Projekt ist. Und dann habe ich es nicht gesehen. Und dort
haben wir überprüft
, ob die Kern-Tools erfolgreich installiert
wurden. Also bekommen wir dieses nette
Besondere unerzählt. Und dann haben wir die
gesamte Dokumentation rund um die verschiedenen
Befehle, die wir ausführen können. Hier sehen wir, dass Unit eine neue Funktion
im aktuellen Ordner
erstellen und ein Git-Repo
initialisiert.
Also lasst uns das versuchen. Also habe ich es durchgemacht,
wenn UNC Platz drin ist. Und dann werde
ich aufgefordert, die Laufzeit auszuwählen. Also wollte ich natürlich
die Dotnet-Laufzeit aufteilen ,
da wir
C Sharp verwenden und es niedrig machen, also macht es seine Sache. Ich sehe hier, dass es
in den Dateien im
Hintergrund gefüllt ist , während
es sein Ding gemacht hat. Nein, ich habe
denselben Befehl innerhalb
des Terminals ausprobiert denselben Befehl innerhalb , der
in Visual Studio-Code integriert ist. Und wie Sie sehen können, habe
ich einen Fehler. Also hatte ich gehofft, dass wir
alles aus dem
Terminal machen könnten alles aus dem
Terminal statt Visual Studio-Code. Aber es gibt eindeutig einige Einschränkungen
, und das ist kein Problem. Wir müssen also nur verstehen , welches Tool für
Watt verwendet werden kann, wenn wir es brauchen. Ein Blick rüber auf den
Fuzzer wurde geschaffen. Wir haben diesen Thought
VS-Codeordner , der eine
Erweiterungsdatei enthält, nur um sicherzustellen, dass die Azure-Tools oder die
0-Funktionstools installiert sind, um uns die
bestmögliche Erfahrung zu bieten Visual Studio-Code. Wir haben auch den Gitignore. Es hat die CSV-Datei erstellt
, mit der wir vertraut sind, und die anderen beiden
JSON-Dateien, die
ebenfalls bereits vertraut waren . Wenn ich eine neue Funktion wollte
und nur eine Notiz,
denken Sie daran, dass
wir uns zur Laufzeit auffordern, als wir func
init gemacht haben . Möglicherweise
möchten Sie also nicht unbedingt eine dotnet.net-Laufzeit. Möglicherweise möchten Sie eine pünktliche Bestellung oder eine Python-Laufzeit basierend auf Ihrer Verzerrung zu Ihrer bevorzugten
Programmiersprache und -umgebung. Und das ist vollkommen in Ordnung. Tatsache ist, dass es
viele verschiedene Sprachen unterstützt. Ich konzentriere mich nur auf Dotnet , weil ich einen
Windows-Computer habe. Und wenn du ein
Mock benutzt hast und das ist keine
wirkliche Entschuldigung. Ich sage nur, dass ich mich auf dotnet
konzentriere ,
weil wir das für diesen Kurs
tun. Wenn ich also eine neue Funktion will, benutze
ich das, wenn du den Befehl nicht wieder
siehst und
dann würde ich New sagen. Und wenn Sie sich nicht sicher sind, können
Sie immer
wieder nach oben gehen und sich
die Befehle ansehen ,
die es mir ermöglichen aus der Liste
auszuwählen,
welchen neuen Typ R, welche Vorlage ich für meine neue Funktion
wünschen würde. Also werde ich mich für einen entscheiden
, den wir vorher noch nicht gemacht haben, diesen kleinen Cosmos DB
Trigger. Das schaffe ich. Drücken Sie die Eingabetaste, dann
wird gesagt wie der Name b sein soll. Ich habe Funktion Cosmos DB
ausgelöst. Und wenn ich dann die Eingabetaste drücke, wird
es dann weitermachen
und seine Magie machen. Und im Hintergrund sehen
Sie dann das entsprechende Datei-Pop-up
in Ihrem Visual Studio-Code. Das fasst das ganze Wochenende zusammen Verwenden Sie die Azure-Core-Tools und die Befehlszeile, um den Prozess zu
starten. Jetzt verwenden Sie Visual Studio
Code
möglicherweise nicht als Editor. Sie verwenden vielleicht einen
anderen Editor, aber für die Verwendung der Kern-Tools können
Sie hier tatsächlich
alles richtig machen. Und selbst wenn Sie Notepad Plus, Plus
verwenden, könnten
Sie einfach
alle Dateien bearbeiten, die im Ordner
hinterlegt werden die im Ordner
hinterlegt ,
sobald Sie
Ihre Befehle hier ausführen. Wenn wir also wiederkommen, werden
wir uns
mit der
Verwaltung des Projekts befassen und nur Visual Studio Code verschmelzen.
17. Visual Studio Code verwenden: Alles klar Leute, also werden
wir
Visual Studio Code verwenden , um eine Funktion
von Grund auf neu zu
starten. Und wir werden uns die verschiedenen Tools
und verschiedenen Nuancen
ansehen und verschiedenen Nuancen , die es von
der Verwendung der Kern-Tools und
Visual Studio selbst
unterscheiden . Also lasst uns das sagen,
lasst uns anfangen. Das erste, was Sie
sicherstellen möchten, dass wir dies bereits erwähnt haben, aber ich werde es noch einmal erwähnen. Stellen Sie sicher, dass Sie
die Azure
Functions-Erweiterung installiert haben . Wissen, was ich habe, ist die
Azure Tools-Erweiterung ,
mit der mitgeliefert wurde
Es ist ein Erweiterungspaket. Es kam also mit einer Reihe von
Azure-verwandten Erweiterungen. Und das habe ich einfach gemacht, weil ich ein paar Azure-Entwicklungen
mache. Ich bevorzuge es,
sie einfach zu haben, wenn ich
bereit bin , dann zu der Zeit auf die
Jagd zu gehen. Wenn Sie jedoch nicht
den ganzen Park wollen, kein Problem. Sie können einfach nach
der Azure
Functions-Erweiterung suchen , indem Sie einfach hier
nachsuchen. Und dieser wird Ihnen nur das geben
, was Sie brauchen, um sicherzustellen
, dass Sie
Ihre Azure Function-Entwicklung durchführen können . Das Durchlesen der Dokumentation ist eigentlich ziemlich
informativ und es zeigt Ihnen, wie Sie
sie installieren und einrichten und ausführen und bereitstellen können. Wenn die Zeit reif ist. Das Emblem in der
Dokumentation unterscheidet sich geringfügig von dem
Emblem, das ich
zumindest zum Zeitpunkt dieser
Aufnahme auf dem Bildschirm habe . Aber das ist in Ordnung. Ich vermute, dass sie sowieso
sehr ähnlich arbeiten werden. Also klicke ich
einfach darauf als deinen Abschnitt und dann kann ich
alle Funktionen anzeigen. Ich habe einen brandneuen Ordner erstellt
, den Sie auch bei Bedarf
tun können,
aber lassen Sie uns das einfach
durcharbeiten. Hier habe ich also die Möglichkeit
, ein neues Projekt
zu erstellen, eine neue
Funktion
zu erstellen, wenn ich
bereits in unserem Projekt bin , und die Funktion bereitzustellen, was das
gesamte Projekt wäre. Also fange ich einfach
mit einem kreativen Projekt an. Was mich dann fragt, seltsam, möchten
Sie
dieses neue Projekt so platzieren, dass Sie zum Durchsuchen gehen und dann
einen neuen Ordner erstellen können ,
wo immer es ist. Ich habe bereits einen
Ordner namens
dein Telefon erstellt , Seans
Fundamentals-Code. Es ist im Grunde genommen an der gleichen
Stelle wie die vorherige , an der ich die
Kern-Tools verwendet habe, wird
uns sagen , dass wir das auswählen. Und dann haben Vorfälle
mich gebeten, eine Sprache auszuwählen. Ich werde mich mischen. Es ist darüber. Wir haben es die ganze Zeit mit
C-Sharp zu tun, hauptsächlich weil es Windows war
und weil ich
Visual Studio benutze und wir Visual Studio
in Zukunft
verwenden werden , beide in einer Open-Source-Sitzung. All dies sind
Optionen, mit denen Sie jemanden haben
können. Typoskript macht
etwas anderes, dann wollen sie eine Vorlage für die erste Funktion, die wir überspringen
können die dem Erstellen des
leeren Projekts in
Visual Studio und dem späteren Hinzufügen
der Funktionen
ähnelt . In dieser Situation fange
ich
einfach mit einem HTTP-Trigger an. Also lass mich das machen. Ich belasse den Standardnamen, drücke die Eingabetaste und
mache ihn anonym. Und mit all diesen
Donuts erschaffen. Und dann hat es Gitter in
einem Projekt fertiggestellt und dann
hat es eine Menge Dinge gemacht. Und es hat für mich ein
Git-Repository mit all
diesen Standarddateien initialisiert , wenn ich die Projektliste
hochgehe, einen VS-Codeordner
habe, der die Erweiterungen und
Initialisierungsdateien
enthält ,
um sicherzustellen, dass ich Die beste Erfahrung bei der
Verwendung von Visual Studio Code, ich habe einen Ordner für den HTTP-Trigger, der die Funktion dot js
hat. Wir wissen bereits, was diese Datei weit
ist, wir haben sie schon einmal gesehen. Es hat auch diese Indexdateien. Im Gegensatz zur C-Sharp-Datei, die eine Punkt-CSS-Datei enthält,
habe ich mich für TypeScript entschieden, also ist es keine TSV-Datei, die wirklich nur eine
gekapselte JavaScript-Datei ist. Wenn Sie Tür kennen, keine Entwicklung oder
Winkel und so, dann Code TypeScript sieht so ziemlich aus, es ist nur eine JavaScript-Version
dessen, was wir bereits wissen. Es nimmt die Anfrage
als HTTP-Anfrage an. Es macht seinen Kontext, der der Kontext der
Funktion ist, in der protokolliert wird. Und dann holen wir uns den Namen entweder
aus der
Abfragezeichenfolge oder dem Body. Dann drucken wir aus, ob
die Daten zurückgekommen sind oder nicht. Wir haben eine Akte. Wir haben eine Funktion ignorieren Datei, ich habe eine Geschenk-Ignore-Datei, und dann haben wir die
Host-JSON-Dateien. Sie sehen hier also, dass die
Laufzeit beim letzten Mal genagt wird , wenn sie in dieser Paketdatei Punkt
wäre. Und wir haben eine TS-Konfigurationsdatei. Alles klar. Das sind alle Akten
, die wir aus der Box holen. Ich werde einfach weitermachen und diesen jemanden
ausführen, um
mit dem Debuggen zu beginnen. Möglicherweise sehen Sie, dass es ein paar andere
Dinge auf Ihrem Computer
installiert. Natürlich ist es
unerlässlich, dass die neueste
Version von Node in dieser Situation bereits installiert ist , damit dies tatsächlich lokal
ausgeführt wird, da
offensichtlich von Übelkeit abhängt und Node und npm
installiert werden
müssen deine Maschine. Wir sehen hier in der
Konsole, dass wir die URL zu unserer Funktion
haben. Wir halten den Testis nicht
oder können entweder einen Browser
benutzen oder
Postman benutzen. Um zu verfälschen, bitten Sie jemanden, sich für einen Postboten
zu entscheiden, ich werde die neue URL eingeben, also ist es was auch immer Sie,
oder er gibt Ihnen hier, Slash API-Schrägstrich
HTTP-Trigger eins. Und dann habe ich die
Abfragezeichenfolge für den Namen eingegeben. Also bin ich gegangen, um das zu schicken. Du siehst hier, dass das Logo und der Hintergrund
verrückt geworden sind, oder? Also hat es die Aktivität heruntergekommen. Und natürlich haben wir diese
Antwort als 200 OK Antwort bekommen. Das ist so ziemlich für die
Verwendung von Visual Studio-Code Debuggen der Formation
in Visual Studio Code. Und dann können wir
natürlich einsetzbar sein. Wir haben uns das alles angeschaut. Wir werden
die gesamte Entwicklung einer ganzen Reihe
von
Funktionen in wenigen durchlaufen , aber wir machen
es nur Schritt für Schritt? Nein. Kurz bevor ich weitermache, kannst
du
weitermachen, wenn du willst, aber du musst nicht
unbedingt Laufzeit der Kernwerkzeuge
einsetzen. Es ist zwingend erforderlich, dass Sie
wissen, welche Version
der Core Tools Laufzeit im Vergleich Switchd-Version von
Dotnet Sie verwenden. Dotnet Six ist zum Zeitpunkt
dieser Aufnahme noch relativ neu. Die Werkzeuge werden nicht
immer mühsam und 24 Wochen
sein. Also habe ich hier die
gleichen Schritte durchgemacht und ein neues Projekt
erstellt,
aber diesmal ein neues Projekt
erstellt, habe ich mich für C-Sharp entschieden. Und Sie sehen
hier, dass Sie
verwenden können.net Core drei
sind dotnet F5. Ich habe mich für dotnet F5 entschieden, und dann habe ich genauso einen
HTTP-Trigger gemacht. Also habe ich natürlich gesagt, dass all
dies eine
brandneue Funktion öffnet , indem ich den Ordner
brenne, tut mir leid. Verwende einfach alles hier um. Das ist eine
C-Sharp-Funktion, die
genauso aussieht wie das, was wir gesehen haben. Wenn ich also nur einen Lauf mache, wollte
ich nur ruinieren und
sicherstellen, dass meine Laufzeit ist, ich würde aufhören,
ein Dotnet-Projekt mit
Visual Studio Code zu erstellen . Es war wie gesagt,
das Werkzeug könnte nicht unbedingt stabil sein. Es muss zu der Zeit sein, aber hoffentlich sind
all diese Nuancen weg, wenn
Sie diesen Kurs machen . Also ja, es war erfolgreich. Hier sehen wir, dass die Laufzeit
um ist und ich meine C-Sharp
Beast-Funktion erfolgreich debugge. Ich sehe all das, um zu
sagen, dass vielleicht, wenn Sie mit einem
Kern-Tools arbeiten und Sie
möglicherweise in einer Version sind und dann versuchen
Sie es in
Visual Studio Code zu bearbeiten und dann versuchen,
im Debug-Modus zu laufen Visual Studio-Code, Sie
haben möglicherweise nicht unbedingt die beste Erfahrung wenn die Werkzeuge und die
Abneigung nicht identisch Möglicherweise
erhalten
Sie seltsame Fehler wie fehlende
Konfigurationen und ähnliches. Also weise ich nur darauf
hin, dass es für den Fall, dass Sie so
enden, es ist besser,
an einem Ort anzufangen und
alles an einem Ort zu machen. Wenn Sie also mit
Visual Studio-Code beginnen ,
alles da. Dasselbe gilt für Visual
Studio usw. all das erledigt und gesagt wurde, nenne
ich es in dieser Lektion
beendet. Ich hoffe, Sie haben gelernt und vor Ort ausgerüstet und bereit für
das bevorstehende Projekt.
18. Abschnitt mit Azure-Funktionen in Visual Studio Code: Alles klar Leute, so weiter. In diesem Abschnitt haben wir uns alternativen Tools
zu Visual Studio befasst. Visual Studio ist natürlich eine große
Umfrage für Biest, aber es ist nicht immer die beste oder einzige Option
für manche Personen. Wir haben uns angeschaut, dass Sie
tatsächlich die Kern-Tools bekommen können . Du kannst es von dort aus drehen. Sie können einen normalen
Texteditor und ein paar Befehle in
der Eingabeaufforderung verwenden. Und Sie können zumindest
eine gute Erfahrung mit der
Entwicklung Ihres Telefons machen. wird gezeigt, dass es bereitgestellt und mit ihnen
interagiert wird. Wir haben uns auch
Visual Studio Code angeschaut, sehr
kritisch ist , was
Visual Studio Ihnen bietet. Und es verfügt über hervorragende Toolsets, eine Intelligenz, die Ihnen
bei Ihren Entwicklungsaufgaben hilft . Es erlaubt es, genauso zu
debuggen, wie wir uns ein paar Dinge leihen. Es ist eine sehr gute, wie ich schon sagte, für eine Sekunde. Wenn Sie kein Visual Studio haben oder das keine Option für Sie ist. Visual Studio Code ist eine
hervorragende Ressource, die verwenden können, wenn Sie
Ihre Azure-Funktionen entwickeln möchten.
19. Azure und langlebige Funktionen: Hey Leute, willkommen zurück. In diesem Abschnitt werden
wir uns
einige andere
Funktionen oder Funktionen ansehen einige andere
Funktionen oder Funktionen , die wir wahrscheinlich
noch nicht behandelt haben. Also ging ich etwas
tiefer in die Eingabe- und
Ausgabebindungen ein. Wir haben das früher angesprochen, aber wir werden
einige praktische Beispiele durchgehen. Wir werden uns auch
Durable Functions
und Kunstgeschichte ansehen . Und wir werden uns
ansehen, einen Handler einzurichten. Also werden wir
Visual Studio-Code für die
meisten dieser Aktivitäten verwenden . Und Sie werden sehen, wie Sie
Funktionen ein bisschen robuster machen können. Und das ganze Wochenende
lassen sie mit
anderen Diensten außerhalb eines Auslösers oder
einer Ursache interagieren . Also bleib hier. Wir haben einige
Dinge zu erledigen.
20. Einfuhrund Input: Ordnung Leute, also haben wir uns in dieser Lektion
Input- und Output-Bindings angeschaut . Ein- und
Output-Bindings für zu viel beziehen sich buchstäblich auf
Input und Output, eine Quelle für Eingabe und
Ziel für eine Ausgabe. Also habe ich bereits
ein brandneues Projekt erstellt. Ich bin hier zur Azara-Registerkarte gegangen. Und dann sagte ich, erstellt ein neues
Projekt und es zeigt einen Knoten oder eine TypeScript-Vorlage
für dieses spezielle. Also
benutzen wir das einfach hier. Nein, mir ist
mit den Werkzeugen klar , dass einige der Dinge, die
wir durchmachen werden, verschiedene
Dinge sehen werden, basierend auf der Projektvorlage, die Sie die Funktionsweise
der Werkzeuge
verwenden. Denken Sie daran, vieles
davon ist brandneu. Im Laufe der Zeit könnte es also gleich gehorcht
werden und nicht
erleben, was ich als potenzielle Lücke
hinweisen könnte. Ich wähle jedoch diesen
Weg des geringsten Widerstands weil wir einen Assistenten erhalten wenn wir
eine Eingabebindung hinzufügen möchten. Wenn wir diesen
Assistenten erhalten und
die entsprechenden Informationen
darüber eingeben , was zu tun ist, wird ein Block von
Konfigurationscode
generiert, der global ist. Egal welche Vorlage, auch wenn Sie
den Assistenten selbst nicht erhalten, können
Sie immer noch beobachten, ob Sie unserem Konto
nicht
folgen möchten, folgen Sie basierend auf dem ausgewählten
Vorlagentyp. Wenn der Code jedoch
generiert wird und wir
überprüfen, ob Sie ihn
tatsächlich in Ihre
eigene In-Dot-JSON-Datei stecken und nur eine Szene
fortsetzen können. An diesen Punkten. Ich werde sie
alle auf
eine andere Sache hinweisen, die wir
für diese Aktivität benötigen ist der Cosmos
DB-Speicheremulator. Sie können dies durch
eine einfache Google-Suche erhalten ,
nur die Google-Suche, einen 0 Cosmos DB-Emulator, zur
Microsoft-Dokumentation
gehen und Sie können diese auf
Ihrem Windows-PC installieren. Wissen Sie, wenn Sie diese Option nicht
haben, können
Sie tatsächlich zu
Azure gehen und
den Cosmos
DB-Dienst selbst bereitstellen . Und das ist ziemlich einfach. Die sehr ähnlichen Schritte
wie ich
im Emulator machen werde. Wir können unabhängig davon im
Dashboard
repliziert werden . Also verwende ich den
Emulator für diese Aktivität. Cosmos DB wird also
als unsere Input-Bindung dienen. Und wenn wir dann bereit sind
für den Ausgabeteil davon, stellen
wir eine Azure-Tabelle oder wenn wir dort ankommen,
können wir es anhand
der Aktivität herausfinden , die ich hier nur nach Gehör
spiele. Wenn Sie
den DB-Emulator installiert haben und starten und gestartet haben,
wird im Browser angezeigt, der
ungefähr so aussieht. Und Sie würden sehen, dass es Ihnen sagt es läuft, gibt Ihnen den URI, gibt Ihnen den Primärschlüssel und es gibt Ihnen die
Parameter-Verbindungszeichenfolge. Das werden wir alles brauchen. Sie können auch zum Explorer gehen. Sie können eine neue
Datenbank erstellen und dort verschiedene
Container erstellen. Ich werde das entfernen,
weil ich es von Grund auf neu
mit euch
machen wollte . Beginnen wir also damit,
diese Verbindungszeichenfolge zu erhalten und dann wieder
zu unserem Projekt zu springen. Was wir tun müssen, ist,
das Projekt noch über
diese neue Verbindungszeichenfolge zu Ihrer lokalen JSON-Datei
settings.js springen
zu lassen diese neue Verbindungszeichenfolge zu Ihrer lokalen JSON-Datei
settings.js springen . Sie hier sicher, dass
der Azure Web Jobs-Speicher Verwendung von
Entwicklungsspeicher gleich true sieht. Was auch immer die in der Laufzeit
gezeigte Form ist, wir wissen, was dieser Zweck
oder der Zweck davon ist. Aber lassen Sie uns unsere
Verbindungszeichenfolge einsetzen. Also nenne ich
es einfach Cosmos DB-Verbindung. Dann sehe ich einen Doppelpunkt
und lege dann den Wert ein, der die primäre
Verbindungszeichenfolge ist , die wir gerade
vom Emulator bekommen haben. Gehen wir also zurück zu unserem Emulator und
erstellen unsere Datenbank. Also im Explorer
der neuen Datenbank, und wir werden sagen, dass
wir einen Blog erstellen. Was wir tun werden, ist
sicherzustellen, dass wir die WIG für den
Bereitstellungsdurchsatz
haben. Wir lassen es auf automatischer Waage. Und das Coole an den
Emulatoren, dass, was auch immer Sie hier als Einstellungen
einrichten, wenn Sie
die MLA-Version machen, manchmal eine
genaue Schätzung erhalten wie viel es in einem kosten würde
besonderer Grund auf Azure. Es ist also ein gutes Werkzeug für die lokale Entwicklung und das
Testen und den Nachweis von Konzepten. Wir nennen es Blog. Und dann
geben wir dir die neuen Container. Klicken Sie also einfach auf neuen Container und wir wählen
die Container-ID aus. Container wären Posts. Und guter Partitionsschlüssel, Partitionierungsschlüssel hier präsentiert,
würde den zu verwendenden Indexwert indizieren. Das wird Blog-ID sein. Also klicken wir einfach auf Okay. Und wenn wir dann
Beiträge ablegen und uns
Elemente ansehen, die Sie hier sehen, haben Sie die
ID des Beitrags
und die Blog-ID ist
der Partitionsschlüssel. Während wir hier sind, werden
wir in
einen Blogbeitrag schreiben und Sie können hier ein paar Blogbeiträge,
x2i-Contest Bullet,
eintragen . Ich gebe nur einen Ausweis ein, Blog-ID, beide sind eine. Der Titel, der
Inhaltskommentarblock, nur etwas, um ihn
aussehen zu lassen. Wie
sieht
unser Dokument wirklich in Cosmos DB aus. Du kannst einfach
weitermachen und das machen. Sie können einfach auf neues Element klicken. Sie erhalten diesen bearbeitbaren Abschnitt und klicken dann auf
Speichern, wenn Sie fertig sind. Und am Ende
der Operation erhält
Ihr Datensatz
noch mehr Metadaten. musst du dir
keine Sorgen machen. Aber so
sollte der Rekord in Cosmos DB aussehen. Lassen Sie uns zu unserer
Funktionspunkt-JSON-Datei übergehen und
die Konfiguration hinzufügen. Jetzt gibt es zwei Möglichkeiten
, Konfigurationen hinzuzufügen, und ich mache
es auf manuelle Weise
oder zeige
Ihnen zumindest den manuellen Weg, oder zeige
Ihnen zumindest den manuellen Weg weil basierend auf den Werkzeugen und basierend auf der
Projektvorlage dass Sie sich möglicherweise gespuckt haben, haben
Sie diese Option möglicherweise oder auch nicht. Zum Beispiel verwende ich die TypeScript-Funktionen,
das Projekt oder die Vorlage. Wenn ich mit der rechten Maustaste klicke, sehe ich dort
die Option, Bindung hinzuzufügen. Und was das macht,
ist, dass
ein kleiner Assistent angezeigt wird, der
es mir ermöglicht, die verschiedenen
Konfigurationspunkte basierend auf der Art
der Konfiguration, die ich mache, auszufüllen die verschiedenen
Konfigurationspunkte basierend auf der Art
der . Nicht alle
Projekttypen haben das , weil ich bemerkt habe,
dass es nicht
in einem
C-Sharp-Funktionsprojekt vorhanden ist oder versucht hat. Also zeige ich
dir einfach, wie es aussehen würde. Im Allgemeinen, ob
Sie TypeScript,
Python, Java, C-Sharp usw. verwenden . In Form von JSON sind hier alle
Bindungen konfiguriert. Also haben wir hier, wir haben einen für den N. Wenn Sie es
also sehen, bedeutet das, dass
es eine Eingabebindung ist. Wenn Sie sehen, bedeutet das
eine Ausgabebindung. Wir hatten also bereits
zwei standardmäßig, nirgends haben wir noch einen hinzugefügt. Sie können also einfach das Komma hinzufügen
und einen neuen Objektblock
starten. Und dann ist der Typ
Cosmos DB Richtung im Namen
ist
Eingabedokument. Du könntest das
ändern, du könntest
es Blogs nennen ,
was auch immer es ist, wie dieser Name eine Rolle im Code selbst
spielen wird . Also nenne ich es
das Eingabedokument. Wenn Sie den Standardwert verwendet hätten, wäre
der Assistent auch auf das Wort oder das
Namenseingabedokument eingestellt. Der
Datenbankname lautet jedoch Blog. Wir haben eine Sammlung
namens Posts erstellt. Also Datenbankname,
Sammlungsname. Dann haben wir
Verbindungszeichenfolge sitzen. Dies wird den
gleichen Namen haben wie die Klinik gezeigte Stream, den wir zuvor erstellt
hatten. Und dann haben wir die ID
und die Partitionsschlüsselknoten-ID. Hier erfahren Sie, welche Bindungsparameter ich
verwenden sollte , um die ID-Werte zu erhalten. Wenn ich also eine Abfrage sehe, ist
dies zu diesem Zeitpunkt wie ein
Superglobal. Um diese Abfrage zu sehen, wird der Abfragezeichenfolge
ähnlich sein
, die eingeht. Denken Sie also daran, dass die
Standardvorlage für eine von HTTP ausgelöste
Funktion
die Anforderungspunkt-Abfrage den Variablennamen enthält. Oder in C-Sharp
würden wir uns die Anfrage ansehen. So ziemlich eine
Abfrage ist genau das, was sie als
Abfragezeichenfolgenvariable erkennt. Eine Abfragezeichenfolge
sucht also nach einer Variablen namens ID für den Partitionsschlüssel, wir verwenden auch ID-Geschichten
und dasselbe, nein, sie befinden sich beide in geschweiften Klammern weil es eher
wie eine Bindung ist. Bindungsparameter
im Gegensatz zum Wert. Das sind die verbindlichen
Parameter, die wir wollen. Nein. Sie könnten hier
tatsächlich wie
eine SQL-Abfrage als einen
der Schlüsselwerte angeben
SQL-Abfrage , die
es Ihnen tatsächlich im Kontext
einer Cosmos DB und
potenziell anderer
datenbankbezogener Eingabevariablen ermöglichen würde einer Cosmos DB und , Input-Bindung, Entschuldigung,
Sie könnten
Ihre SQL-Anweisung tatsächlich hier schreiben , um sie auf Wunsch kompliziertere
SQL-Anweisung zu erhalten. Aber in diesem Fall
halten wir es einfach. Alles, was wir wollen, ist die ID
einzugeben. Es sollte gehen und es für uns
von Cosmos DB abholen, und dann können wir es danach
bearbeiten. Jetzt gebe ich
dir einfach eine kurze Demo wie
der Assistent aussehen
würde. Sie klicken also einfach mit der rechten Maustaste auf die
Funktion in der Liste. Sagen Sie beim Binden, wählen Sie aus, Sie wählen den Typ aus. Lassen Sie mich hineinzoomen, damit
Sie besser sehen können. Und dann, wie gesagt, verwenden
wir Cosmos DB, Sie würden den Namen wählen, also belasse ich ihn als Standard. Sie wählen den Namen
der Datenbank wählen den Namen
der Sammlung aus. Sie wählen aus dem Connect die Verbindungszeichenfolge
aus Ihren Einstellungen und geben ihr
dann die Dokumentkennung. Das wäre also so verbindlich
gewesen. Es wird also Abfrage gesagt. Nur um ihn seltsam mit
dem Partitionsschlüssel zu sehen, hätte
ich gesagt: Woher bekomme ich den
Partitionsschlüsselwert? Weil ich die ID für
beide für den Partitionsschlüssel verwende. Deshalb sage ich Abfragepunkt-ID. Wenn es jedoch ein Fall war, in
dem ich
die ID getrennt von
einem Partitionsschlüssel übergeben sollte . Dann könnte ich Schlüssel sagen
oder was auch immer es ist. Was auch immer der Name
des Parameters ist, den ich als
Partitionsschlüssel
erwarte, würde ich hier angeben. Und dann gehst du so ziemlich einfach durch und dann drücke ich
Escape, um abzubrechen, wenn ich nicht möchte, dass es
weitergeht und fortfährt. Aber sobald ich Angst davor
hätte, dass die SQL-Abfrage diesen Block
generiert hätte. Unabhängig davon. Es hätte auch die SQL-Abfrage eingefügt und
wäre leer gewesen. Und ich würde raten, dass Sie das
einfach entfernen, weil ich gesehen habe, dass es Probleme verursacht. Die Probleme sind nicht
wirklich klar. Wenn Sie den Assistenten verwendet haben, hätten
Sie
eine SQL-Abfrage erhalten. Und es wäre leer gewesen. Mein Rat wäre, wenn Sie keine Winde haben, entfernen Sie es
einfach, Sie können
mit weniger Besorgnis fortfahren. Jetzt, da wir Cosmos DB
konfiguriert haben, haben
wir die Bindung konfiguriert, wir haben unsere
Verbindungszeichenfolge konfiguriert, lassen Sie uns Code schreiben und diese Methode für Sie umgestalten. Und ich wollte auf alle Änderungen
hinweisen. Ich meine voll, du kannst einfach alles zwischen
dem ersten Kontext-Log und
allem bis zum letzten
entfernen , der schließenden Klammer, richtig, also einfach leer oder die Funktion. Es sieht also so aus. Entschuldigung. Sollte so aussehen. Wenn
Sie mit dem Leeren fertig sind, können
Sie dies auf Wunsch belassen. Kein Problem. Die erste Änderung würde
an unseren Funktionsparametern erfolgen. Also haben wir die Kontexte, wir haben die Bitte. Ich weiß, dass ich
die Eingabedokumente hinzufüge. Also dieses Eingabedokument, und weil ich TypeScript
verwende, ist
es sehr stark eingegeben. Aber es erlaubt Ihnen, jemanden verlieren zu
können,
um hier etwas zu sehen. Aber wir könnten bei Bedarf einen
Datentyp angeben, aber ich lasse ihn einfach
wie alle Kontextanfragen. Ich weiß, dass ich einen
Eingabepunkt hinzufüge, tut mir leid. Und dann, welcher Code von früher da
war. Nein, innerhalb des Hauptteils unserer Funktion
wird Herbst sagen wenn nicht Dokument eingeben, dann sagen wir, dass wir diese ID nicht finden
konnten, dann können wir diese Nachricht protokollieren, aber dann antworte ich . Also Kontexte
Punktreaktion oder Risiken, ich gehe davon aus, dass das bedeutet, dass die
Antwort gleich ist. Und dann können wir einen
Statusmodifikator angeben, den Status. Und selbst beim Testen
in früheren Teilen
dieser Kursszene, wo wir sie in einem falschen Wert
übergeben haben
und wir immer noch 200 bekommen haben. Okay, obwohl es
den Wert nicht gefunden hat, der da sein sollte
, was falsch ist. Http-Antworten
müssen sehr spezifisch sein. Wenn Sie also die
API-Entwicklung aktivieren, können
Sie dies zu
schätzen wissen. Wenn nicht, dann wissen
Sie einfach, dass sie spezifisch sein müssen. Sogar mein Sagen
5400 hier ist falsch. Und so bedeutet eher ein
404404 nicht gefunden. Schließlich sehe ich, dass
es nicht angerufen wurde. 500 wäre, wenn es
ein schwerwiegender Fehler auf meiner Seite wäre, was in
diesem speziellen Szenario nicht der Fall ist. Wenn nicht, geben Sie ein Dokument ein und
nichts wurde hier bereitgestellt. Dies
setzt sich also automatisch hin und achtet auf einen bindenden Wert, der durch die Anfrage eingeht
. So viel ist die Bindung
, die hier angegeben ist. Wenn kein verbindliches Valley
durchkam, wenn dieser Bindungswert nichts
in der Datenbank gefunden hat, denn was passiert
ist, wenn er
sieht ,
wird er automatisch zu
Cosmos gehen DB und überprüfe alles, was noch einmal überprüft
werden muss. Wenn Sie also nicht
so
ziemlich viel gefunden haben, wird es wissen, ob Sie etwas
gefunden haben oder nicht, wenn
es hier ist. Es ist in JavaScript, weil es im Grunde heißt, wenn nicht, dann sagen wir nicht angerufen, und dann antworten wir mit einem 404 und der Nachricht,
sie wurde nicht gefunden. Das in der nächsten Zeile. Wir werden eine
Antwort mit einer 200 sehen und der Text sollte den Inhalt enthalten , der sich
in diesem Eingabedokument befindet. In Ordnung, denken Sie also daran
, dass das nur der JSON-Block von JSON ist. Also lasst uns sehen
, wie das aussieht. Also laufe ich, wie immer, ich werde
Postman benutzen, um diesen Test durchzuführen. Also gebe ich
diesen Parameter ein,
diese Abfragezeichenfolge,
ID ist gleich eins, und ich erhalte diese
200-Antwort mit dem Inhalt
dieser Dokumentkennung, die nicht vorhanden
war. Mal sehen. Ich bin zehn bestanden. Dann bekomme ich das
vierhundertvierhundert Telefon im Nachrichten-Blogpost und habe nicht so viele Dokumente
gefunden,
wie Sie vielleicht hinzugefügt haben ,
die mit welchen IDs usw. einfach
automatisch eingehen. Das ist der Zeitpunkt, an dem wir
eine Eingabebindung sehen. Sobald die
Methode ausgeführt wird, sollte
ich mich an
diesen bestimmten Wert binden. Und es
dient dazu,
diese bestimmte Ressource abzufragen oder mit diesem
bestimmten Dienst zu
interagieren. In diesem Beispiel sucht oder
Eingabebindung nach einer ID gemäß unserer
Konfiguration hier. Und sobald es diese ID sieht oder sobald sie aufgerufen wird, wird
es zur Cosmos DB dreieckig um das passende Dokument zu erhalten. In Ordnung, lasst uns diese
Denkweise
fortsetzen und
eine Ausgabebindungen hinzufügen. Also habe ich
die Konfiguration bereits hinzugefügt und du kannst einfach weitermachen und das
dort drin bringen. Also ein neuer Objektblock. Und dann ist der Typ
diesmal Q, die Richtung ist Alt. Wir haben den Namen.
Das ist der Standardname , der im
Assistenten aufgetaucht wäre, der Name der Warteschlange, wir geben ihm einen Namen und
dann die Verbindung, und dieses Mal benötigt er eine
Speicherverbindung. Und wir haben den Azure Web
Storage, Web Job-Speicher. Eine Verbindung dort? Nein, für den Kontext für das, worauf das
alles hinweist. Wenn Sie diesen
Azure Storage Explorer aufrufen, sehen
Sie hier unter lokal und an
ein Speicherkonto angehängt. Ein Speicherkonto
ist also so ziemlich genau dort, wo Ihre Blobs hingehen würden. Und dann hat es auch
Warteschlangen und Tabellen. Wir verwenden also die Hinweise , die
in einem Speicherkonto erstellt werden. Natürlich
ahmen wir es gerade nach. Wenn Sie dies
auf Azure bereitgestellt
haben, können Sie hier unten darauf
zugreifen. Lokal haben wir es jedoch
emuliert, damit wir zu
den Cues und dem alten Q gehen können, sodass Sie dieses Q nicht
erstellen müssen, wenn Sie die Befehle
ausführen, die
wir schreiben können. Wenn es noch nicht existiert, wird
es tatsächlich weitergehen
und es für Sie erstellen. Das ist das Schöne
daran. Sie müssen es also jetzt nicht erstellen. Ich zeige
Ihnen nur, wo Sie auf die Erstellung
des alten Q achten sollten.
Wenn Sie den Assistenten für
diese Bindung
durchgehen würden, lassen Sie mich Ihnen einfach zeigen, wie es schnell
aussehen würde. Nehmen wir an, wir
wollten ein
Alt-Bindungs-Wu-Tools , das wir Queue-Speicher
wünschen. Dann fragten sie
uns nach dem Namen. Es wird also ein
Ausgabewarteschlangenelement den Namen geben. Sie haben ihm wahrscheinlich keinen anderen Namen gegeben oder
es spielt
wirklich keine Rolle,
denn dadurch wird sowieso nur ein neuer
Warteschlangenabschnitt
erstellt. Aber geben wir ihm
einen anderen Namen. Und dann
möchten wir auf
die Speicherverbindungszeichenfolge verweisen , die, weil
wir lokal arbeiten, die
Entwicklungseinstellungen verwenden. Und dann könntest du fortfahren. Und dann
wäre dieser gesamte
Konfigurationsblock für Sie
generiert worden. Wieder einmal haben Sie
zwei Möglichkeiten, dies zu tun. Wenn der Assistent keine Option ist, können
Sie sich immer
einfach
mit dieser Konfiguration vertraut machen . Schlüssel. In unserem Quartal wird
eine Anpassung vornehmen. Wir befinden uns in dem Bereich , in dem wir
unsere Blogbeiträge nicht finden. Wir senden
nur eine Nachricht an die Warteschlange. Es wird nur
diese Antwortnachricht
an die Warteschlange senden . Also habe ich einen
Kontext gesehen, Punktbindungen. Denken Sie daran, dass Kontexte Punktbindungen
Kontexte sagen werden. Geh und suche nach allen
Bindungen, die du hast. Und dann hol mir das Element der
Ausgabewarteschlange. So nannten wir es hier. Dann
möchte ich die
Antwortnachricht in diese Warteschlange stellen
oder was auch immer fehlschlägt. Du könntest also eine
andere Botschaft schreiben. Es ist eine Messaging-Warteschlange, daher ist sie im Allgemeinen textbasiert. Das ist wirklich die einzige Änderung
, die wir vornehmen müssen, wenn wir laufen und versuchen, einen
Blogbeitrag zu finden, der nicht existiert. Und bisher habe ich mit zehn
getestet. Wir würden sehen, dass wir die Antwort genauso
zurückerhalten . Aber wenn ich zum
Storage Explorer springe und in diesem Alt Q schaue, sehe
ich die Nachricht oder die Nachrichten, die in der Warteschlange
hinterlegt werden. Das ist ziemlich ein Loch. Und alt, Alt-Bindung, Output-Bindung würde funktionieren. Also ist die Eingabebindung
im Grunde genommen Stein auf Uhren und sagt, wenn
ich diesen Wert bekomme, werde
ich automatisch einen Auslöser auslösen , um etwas abzurufen
oder etwas zu tun. Und Output-Bindings ist, das
werde ich
an dieser Stelle in der Ausführung aussenden . So wie wir gesehen haben, dass Sie
eine Reihe von Bindungsoptionen haben. Sie können eine SMS machen, Sie können ein Signal machen, unser Update, Hub-Update. Sie können ein Sün-Grid erstellen, bei dem es sich um einen E-Mail-Service handelt. Und du kannst HTTP machen, was wir gemacht haben. Das ist ein Problem,
GTP-bindende Proteinmonate. Kontexte Punkt heben heißt
im Grunde genommen im Kontext, geh und hole die Strahlen. So heißt es, es
ist die Abkürzung für Antwort. Ich schätze, wenn du
das umbenennen wolltest, wäre
das alles, was nötig wäre. Das ist es also wirklich für
Ein- und Ausgabebindungen. Wir brauchen zwei sehr
einfache Beispiele. Und in diesen Beispielen haben wir uns auch verschiedene Tools von
Drittanbietern angesehen, mit denen wir
helfen können , die Hilfe bei
unseren Interaktionen zu nutzen. Selbst in Visual Studio Code bin ich den
ganzen Weg zum Emulator für die Cosmos DB gegangen. Aber sobald Sie
das installiert haben, müssen
Sie nicht unbedingt in
das eigentliche
Management-Screening gehen, um das eigentliche
Management-Screening dies
tatsächlich von
hier aus unter der
Datenbank ist Abschnitt in Visual Studio-Code, weil
Sie gesehen hätten, wie Sie hier einen Emulator anhängen. Ich habe MICH tödlich angefasst. Es
würde Sie fragen, ob es Kern oder eine DB für die Mongo-API für die
Sie auswählen, und es
würde automatisch die lokale Cosmos DB
codieren. Das ist also ein netter, einfacher Weg
zu einer 100, die eine Datenbank
und die Sammlung
von hier aus
übernehmen und erstellen . Wir können auch die Verwaltung virtueller
Maschinen durchführen, aber wir haben in diesem Kurs keine
VMs. Und Sie können Ihre
Funktionen von hier aus verwalten usw. also gibt es Tools. Sobald Sie verstehen, wie sie alle zusammenarbeiten, sollte es
Ihnen gut gehen. Wenn Sie Probleme
mit Ihrem Speicherkonto haben,
was Sie vielleicht eines haben, würde
ich Ihnen nur vorschlagen, dass Sie Ihren Storage Explorer
aktualisieren und sicherstellen, dass es sich um die
neueste Version auf Netzhaut handelt. Ich laufe 1 zu zwei. Ich war bei
1.170 einige Probleme weil sie seit 1 zu zwei einige
Updates vorgenommen haben. Und Sie sollten den
Azurit-Milliliter für die lokale
Azure Storage-Entwicklung installieren, die niemand Zeit für
diese Aufzeichnung installiert, Sie werden diese Probleme wahrscheinlich nicht
haben. Aber wenn Sie mit
einem älteren
Toolset-Toolset arbeiten und dann nicht frischer installieren, würde
ich Ihnen raten, einfach
neu zu installieren
, weil mich das erwischt hat. Erstens, der Speicher-Emulator
wäre das, was mit
der Originalversion
des Storage Explorers geliefert hätte , aber das ist nicht
veraltet, da Azurit das Neue
ist und es hätte mit
Visual kommen
sollen Studio 2022. Für mich hat es jedoch nicht
ganz so geklappt. Aus irgendeinem Grund
verwende ich stattdessen die npm zur Installation. Sie haben also bereits npm oder Node JS es Version
später installiert. Wenn nicht, kannst du
weitermachen und es holen. Aber um
mit den Aktivitäten Schritt zu halten, wenn Sie TypeScript verwenden, wissen Sie
nur, dass Sie es
bereits installiert haben sollten. Sie können einfach Ihre
Eingabeaufforderung oder Ihre Konsole aufrufen und das Installationsprogramm ausführen , das es
im Hintergrund installiert hat. Und dann möchten Sie
einen Ordner an diesem
Speicherort oder wo auch immer erstellen und dann diesen Befehl ausführen, damit Sie sicherstellen können, dass er im Hintergrund
ausgeführt wird. Dies überschreibt den zuvor installierten Azure
Storage Explorer-Emulator. Ich zeige Ihnen diese
Dinge nur für den Fall, dass Sie Probleme
stoßen, weil
Probleme natürlich sind, aber es ist immer gut, die Lösungen
zu haben. Sie können all
das tun und dann
Ihren Speicher-Explorer neu starten und dann
sollte alles eine Verbindung herstellen können. Die Symptome, dass es nicht
funktioniert, wäre, dass die Funktion nicht ausgeführt wird. Was du testen willst. Es wird pausieren. Und ein anderes Symptom
ist, dass Sie, wenn Sie versuchen,
sich mit dem Emulator zu verbinden darüber informiert
wird, dass Verbindungen abgelehnt werden. Wenn Sie also
diese Symptome bekommen, müssen Sie auf jeden Fall diese Updates
einhalten. abgesehen ist
das wirklich für Input- und Output-Bindings. Deshalb ermutige ich Sie zu erforschen, andere
Funktionen zu erstellen, von denen
Sie denken, dass sie nützlich wären. Timer löste
eine Funktion aus
, die jeden Morgen oder
jede Woche eine E-Mail verschickt , solche Sachen. Also geh weiter und erkunde.
21. Dauerhafte Funktionen und Orchestration: Willkommen zurück Leute. In dieser Lektion werden
wir über
dauerhafte Orchestrierung sprechen oder mit Funktionen umgehen. Das ist also ein weiterer
Funktionstyp, der
in 0 Funktionen
verfügbar ist . Wir können es einfach
mit der Vorlage aufdrehen und wir
werden es uns ansehen. Aber bevor wir dort ankommen, möchte
ich es einfach durchmachen. Eine Beschreibung in der Microsoft-Dokumentation
für dauerhafte Funktionen, dauerhafte Form von Steinen, Das ist eine Erweiterung
von Azure Functions. Und es verwendet im Grunde das Orchestrator-Muster, um Dinge zu
verfolgen. Nur für den Kontext
ist
mir eine dauerhafte Form, in der Sie
die definierten Workflows
mit Prozeduralcode verwenden können. Unser Flow ist also im Allgemeinen, dass Sie dies dann tun
möchten, dass
Sie dann möglicherweise
Montag benötigen , während die Intervention
zwischen R-naught. Der Punkt ist jedoch, dass Sie nicht zu Schritt drei kommen
möchten, es sei denn, die Schritte 12 wurden erfolgreich
abgeschlossen. Eine dauerhafte Funktion wird also
den Betriebszustand
tatsächlich so belasten, dass sie
weiß, welche Entscheidung mit jedem
Bezugspunkt zu
treffen ist. Sie sind auch in der Lage,
andere Funktionen oder andere dauerhafte
Funktionen synchron
und asynchron aufzurufen andere Funktionen oder andere dauerhafte . Und die Ausgabe wird zuverlässig in lokalen Variablen
gespeichert. Unsere Geschichte als
Funktionen ist langlebig und
zuverlässig und sie
überprüfen grundsätzlich jedes Mal, wenn sie eine Funktion oder ein
Gewicht oder einen Ertrag
ausführen. Jedes Mal, wenn eine Funktion aufgerufen
wird und ihren Wert
zurückgibt, erstellt
sie einen solchen Punkt,
damit sie genau weiß, wo sie sich in der Operation befindet und der
Status nie verloren geht. Es ist immer da. Es
verfolgt immer, was passiert und wo
es gerade ist. Sie können lang andauern, sie können Sekunden,
Tage, Monate sein , die nie enden. Sie haben also verschiedene
Muster, bei denen Sie eine API
möglicherweise immer wieder
asynchron aufrufen. Möglicherweise ziehen Sie
eine Datenquelle für etwas, und das
wollten Sie kontinuierlich tun. Der wichtigste Teil
davon sind gesuchte Lkw der Staat. Und es ermöglicht Ihnen immer zu wissen, wo Sie
sich gerade befinden. Wenn Sie ein besseres
Verständnis wünschen, zumindest mit der Theorie, können
Sie das
Dokument lesen und vieles mehr. Und Sie können einige
der Codebeispiele in den
verschiedenen Sprachen sehen . Aber wir werden
es zusammen machen und wir verwenden Visual Studio Code
und eine C-Sharp-Vorlage. Also springen wir natürlich
zu Visual Studio Code. Ich habe bereits einen Ordner erstellt, einen 0 dauerhaften Funktionen. So nannte ich es. Nein, wir sprangen auf die Azure-Registerkarte und auf die Schaumstoff-Sektion
Oceans. Wir werden
eine neue Funktion erstellen. Also kommen wir zu unserem üblichen Zauberer. Ich, zoomen Sie einfach hinein, damit
wir klar sehen können, ich wähle meinen Ordner und dann wähle ich
meine Sprache. Dann will ich unsere eigene Zeit. Also habe ich sechs installiert. Natürlich wählen Sie die
Laufzeit
entsprechend Ihrem Kontext und natürlich wäre
die Version relativ zu dieser Version vier
Zielen mit dotnet sechs. Und dann möchte ich, dass Sie leicht Shunts die
Ergebnisse bilden können. Sie können immer einfach anfangen zu tippen und es wird es
herausfiltern. Also wollte ich dauerhafte
Funktionen, Orchestrierung. Und ich belasse den
Standardnamen für Nein“ und „Standardnamespace“. Dann wollten sie wissen , welches Speicherkonto
ich
den lokalen Emulator verwenden werde und
ihm erlauben werde, ein Projekt zu generieren mit dem es erstellt wurde, und wir
haben unsere neue Codedatei. Ich werde nur ein bisschen
herauszoomen, also sind wir bereits damit vertraut,
wie das Projekt aussieht. Wenn ich in die
CS-Projektdatei schaue, sehen
Sie hier, dass ich diese
spezielle Bibliothek habe, die für unseren
dauerhaften Betrieb
sehr wichtig ist . Wenn Sie also
Visual Studio verwenden, überprüfen Sie
einfach
und stellen Sie sicher, dass dieses Paket verwiesen
wird. Wenn nicht, können Sie es an neuen Gates
abrufen bevor Sie die
langlebige Funktionsvorlage erstellen. Das ist in Ordnung. Aber wenn wir
unsere Codedatei haben, am Wochenende, schauen Sie sich
einfach durch und wir schauen uns einfach
durch und machen einen Test. Ich werde
es nicht zu sehr oder so ändern. Wir wollten nur verstehen, was genau hier passiert. Wir haben also die Anmerkung, die uns
oder den funktionalen Namen angibt. Dieser Funktionsname hat leider eine
Funktion namens Ron Orchestrator, die eine Zeichenfolgenliste
zurückgibt. Und dann passiert es
einen Orchestrierungsauslöser. Und Sie können hier sehen, dass
der Kontext vom Typ Ich habe einen dauerhaften
Orchestrierungskontext gefangen. Es verfolgt also
alle Ausgaben. Und dann wird jede Ausgabe
angegeben,
der Wert, der aus dem Aufruf
dieser Funktion
mit dem übergebenen Wert
gewonnen wird aus dem Aufruf
dieser Funktion
mit dem übergebenen Wert
gewonnen . Sie sehen also hier, es ist
nur eine Funktion, die es wirklich hat und das sind
die dauerhaften Funktionen, Orchestrierung, C-Sharp
One auf der Partitur. Hallo. Es ist nur eine Funktion
, die hier definiert ist. Stellen Sie sich jedoch vor, wenn wir
mehrere Funktionen hinzufügen, die Sie
nacheinander aufrufen
möchten, könnten Sie sie einfach
in dieser bestimmten Reihenfolge definieren. Also hier heißt es, rufe die Funktion mit diesem Namen auf
und gib ihr diesen Wert. Dieser Wert wird gebunden. Hier ist unsere Funktion
, die aufruft. Und obwohl
der Name hier ist, heißt
die Funktionsdefinition SayHello. Und dann braucht es eine
Aktivität Trigger. Dieser Aktivitätsauslöser ist also so ziemlich der Parameter
, der entbeint wird. Sie können Holzarbeiten wie
eine Eingabebindung. Es könnte etwas für unsere Cosmos DB sein oder etwas anderes,
weißt du, was auch immer es ist. Wir sind durch
unsere Gangbindungen gegangen. Wir schätzen
also, wie das funktionieren könnte. Aber sobald Sie dies getan haben, führen
Sie den Vorgang basierend
auf dem eingegangenen Wert aus und tun was auch immer. Also hier wird es nur
Hallo zu jeder dieser Sprachen sagen ,
jeder
dieser Städte, tut mir leid. Es wird einfach
Hallo mit dieser Lautstärke zurückgeben. Das ist alles was es wirklich tut. Nein. Die letzte Funktion
, die Sie hier erhalten ist eine, die
durch einen HTTP-Trigger ausgelöst wird. Wir wissen also bereits über HTTP
ausgelöste Funktionen. Das heißt, wenn wir es nennen, wenn wir diese dauerhafte
Funktion und diese ganze
dauerhafte Operation durch diesen HTTP-Trigger aufrufen,
habe ich bemerkt,
dass Ihr Buchclient
I Durable
Orchestration Client anruft und
du nennst es Starter. Dann startet es den Vorgang auf der Instanz-ID
gespeichert. Und alles, was dies tut,
ist zunächst eine neue Asynchrone
der dauerhaften Funktion zu starten, die wir uns zuerst
angeschaut haben. Http-Auslöser wird die dauerhafte Funktion auslösen. Und die langlebige Funktion hat ihre Operationen
skizziert, lösen Sie dies aus. Dass viele Phonetiker
in dieser Reihenfolge ihre Ausgaben
aufbewahrten und eine große Rendite
erzielen. Am Ende von all dem wird
es protokollieren und
sehen, dass wird
es protokollieren und es mit
der Instanz-ID gestartet wurde. Die Inzidenz-ID hofft also
erneut, dass es sich um einen LKW handelt, dass dieser Vorgang gerade läuft oder
fertig ist oder was auch immer. Und das können Sie in
Ihren Protokollen für Analysen verwenden. Und dann wird am
Ende dieses
Ganzen nur die
erschreckte Antwort überprüfen und
einen Status geben, die Instanz-ID. Die Inzidenz-ID
wäre also wieder die Inzidenz diesem Buch passiert
Kastration? Und dann überprüft es die Statusantwort, um zu
sehen, ob sie fertig ist? Geht es uns gut, was auch immer. Wie ich schon sagte, es speichert
den Zustand, in dem ich erkläre, lassen Sie uns dies in Aktion sehen. Also werde ich
diese Funktion ausführen und ich bin trotzdem zum Debuggen
gegangen. Alles klar, es ist auf
denen, die laufen. Sie werden hier
in den Protokollen sehen, dass
festgestellt wird , dass die HTTP
gestartet wurde, so dass es sich um
HTTP-ausgelöste Methode handelt. Dann haben wir die Arc-Iteration und dann haben wir die Aktivität. Das nennen wir also
die Funktion, die es aufruft. Es ist eine Aktivitätsfunktion. Und das ist die Kunstgeschichte. Es ist ein Film. Dies ist ein einfacher
HTTP-ausgelöster Schaum. Wenn ich diesen Anruf tätige, startet
HTTP und ich bin
bereit, den Klick zu
steuern, das Klicken mit der Steuerung
hätte es natürlich im Browser gestartet. Also mein Browser startet, er rief URL an und wir
wissen, was passiert wenn Sie es die URL für
eine HTTP-ausgelöste Funktion nennen. Und es ging tatsächlich weiter und startete den dunkelsten
Unterricht, oder? Also dieses hieß es, aber die Host-APIs. Und dann siehst du hier
, wo es heißt Hallo wurde erfolgreich
angerufen und
es ist zurückgekehrt hallo Tokio, hallo Seattle, und hallo London. Das ist ein Beweis dafür, dass es erfolgreich genannt
wurde. Aber sieh dir das auch an. Mal sehen, ob ich ein bisschen hineinzoomen
kann ,
damit wir diese Protokolle besser sehen können. Sie würden feststellen, dass
jedes Mal, wenn es diesen Aufruf erfolgreich
getätigt hätte , direkt auf diese
Kunstgeschichte ODER Funktion zurückgeht. Es ruft an, es
führt die Aktivität aus. Dann bekommen wir das Ergebnis
der Aktivität. Dann sagt es uns, dass es die Aktivität
ausgeführt hat. Und dann geht es gleich zurück zum Arcbest Leckerbissen oder jedes
Mal, wenn es einen Anruf tätigt, gibt
es die Kontrolle
an den Orchestrator zurück. Und dann sind Sie natürlich derjenige,
der am Workflow arbeitet. Sie setzen also Ihre Logik und Ihre Protokollierung und Ihre Entscheidungen basierend auf der Ausgabe
oder dem Erfolg oder fehlen deren Fehlen. Rufen Sie die dauerhafte Funktion aus und rufen Sie die Aktivität auf.
Das ist Loch. kannst du
zu deinem Vorteil nutzen. Wenn Sie die
HTTP-ausgelöste Funktion r dot URL aufgerufen
haben, werden Sie feststellen, dass Sie diesen JSON-Block
erhalten. Benutzen Sie also Postbote
oder haben den Browser benutzt? Es spielt keine Rolle,
aber was Sie erhalten, ist eine Statusabfrage einen URI-Wert erhält
, dass
eine Statusabfrage einen URI-Wert erhält
, der einen URI hat, der uns den Status, den aktuellen Stand
der Technik, gibt. All das. Ist das URI Ich habe
das kopiert und mich einfach in einen neuen Tab
legen lassen. Und du siehst hier steht Name, wir bekommen den Namen davon, wir bekommen die Instanz-ID. Sicher. Wir kriegen den Runtime Stack. Der Wechsel dieses
Falls ist also abgeschlossen. Also an irgendeinem Punkt in
der Mitte,
wenn Sie sehen wollen,
wie
der Status dieser dauerhaften Funktion
ist, ist es schon erledigt? Dies ist noch im Gange, dann
könntest du einfach sehen, mir diesen Status
geben. Das ist so ziemlich
für dauerhafte Funktionen. Natürlich ist es ein
wirklich einfaches Beispiel,
aber ich hoffe, Sie sehen die Möglichkeiten und wie Sie diese Art
von Workflow tatsächlich für
komplexere Vorgänge nutzen können von Workflow tatsächlich für
komplexere Vorgänge bei denen Sie müssen
LKW. Ist es schon fertig? Wie lautet der Status
in der Mitte? Und treffen Sie Entscheidungen, die darauf basieren, dass alle von einer Operation in eine andere
gehen.
22. Erstelle eine serverlose REST API mit Azure Funktionen: Hey Leute, in dieser
Rubrik werden
wir uns ein paar lustigen Sachen befassen. Wir haben uns also einige Theorie,
viele Konzepte
angeschaut und einfach nur das
Innenleben einer 0-Funktionen verstanden. In diesem Abschnitt werden
wir jedoch alles
Gelernte testen und eine Rest-API
aufbauen. Wir verwenden also nur Funktionen und
bauen alte Endpunkte. Wenn Sie
mit Rest-APIs nicht vertraut sind, können
Sie meine
anderen Kurse zur
Rest-API-Entwicklung durchsickern , in denen
wir tatsächlich durchgehen, wie sie mit einer ganzen
EPA-Entwicklungsprojektvorlage erstellen EPA-Entwicklungsprojektvorlage Visual Studio-Boot hier werden
wir
Azure Functions verwenden . In diesem Video. Lasst uns einfach anfangen. Wir werden
Visual Studio dafür verwenden. Lasst uns einfach die
ASOR-Schaumzonen finden. Wenn Sie es nicht
auf der linken Seite haben ,
können Sie immer suchen. Und wenn Sie es überhaupt nicht haben, müssen
Sie das Installationsprogramm abrufen
und den Azure-Workload installieren. Lasst uns Azure Functions holen. Und das rufe ich an,
ich nenne es
eine Einkaufswagenliste. Ich denke, das ist ein
einfaches Beispiel. Wir haben Artikel, die
Linda-Einkaufswagen haben, und wir nehmen sie
ab, wenn wir sie haben. Wir können einfach weitermachen
und das schaffen. Und im Moment mache ich eine leere Vorlage für
den Speicher-Emulator. Ja, wir wollten
einen Speicher-Emulator verwenden. Wir sind schon gegangen. Das funktioniert. Und nur für den
Kontext, diesen Punkt, die Nullen, den traditionellen
Azure Storage, sagte mir
Emily und
sollte nicht unbedingt richtig funktionieren. Und ich hätte
erwähnt, dass du azi benutzen
müsstest, richtig. Um sicherzustellen,
dass es nach der Installation ausgeführt wird, können
Sie diesen
Befehl immer einfach ausführen azurite und dann werden
Sie sehen, dass er alle Dienste
startet. Wenn Sie also
Schwierigkeiten haben, sich mit Ihrem Trend
zu verbinden , um
diese emulierten Dienste zu verwenden , und das
Senden kann keine Verbindung herstellen, führen Sie
einfach diesen
Befehl azi aus, oder? Alles klar. Ich lasse das einfach im Hintergrund
laufen. Ausländisch. Oh, lass mich weitermachen und diese leere Vorlage
erstellen. Wenn wir zurückkommen, beginnen
wir mit dem Erstellen oder Funktionen und
die Betrachtung des Konzepts des Flurs
wird es
in Bezug auf den Aufbau unserer
restlichen API-ähnlichen Struktur darlegen .
23. Setup: Alles klar, also lasst
uns das anfangen. Ich füge Funktion hinzu, also neue Azure-Funktion. Und da wir es
mit einer API-ähnlichen Struktur zu tun haben, müssen alle meine Funktionen HTTP ausgelöst werden. Ich nenne diese
Warenkorb-Funktion oder Einkaufswagen-API. Nennen wir es so und fügen hinzu. Dann gehe ich
mit dem HTTP-Trigger. Ich wollte es
zumindest vorerst anonym machen. Und klicken Sie auf Hinzufügen. In Ordnung, also nirgends
funktioneller, nicht wann man mit dem
Modifizieren beginnen soll. Stattdessen werde ich noch ein paar andere Dinge einbringen. Also
füge ich einen neuen Ordner hinzu, ich nenne es Modelle. Die Sache mit der
API-Entwicklung ist , dass Sie dies normalerweise nicht tun werden. Modelle sind Details, die
Watt-Daten regeln , mit denen Sie für jede Anforderung einen
Slash-Interrupt angeben. Ich werde zuerst ein
Einkaufswagen-Modell haben. Und ich habe
dieses interne,
interne Mittel kennengelernt, dass es von allem innerhalb desselben Projekts
verwendet werden kann , damit ich es als intern oder nein
belassen kann. Und ich füge
ein paar Eigenschaften hinzu. Ich habe einfach
alle drei Klauseln gemacht und du kannst sie einfach ansehen und entsprechend
replizieren. Also haben wir den
Einkaufswagen-Artikel oder einen Einkaufswagen im Allgemeinen. Eigentlich sollte dies
ein Einkaufswagen-Artikel sein. Lassen Sie mich einfach den Namen
der Datei entsprechend aktualisieren. Lassen Sie mich einfach machen der Warenkorbartikel eine ID
hat, die ich nur als String-GUID verwenden werde
. Ich habe eine Urkunde erstellt, und dann habe ich den Artikelnamen, und dann habe ich gesammelt
oder nicht, du weißt, was, wie auf unserer
Einkaufsliste, den Artikel
abstreichst , sobald du ihn in den Einkaufswagen
gelegt hast. Das ist so ziemlich genau das. Signifizierend. Dann haben wir einen für Dekret. Natürlich für das Create. Ich bin nicht bereit, alles
aufzudecken. Ich möchte nicht, dass der Benutzer die
ID verantwortlich ist oder sie erstellt. Und Booleans Default, Default. Wir verpassen also nicht die Angabe,
dass das vom Benutzer benötigt wird. Ich gehe davon aus, dass es noch
nicht gesammelt wurde. Alles was wir brauchen ist der
Name des Artikels. Für das Update. Möglicherweise ändern Sie
den Namen des Elements. Möglicherweise
ändern Sie auch einfach nur gesammelt oder ich könnte sie
einfach hochladen, um nur
ja zu sehen, es ist gesammelt oder nicht. Also denke ich, dass ich es so
einfach halten werde und später einfach
damit arbeite, wenn wir uns mit der Datenbank
verbinden, dann müssen wir noch ein paar Modelle
erstellen. Aber für den Knoten ist das alles
, was wir brauchen. Eine Rest-API. Dies würden Sie als
Details oder
Datenübertragungsobjekte bezeichnen . Wenn diese Begriffe mit ihnen vertraut
sind, können
Sie sich immer meinen
Kurs zur API-Entwicklung ansehen. Es hat sich jedoch
auf unsere Funktion zurückgesetzt. Was wir dann hier tun werden,
ist tatsächlich zu etablieren oder Wurzeln. Die Sache mit Funktionen ist also , dass wir diese Klasse standardmäßig
erhalten, ja, und dann erhalten wir
eine Funktion mit R1. In diesem Fall heißt es, du
kannst es tun, du kannst posten. Wir
brauchen nicht wirklich etwas, um
beides zu tun , denn in unserer
Ruhe-API-Sitzung sollte
es sehr streng sein. Einer für das Posten eines vergisst bereits auf
der sehr grundlegenden Ebene gesehen. Aber jede Funktion sollte zu diesem Zeitpunkt für eine Operation
verantwortlich sein. Da wir also
diese Rest-API-Struktur
und den Standard nachahmen , haben wir uns begeben, dies zu ändern. Was ich tun kann, ist die Funktion
umzubenennen. Wenn dies also Einkaufswagen-Artikel
erhalten soll, kann
ich dies bezeichnen,
Einkaufswagen-Artikel abrufen. In Ordnung, also das ist
der Funktionsname. Auf der Route möchte ich jedoch einen Wert
angeben, weil ich nicht möchte, wenn
Sie die Funktion aufrufen, Sie müssen sagen,
dass Slash API diesen Funktionsnamen und dann diesen Funktionsnamen und dann diese Funktion wieder ruhen API-Standards würden Sie dies eine EPI,
eine Struktur zu
nennen. Aber basierend auf Ihrem Verb
auf potenziellen Parametern, damals möglich sind, würde es nicht wissen , auf welche Funktion
Sie sich beziehen. Also werden wir diese
Route umbenennen, damit sie ein
bisschen mehr so aussieht , wie unsere
Rest-API aussehen würde. Ich nenne es
Einkaufswagen-Artikel. Sie haben also erwartet, weil
es bereits der URL-Schrägstrich , der
API-Schrägstrich und dann
der Funktionsname
sein wird. Aber wenn ich
dies als Root angebe, dann würde es nicht wissen, dass
aus der HTTP-Anfrage
irgendetwas, das nach
der Slash-API in diese Root geht,
zu dieser Funktion geht, oder? Das nächste ist, dass ich nicht
möchte, dass diese Funktion veröffentlicht wird. Ich
wollte etwas abrufen, um diesen Beitrag zu entfernen. Und nur um sicherzustellen, dass
alles gut aussieht, benenne
ich die Funktion
selbst um , um zu reflektieren
, wie dieser Funktionsname ist, damit alles
irgendwie einheitlich aussieht. Um, für null werde ich
das alles entfernen. Ich kann
das alles einfach aus der Funktion entfernen ,
denn was wir tun
werden, erfordert
all
das pro c. Nein. Wieder einmal
machen wir unsere RISD-API, das bedeutet, dass ich eine zum Erstellen
brauche. Also werde ich einfach all
das kopieren und ich habe
diesen einen Create Shopping
Guard genannt , den ich versuche, wir müssen der
Methode diesen Namen geben. Und dieser wird
der Beitrag sein , weil es diesmal
nicht wird. Es erschafft ein
ganzes Ich erschaffe. Du solltest post verwenden und
dann hat es den gleichen Root. Es wird also
eine Post-Anfrage an
diese EPA oder diese HTTP-Route sein . Dieser wird angefordert
, dass HTTP-Wurzeln sind. Wir können das Gleiche
für PUT und Delete tun. Put wäre zum Aktualisieren, Löschen. Nichts was
selbsterklärend ist. Einkaufswagen für Lebensmittel, die ich besuche. Oder lassen Sie mich einfach
sicherstellen, dass meine
Methoden wirklich widerspiegeln was die Operation
aussehen wird. Also lösche den Einkaufswagen, ich, äh, Tim, lösche Einkaufswagen-Artikel. Diese ist eine
PUT-Anfrage und diese
ist eine Löschanforderung. Alles klar, wieder einmal kartieren
wir nur alte Wurzeln. Sie können sich ändern, während wir weitermachen. Wir sehen vielleicht etwas
, das wir ändern wollten. Natürlich werden
wir
die Parameter ändern , wenn wir uns auf jeden einzelnen
konzentrieren. Aber für mich
kartiere ich sie nur, damit wir das große Ganze
bekommen. Es gibt eine andere Art
von Gets, weil
wir vielleicht bestimmte wollen. Wenn wir also einen bestimmten
Warenkorbartikel haben wollen, wird es einen
Einkaufswagen-Artikel erhalten, keine Zehner. Dies wäre auch
ein Einzug für die Wurzel wäre ein Schrägstrich des
Einkaufswagen-Artikels. Und dann verwenden wir einen Bindungsparameter, um Sie
wissen zu lassen , dass sie etwas namens ID
erwarten sollten. Danach. Ich hole alle Gegenstände, die wir haben. Ruft nach ID für zu viel
Artikel im Warenkorb, wenn Sie sich qualifizieren möchten, sagen Sie
einfach, dass Sie sich sehr klar sind und Sie wissen, dass es genau dafür
ist. Aber alles was es ist, das ist der Ausweis. Wir haben das Create,
das nur ein Beitrag ist. Und dann haben wir den PUT- und Delete-Node, dass wir eine gute
Vorstellung vom großen Ganzen haben. Wenn wir wiederkommen, können wir nacheinander anfangen , an ihnen zu
arbeiten.
24. Einrichten von POST (Erstelle HTTP (Create): In Ordnung, also sind wir zurück und
beginnen
mit dem Erstellen von
Einkaufswagen-Artikeln. Die erste, lassen Sie uns die Nachricht
aktualisieren oder protokollieren. Ich werde nur sagen,
Einkaufswagen-Artikel erstellen. In der Anfrage kommen
die Daten ein. Wir haben bereits gesehen, dass
diese Anfrage Good of im Text in der URL
geschaut hat. Und da es sich um einen Beitrag handelt, erwarten
wir, dass die Daten
in den Körper kommen werden. Ich beginne
einfach mit einer Variablen namens String Requests Data, wo wir auf eine
neue Instanz des
Stream-Lesers warten werden. Und dieser Stream-Leser
wird in den Wert des Parameters
Req Dot Body von
HTTP-Anfragen gehen . Dann wollen wir lesen,
lesen, um eher asynchron zu enden. In Ordnung? Jetzt, da wir es gelesen haben, wird
dies diesen JSON-Körper
zurückgeben. So ziemlich wir
möchten es in
unser Warenkorbgegenstand serialisieren . Also werde ich speichern
var item ist gleich, ich verwende JSON-Converts. Json Convert stammt aus unserer Newton's Soft-Library und
das war bereits enthalten. Hier. Es ist im Grunde eine Voraussetzung für HTTP-ausgelöste Funktionen. Wir haben es gesehen, wir haben es schon mal
benutzt. Nun, mein Punkt ist, dass es
so ist , als wäre jede andere Tasche
nur ein NuGet-Paket. Wenn Sie also bereits wissen
, wie Sie Pakete erhalten, können Sie einfach zum
NuGet-Paket verwalten gehen und es hier
ohne Bedenken
hinzufügen. Wir möchten, dass GSM Convert Dot Objekt
deserialisiert. Wir wollten uns in
unser Objekt „
Einkaufswagen erstellen“ entserialisieren . Und dann geben wir ihm
die Anforderungsdaten, denen wir wissen, dass sie
JSON sind, in der Natur. Nachdem wir das alles
gemacht haben, möchten
wir
eine Datenbank bearbeiten. Unsere Datenbank wird
vom Typ Warenkorbartikel sein , da wir die Standardwerte wünschen. Bevor ich all das mache, lass mich einfach
eine neue Instanz erstellen. Okay, lass mich
das von Element zu Daten ändern. Und dann
wollte ich sagen, dass var item hier
einer neuen Instanz
des
Einkaufswagen-Artikels entspricht . Einkaufswagen. Ich drehe mich um. Dieser neue Warenkorbartikel nimmt nur den Artikelnamen an
, der aus Daten stammt,
Data-Punkt-Artikelname . Sobald wir das Objekt haben möchten
wir sehen, ob wir es in einer Datenbank speichern
wollten. Ich bin noch nicht bereit, die ganze Verbindung mit der Datenbank
zu
starten. Was ich also tun werde, ist
nur eine statische Liste zu verwenden, aber ich rufe einen
Einkaufswagen an, einer neuen Instanz entspricht. Also hier unten
sage ich einfach einen Einkaufswagen, Artikel Punkt Hinzufügen, Neuer Artikel. Lassen Sie uns nun
eine Minute innehalten und
über die Relevanz der
Verwendung dieser Liste nachdenken . Was die Vor- und Nachteile
offensichtlich in einer echten Umgebung liegen, wäre keine solche Liste zu verwenden, wäre eine Datenbank. Ich bin jedoch noch nicht bereit für
die Datenbank. Also
werden wir die Liste benutzen. Jetzt ist die Sache mit Funktion
oben eine Während
es läuft, wird es
während der Laufzeit
alle Daten und Variablen
speichern . Während wir testen,
ist dies perfekt, weil wir alle verschiedenen
Methoden
aufrufen können und mit
derselben Liste interagieren würden . Eine Produktionseinstellung. Denken Sie daran, dass Funktionen skaliert
werden können. Das bedeutet, dass wenn Sie dies bereitstellen würden
, während es für einige Szenarien
funktioniert während Ihre
Funktions-App ausgeführt wird. Denn denken Sie daran, dass es
bei einigen Pflanzen
tatsächlich ausgeschaltet wird tatsächlich ausgeschaltet wird bis Sie es wieder
aufteilen müssen. Das ist also eine Gefahr, aber um uns davon auszugehen
, dass dies nicht passiert, kann
es auf
mehrere Instanzen skalieren. Dann würden Sie
am Ende mehrere Instanzen der Liste erhalten, was eine weitere Gefahr darstellt. Deshalb möchten wir natürlich eine Datenbankunterstützung für null. Wir benutzen einfach unsere Liste. Nachdem wir der Liste hinzugefügt
haben, können wir dann ein
neues Objektergebnis zurückgeben. Und ich werde gerade den neuen Gegenstand
übergeben,
die ganze Liste, aber nur das
Element, das nicht erstellt wurde. Das ist es wirklich. Alle unsere Fehler bei unserem Artikel zum
Erstellen
eines
Einkaufswagens sind verschwunden. Und das ist Schritt eins. Wenn wir also zurückkommen, gehen
wir auf unsere Get. Wir werden einfach beides
in einem Ziel machen, alles abrufen vs. per ID bekommen.
25. Einrichten von HTTP Azure-Funktionen: Okay Leute, also sind wir
wieder in dieser Lektion, wir werden uns
auf Methoden konzentrieren oder bekommen. Die erste Methode,
die darin besteht,
alle Elemente zu erhalten , die man hat, ist
ziemlich einfach. Meine Nachricht
wird also sagen, get, alle Einkaufswagen-Artikel
abrufen. Dann
müssen wir wirklich nur noch zurückkehren. Also
würde an dieser Stelle wirklich die Datenbank
abfragen
und sagen, gib mir, in
Ordnung, In diesem Fall haben wir keine wirklich Datenbank,
wir haben nur diese Liste. Alles was ich tun werde,
ist wieder zurückzukehren, okay, Objektergebnis mit der Liste. Das ist die Liste der Artikel des
Einkaufswagens. Und wenn du willst, alle, kommst du an alle. Das ist also so ziemlich genau das. Ich habe hier einen Fehler. Entschuldigung, ich habe meine neue Rückkehr verpasst
, neu okay, Objektergebnisse. Da sind wir los. Das ist es wirklich.
Für die „Get's by ID“. Es ist ein bisschen, es dauert ein
bisschen fertiger, oder? Also ja, wir haben die gleiche Regel. Wir wissen, dass dieser
erwartet, dass ein ID-Wert eintritt. Dieser ID-Wert
kommt also normalerweise als Parameter ein. In einer HTTP-Anfrage. Es könnte als HTTP oder Parameter
hereinkommen können. Ich füge hier einen
neuen Parameter als Wert-Stream-ID hinzu. Dann verwende ich einfach die
Komma-String-ID die den
ID-Wert
darstellt, der übergeben
werden soll, wenn dieser
Funktionsaufruf durchgeführt wird. Ich werde das eigentlich als
das Letzte bezeichnen. Ich lege es nach der
Logger-Stream-ID ein. Sobald diese Methode aufgerufen wurde, erwarten
wir diese ID. Sobald wir diese ID haben, schreibe ich einfach die Logger-Nachricht um
und
bekomme den Warenkorb mit ID. Und dann kapsele
ich einfach
den ID-Wert, der übergeben
wird. Tut mir leid, in Interpolieren,
um zu kapseln,
wisse, dass ich das habe. Ich werde sagen, dass der Artikel des
Einkaufswagens gleich ist, ich gehe zu meiner
Warenkorb-Artikelliste. Dann sehe ich mir
Punkte an, die wir finden könnten. Aber ich werde mich an das halten, womit
ich mich
zuerst oder Standard wohler fühle , weil ich zuerst oder standardmäßig machen
möchte. Wenn es es nicht findet, wird
es mit einer Null zurückkehren. Erster Stern-Standard und dann Kontrollpunkte, um
system.in Link zu verwenden. Und dann setzen wir unseren
Lambda-Ausdruck ein. Also q dot ID aus
dem Warenkorb, Warenkorb ist der Artikel
gleich dem ID-Wert
, der übergeben wird. Und sobald wir das getan haben, ging
ich zum Check. Ich sehe, Visual Studio
hilft mir dabei. Wenn der
Warenkorbartikel null ist,
was bedeutet, dass er offensichtlich
nichts zurückgegeben hat, müssten wir
ein neues, nicht angesufenes Objektergebnis zurückgeben . Das ist also ein 404. Ansonsten. Ansonsten. Okay, also hier ist ein
Unterschied zwischen, weil Sie möglicherweise
feststellen, dass Sie
Objektergebnisse im Vergleich zu Ergebnissen haben . Sehen wir uns alte wichtige Ergebnisse an, die sich von den Ergebnissen des alten
Schlüsselobjekts
unterscheiden. Der Unterschied besteht darin, dass
Sie, wenn Sie zu den Objektergebnissen zurückkehren, Daten eingeben müssen, wenn
Sie keine Details zurückgeben. In diesem Fall
habe ich also keine Daten, um zu ihm zurückzukehren und einen gewissen Wert zu
erwarten. Ich muss sagen, dass keine Ergebnisse
angerufen wurden. Also wollten sie wirklich sehen, er denkt, es seien wirklich
dieselben vier über vier, aber genau welches man bei Bedarf
verwenden sollte. Wir werden
ein nicht gefundenes Ergebnis zurückgeben. Andernfalls werden wir mit
diesem bestimmten
Warenkorbartikel
ein neues Objektergebnis zurückgeben diesem bestimmten
Warenkorbartikel , damit die Farbe das Detail erhalten
hätte. Lassen Sie uns schnell überprüfen,
um mehrere Artikel zu
erhalten, den Warenkorb zu bekommen, den ich versuche.
Alles, was ich mache, ist das Abfrageangebot ohne Angebot, eine Abfrage für
den Datenspeicher
auszuführen und alles
zurückzugeben wissen, was
ein Datenspeicher ist
ist wenigstens. Also gebe ich nur zurück
, was in dieser Liste steht. Wenn wir nach ID wollen, muss
ich angeben, dass die Parameter-ID gefangen werden soll. Sie sind schon beide bekommen, wir kennen bereits die
Wurzeln was das ist, Slash IID, daher
brauche ich die ID. Und wenn ich
diese Idee habe, wende die
Rondo-Abfrage ab, um dieses eine
Objekt im Datenspeicher zu finden. Wenn ich es nicht finde, gebe ich
keine folgenden Ergebnisse zurück. Andernfalls gebe ich die
alten Hauptobjektergebnisse zurück. Das ist es wirklich für die
Abholmethoden von unserer Rest-API.
26. Setup PUT: Alles klar Leute. Lassen Sie uns also
zu unserem PUT springen, wir wollen Artikel aktualisieren oder
einkaufen. Nein. Wir müssen noch
einige Änderungen vornehmen denn wenn wir aktualisieren möchten, müssten
wir eine ID
sowie die
zu aktualisierenden Daten weitergeben , oder? Also haben wir gemacht, um das zu tun,
was wir hier gemacht haben, nämlich
Include-ID, ID-Parameter. Da sind wir los. Und wir müssen unsere
Wurzeln aktualisieren, weil wir
diese Zeug-ID auch am Ende
der Update-Roots benötigen. Dann können wir eine Nachricht mit der GnG-Leiste protokollieren den Warenkorbartikel mit ID
aktualisieren. Das ist drin. Nein, wir müssen eine
Art Hybrid-Operation machen. Das erste, was
wir brauchen, um
die Daten zu finden , damit wir wiederholen können,
was wir im Git gemacht haben. Ich werde einfach weitermachen
und mir
diesen
Warenkorbartikel besorgen , der die
ID hat , die als Parameter übergeben
wurde. Wenn wir es nicht gefunden haben,
dann rief die Rückkehr nicht an. In Ordnung. Als nächstes müssen wir etwas
wiederholen wie das, was
wir mit dem Create gemacht haben. Einige gingen los, um
die eingehenden Daten zu analysieren. Dies würde in den Artikel zum
Update-Einkaufswagen analysieren. Und dann könnten
wir in einer größeren Operation so etwas wie
ultimative Vogel verwenden, um zwischen den
eingehenden Daten und
dem Warenkorbartikel zuzuordnen eingehenden Daten und ,
um die Aktualisierungen durchzuführen. Aber das ist eine sehr
einfache Operation. Was ich also tun werde, ist einfach den
Warenkorbartikel, die gesammelte
Punktekennzeichnung zu aktualisieren gesammelte
Punktekennzeichnung und Sie gleich dem gesammelten
Datenpunkt sein zu lassen. Also aktualisierst du es. Es muss bedeuten, dass
Sie
den Booleschen Wert von true
in false oder umgekehrt ändern . Das ist alles,
was wir wirklich aktualisieren werden. Am Ende von all dem wir einfach wieder
okay zurückgeben, Objektergebnisse. Und ich gebe einfach den
aktualisierten Warenkorbartikel zurück. Das Objekt, das wirklich
alles ist, was es für das Update gibt. Also lasst es uns
noch einmal durchgehen, weil ich
irgendwie Code aus
verschiedenen Teilen genommen habe. Lassen Sie mich also einfach erklären
, was wir tun. Erstens finden wir den
Warenkorbartikel mit der übereinstimmenden ID, die über den Parameter
übergeben wurde . Dann werden wir sagen,
wenn nichts gefunden wurde, geben
wir einen 404 zurück. Andernfalls wird es
mir
weiterhin die Daten besorgen , die
in der Anfrage eingingen ,
denn mit einem Put wären
die Daten im Körper. Es ist sehr ähnlich wie es im
Körper für die Post
wäre. Geben Sie mir die Daten aus dem Körper, Piraterie kippen Sie in das
entsprechende Modell zur Aktualisierung. Und dann werden
wir manuell aktualisieren. Also mache ich es manuell
in einer größeren Operation, wie gesagt, Sie würden
wahrscheinlich eine automatische oder oder eine andere
Drittanbieterbibliothek verwenden andere
Drittanbieterbibliothek oder um das
für zwei sehr einfache Operationen zu konvertieren
oder zu erledigen für zwei sehr einfache Operationen sind sehr einfache Operationen,
also machen wir das einfach. Und dann geben wir
das aktualisierte Objekt als Teil der Rückgabeergebnisse zurück. Das ist es wirklich, um den PUT
einzurichten. Wenn wir wiederkommen,
werden wir unser letztes tun, nämlich das Löschen.
27. Setup HTTP Setup: In Ordnung, also lasst uns
mit dem Löschvorgang beginnen . Also denke ich, dass wir
das schon lange genug machen. Wenn Sie Pause drücken
und versuchen möchten, es selbst zu machen
, würde ich das ermutigen. Sonst können wir es einfach
durchgehen . Ich habe den Code bereits
geschrieben. Wir hatten die
Methode zum Löschen von
Einkaufswagen-Artikel von zuvor eingerichtet. Was wir nicht getan haben, war
offiziell zu rooten. Der Root
benötigt also wieder einen ID-Wert dort. Und wir haben die
übereinstimmende
Parameterzeichenfolge ID
die Protokollnachricht aktualisiert. Und noch einmal haben wir
versucht, es zu finden. Wenn es nicht da ist, sagen
wir, dass keine Ergebnisse gefunden wurden. Wenn wir jedoch fortfahren, sagen
wir, dass Sie es aus
der Warenkorbliste entfernen und dann ein altes Schlüsselergebnis zurückgeben. Hinweis nicht okay,
Objektergebnisse, beide Okay,
Ergebnis, da es
keine Daten gibt, die zurückgegeben werden müssen. Und das ist es wirklich für
die Delete-Methode, oder? Wenn wir also nur Control Shift und B
machen, können
wir erstellen und
sicherstellen, dass wir nirgendwo Fehler in unserem Code
haben. Wir können sehen, dass wir
einen erfolgreichen
Build-0-Fehler haben und wir können fortfahren. Jetzt, da wir alle
vier unserer Operationen
ausgearbeitet haben , werden wir, wenn wir zurückkommen, einfach einige Tests
durchlaufen. Wir verwenden Postman, um
die verschiedenen Endpunkte aufzurufen und sicherzustellen, dass sie funktionieren oder
dass unsere Funktionen so
funktionieren
, wie wir es erwarten.
28. Azure-Funktionen mit PostMan testen: Okay, also ist es Testzeit. Wir haben die ganze harte Arbeit geleistet. Lassen Sie es uns auf die
Probe stellen, damit wir einfach
auf den Start-Button hier in
Visual Studio klicken können auf den Start-Button hier in
Visual Studio klicken , um mit dem Reden zu beginnen. Oder wenn Sie jetzt Visual
Studio Code verwenden, wissen
Sie, wie Sie das ausführen können. Und dann erhalten
wir in unserer Konsole, die die Ausführung begleitet, die die Ausführung begleitet, eine Liste
aller Funktionen, sodass wir sie alle
dank des von uns hinzugefügten
Funktionsnamensattributs nach Namen sehen . Wir stellen aber auch fest, dass
jeder eine Wurzel hat. Ja, die Regeln
hätten
auf dem Namen basiert , der standardmäßig
angegeben wurde. Wir haben das jedoch außer Kraft gesetzt und
wir werden unsere eigenen Wurzeln einsetzen. Und dort können Sie
sehen, wie Sie jede Methode
entsprechend der Route
aufrufen können . Wenn wir mit einem Postboten oder einem
anderen HTTP-Testtool testen und ich sage, okay, rufen Sie die get all methoden auf. Beachten Sie, dass Sie alle
Warenkorbartikel erhalten, ich rufe einfach diese URL damit Sie
sie
einfach markieren und dann kopieren und
in Postman einfügen können , klicken Sie auf Ausführen. Und dann würdest du hier sehen
, dass du das Zeug kriegen
würdest , diese 200, okay. Aber nichts, weil wir
keine Daten eingegeben haben. Natürlich würden Sie auch sehen, dass
das Protokoll aktualisiert wird. Also bekomme ich alle
Einkaufswagen, die ich versuche. Und dann wurde es hingerichtet. Zu diesem Zeitpunkt. Lassen Sie uns versuchen, einen
neuen Einkaufswagen-Artikel zu erstellen. Also würde ich
diese Methode einfach ändern, um zu posten. Und dann im Körper
danach sorge dafür , dass ich etwas JSON rübersende, also wechselt er zu RA und
dann ist James F zu G eingeschaltet. Und was haben wir angegeben? Um zu kreieren? Wir akzeptieren nur
den Artikelnamen. Also werde ich den
Artikelnamen und dann den Doppelpunkt sehen. Und denken Sie
daran, Anführungszeichen, dann Doppelpunkt einzufügen, und dann
wäre dies nur von Postman. Wenn ich also auf Senden klicke, sehen wir es uns an. Dann würden Sie sehen,
dass es
mit der neu erstellten IID, diesem Zeitstempel, dem Elementnamen antwortet , und wenn es gesammelt wird, ist
das falsch. Wenn ich mein ursprüngliches Ghetto erneut versuche, öffne
einfach einen neuen Tab, benutzt das gleiche, was deine Kugeln ein Get benutzt
haben und ich sende. Dann sehe ich, dass ich diesen einen Gegenstand
von der Liste bekomme . Wenn ich mein anderes Get versuche, benötigt
dieser die ID. Also ging ich zu einem Schrägstrich und übergab
dann diesen ID-Wert, kopiere ihn, füge ihn dort ein, dann sollte ich nur
ein Objekt zurückbekommen. Da sind wir los. Ich denke, dass
das gut funktioniert, lass mich das Update ausprobieren. Also baue ich nur dementsprechend
Wannen. Also haben wir noch einmal diese URL, fügen sie dort ein, oder eigentlich
hätte ich einfach diese
URL für die Updates verwenden sollen. Wir brauchen diesen ID-Wert, um einen Put zu
machen. Und dann werde
ich innerhalb des
Anforderungstextes roh JSON sehen, dass gesammelt kein wahrer
Doppelpunkt ist und der Wert wahr ist. Lass mich schicken, du siehst
hier es kehrt zurück, sie werden beheizt sein Objekt Latina
weiß, dass es nicht wahr ist. Wenn ich also zurück zum Geschenk gehe, bekomme alles erneut, dann bekomme ich das Update
zurück. Wie gesagt, wenn Sie
diese Funktionen innerhalb derselben Sitzung aufrufen, nannte
ich es eine Sitzung. Also werden wir exekutieren, oder? Nein, wir rufen eins nach dem anderen an, eins
nach dem anderen. Es aktualisiert jedes Mal
dieselbe Liste. Deshalb
bekommst du diese Ergebnisse. Wenn wir
anhalten und neu starten,
wird
diese Liste natürlich geleert. Es ist also
genauso, dass ein Schaum auftaucht, sobald er läuft. Wenn Sie diese
Liste verwenden, dann kein Problem. Sobald die IT-Kenntnisse abgebaut sind und dann als
Windsicherung danach wissen
Sie nur,
dass Sie diese Daten verlieren werden. Damit musst du also nicht vorsichtig
sein. Aber später werden
wir noch einmal darauf achten, persistenten
Speicher in Form
einer 0-Tabellen zu verwenden, die jedes andere
Speichermedium sind, das Sie bevorzugen. Das ist es also wirklich. Das letzte, was ich machen
werde, ist, dass ich lösche. Also verwende ich diese URL hier drüben. Und dieses Mal ist der
Methodentyp delete. Wir haben den Ausweis und alles. Ich brauche keinen Betreff, auf 100 alte
Kinder und alle Inhalte
reagiert. Wenn ich zurückgehe und
versuche , eine Abfrage auszuführen und
nichts zurückkommt, wenn ich es neu
erstelle, bekomme ich eine neue ID. Und wenn ich dann noch einmal versucht habe,
da reinzuschauen , sehe ich alles. Das ist buchstäblich alles, was es gibt, zitieren Sie unquote alles, was
es zu unserer Rest-API gibt. Je schwieriger es wird diese Bs basierend auf Ihren
Geschäftsanforderungen am Ende
des Tages, so einfach ist es,
eine ganze Rest-API mit
nur Azure Functions zu erstellen .
29. Testfunktionen mit der Benutzeroberfläche: Ein grundlegender Bestandteil
jeder API ist die Entwicklung, wie sie
mit Client-Apps interagiert. Das kann eine mobile App sein, es kann ein Web Up sein usw. In diesem Fall habe ich
eine einfache Blades gemacht, in der Regelcode Interaktion mit den
verschiedenen Endpunkten aus unserer z Funktionen API sind. Während er es läuft. Wir wissen , dass wir alle
Wurzeln schon haben. Ich habe nur
die Fitch-Datenseite
aus der typischen
Blazer-Up-Vorlage nachgerüstet . Und was es tut, ist, vom
Laser zu testen , wenn sie Sie hier in
ein Element stecken und Erstellen sagen, es wird tatsächlich aktualisiert
, was passiert ist, dass wenn Sie hier
mit der Konsole unterbrechen, dies dazu führt, dass es dazu führt positiv. Drücken Sie einfach die Eingabetaste,
es wird fortgesetzt. Sie sehen hier, dass der Anruf
tatsächlich einen Einkaufswagen erstellt hat. Und dann muss es abgerufen werden. Und es gibt unseren neuen
Einkaufswagen-Artikel. Wenn ich einen Test von Blazer One sage, und lass mich nur sicherstellen, dass
die Konsole weiß, dass er
normal funktionieren sollte , wenn ich auf Updates
erstellen klicke und in der Liste auf
„Updates erstellen“ klicke . Wenn ich auf das Häkchen
zum Sammeln klicke, siehst du hier,
dass es den Port aufruft. Los geht's. Also stell es aus, aktualisierte es. Und wenn ich dann
wieder entferne, interagiere ich weiter mit seinen Pausen. Wenn ich auf Entfernen klicke
, sollte das Element entfernt werden. Lass mich das
nochmal versuchen. Da sind wir los. Lassen Sie mich also noch ein paar erstellen
und lassen Sie mich sie dann löschen. Jedes Mal, wenn ich auf Löschen klicke, wird
das Interface aktualisiert. Also werde ich dich einfach durch den Code führen, den
ich dafür geschrieben habe. Es ist nicht wirklich ein Blazerkurs. Ich unterrichte letztendlich nicht das bizarre Vorgehen anderer
Kurse dafür. Aber gerade im Kontext zeige
ich Ihnen, dass
es vom Standpunkt des Blazers
aus nicht weiß oder sich darum kümmert, was die zugrunde liegende Infrastruktur
dieser Rest-API ist. Es wird einfach tun, gibt es Dinge im Verhältnis
zu unserer Rest-API? Ich habe ein brandneues Projekt erstellt und es war nur eine
angenehmere Web-Assembly. Einfache Möglichkeiten, dies zu tun. Gehen Sie einfach zur Lösung und klicken Sie mit der rechten Maustaste auf Neues Projekt hinzufügen. Sie suchen nach Blazer
WebAssembly nach oben. Ich benutze dotnet seeks
gehen Sie weiter und erstellen Sie es. Und dann
erhalten
Sie hier standardmäßig eine Adresse,
BCE-Adresse mit
Umweltschützerin ihr gesagt wird
, sie soll
die Basisadresse sein
, von der ich weiß, dass unsere Funktionen übertragen
werden. In Ordnung, also wissen wir
, dass das der Hafen ist. Wir hätten ein paar
Tests mit Postman gemacht. Wir wissen, dass das unsere
Standard-API geschrieben ist, okay? Das ist also die Basisadresse für den HTTP-Client, der
in unseren Überzeugungen verwendet wird. Eine andere Sache, auf die ich hinweisen
wollte ,
ist, dass wir Kerne einrichten mussten. Kerne sind
Querursprungsreferenz. Okay, es tut mir leid. Hier ist die Definition. Also
Cross-Origin-Ressourcenfreigabe. Da sind wir los. Das ist ein Protokoll
oder eine Reihe von Regeln, die Ihre API
mit Ressourcen regeln , die sich
nicht auf demselben Server befinden. Während wir die
Funktions-App mit Post-Money antizipierten,
sah unser Problem nicht. Wenn ich jedoch übertrage, sende ich eine Anfrage von einer externen Quelle, dass diese Blades
bei der Ausführung aktiviert sind, sie werden an
einem anderen Port ausgeführt. Daher wird es insgesamt als eine
andere App angesehen, dann würde es sie
tatsächlich ablehnen. Das ist alles, was wir CORS auf
einer Azure Functions in unserer JSON-Datei für
lokale Punkteinstellungen aktivieren einer Azure Functions in unserer . Wir gehen zum Host und öffnen einen neuen Objektblock, in dem
wir sagten, dass Kerne Star sind,
was bedeutet, dass alle Anfragen annehmen. Sie haben
keine Einschränkungen. Wenn wir es in Azure
bereitstellen, wird
dies natürlich auf der Azure-Seite behandelt. Für lokale Einstellungen müssen
wir jedoch sicherstellen, dass dies vorhanden ist. Du kannst weitermachen und das machen. Ich hätte auch
den Models-Ordner repliziert, also habe ich sie einfach neu gemacht, höre
nicht in den Blades sind oben. Stattdessen habe ich den
Namespace auf den Warenkorb aktualisiert, zumindest Punkt-Blazer-Punkt-Modelle da der Name der
App Warenkorb ist, zumindest Punktblazer. Sie haben die Modelle oder
Zugriff auf die Module dort. Eine andere Sache, die ich getan
hätte, wäre
natürlich, den Fitch
Data Dot Racer zu aktualisieren . Oder wenn du einen
neuen pH-Wert machen willst, liegt das an dir. Aber ich habe einfach alles auf
einer Seite gemacht und ich werde
dich einfach durch den
Code führen, der geschrieben wurde. Der Seitentitel, wir haben
die h1- und die p-Tags. Das ist alles nur Semantik. Das musst du nicht tun. Dann habe ich die
Bearbeitungsform von top, wo ich den Eingabetext habe
, den ich
an ein Objekt namens item
create binde an ein Objekt namens item und
den Elementnamen akzeptiere. Hier im Bearbeitungsformular ist das
Modell Item Create und bei gültigem Absenden
rufen wir die Methode Handler create auf. Dann habe ich diesen
Absende-Button für mein Bearbeitungsformular. Artikel erstellen ist oft
ein Einkaufswagen-Artikel. Und ich habe nur eine
Instanz davon und habe create gehandhabt. Wird nur Antwort
immer der HTTP-Client sehen. Was bedeutet HTTP, das den
HTTP-Client angibt, den ich
in meine Komponente injiziere . Das wäre also schon
da gewesen , weil ich Daten
abrufen werde, um tatsächlich zusammenzustellen, wie Sie mit dem
HTTP-Client interagieren
können , damit Sie das nicht dorthin legen
müssen. Es sollte schon da sein. Aber was ich im
Handle create mache, ist das Leeren HTTP-Punkt-Post, da JSON sinkt, und dann den
Einkaufswagen-Artikel posten. Und eigentlich habe ich gerade bemerkt
, dass das falsch ist. Das sollte sein
Einkaufswagen Artikel zu erstellen spielt wirklich keine Rolle im
großen Schema der Dinge, aber lasst uns einfach damit arbeiten. Das sollte also ein
Einkaufswagen-Artikel erstellt werden. Also veröffentliche ich einen JSON-Text oder JSON-Serialisierung des
kreativen Einkaufswagen-Artikels. Und es wird
API-Slash-Einkaufswagen-Artikel adressieren. Dieser
API-Slash-Einkaufswagen-Artikel wird also gerade an unsere Basis-URL
hier in der program.cs
angehängt. Dann senden wir
das Objekt Create Object über. Dann sagen wir, ob es sich um einen
erzielten Erfolg oder einen Schlüssel oder keinen Inhalt handelt
oder was auch immer wir gesehen haben, wir wissen, dass die verschiedenen Codes verschiedene Dinge
darstellen. So
sind alte wichtige Antworten erfolgreich, dann nennen wir sie einfach ein
Gewicht auf initialisiertes Asynchron, das im Grunde nur das gesamte Thema
neu zeichnet. Für den nicht initialisierten Asynchron sehen
wir nur Artikel, bei denen es sich in Form von RE entsprechen um
eine Reihe von
Warenkorbsartikeln handelt, die http.get von JSON
async Einkaufswagen . Und wir haben die gleiche Wurzel dort. Ich werde
in diesem Beispiel nicht alles mit
Architektur und Best Practices machen Architektur und Best Practices , ich zeige
Ihnen nur einen schnellen Gewinn. Wenn du das alles willst
, kannst du jonglieren. Meine Überzeugungen sind, dass Kurse nicht initialisiert
sind. Async ruft alle Elemente und legt sie in dieses Objekt ein,
das für
die
von Ihnen behandelten Elemente entwickelt wurde ,
sagt im Grunde nur, dass
Sie alle Daten
als JSON-Tool veröffentlichen, dies Endpunkt, und dann fahren Sie fort und aktualisieren Sie, sobald
alles erfolgreich ist, wissen Sie, dass der Rest
nur den
Beispielcode für Wettervorhersagen ändern würde ,
der da war, und
nur die Verwendung von Elementen
ist das, was ich gesagt habe für Kosten und Änderung der Tabellenüberschriften gemäß meinen neuen Tabellenkopfzeilen
basierend auf den neuen Daten. Sie dann für jedes Element in Items an Elemente, Denken Sie dann für jedes Element in Items an Elemente, die
aus unserem API-Aufruf stammen. Ich aktualisiere oder zeige leider die verschiedenen Werte an. Nein, für den Checkbox-Abschnitt habe ich eine Eingabe, die vom Typ
ist. Ich gebe ihm einfach einen Kurs, in dem
es irgendwie nett aussieht. Der Wert
wird an das Element gebunden. Quantity ist eine onchange. Dies ist ein Ereignis, das
bedeutet, dass
ich, wenn Sie den Wert
der Chatbox ändern, dieses
Methodenkreuzfeld aufrufen
möchte das Element übergeben
und den Wert der Ereignisse übergeben. Da es also weiß,
dass
es sich
um ein Kontrollkästchen handelt, wird dieses Ereignis Daten enthalten, war es wahr oder
falsch, ändern usw. Wo die Richtlinie in diesem Wert ist. Wenn diese
Checkbox-Klickmethode aufgerufen
wird, wird dieser Warenkorbartikel verwendet, und
dies könnte einfach sein, wahrscheinlich
sollte es wirklich das Update sein. Die Ports, egal welchen
Objekttyp wir hatten,
ihre mehrfachen Kurse mit
dem Zusammenstoß hier verwendet ihre mehrfachen Kurse mit , da dies vom Typ
Warenkorb ist , den ich versuche. Ich zeige
Ihnen also nur, dass ich
das
Warenkorbgegenstandsobjekt hier nehme . Ich nehme den
Prüfwert als meinen, da mein Ereignisargs-Wert ihn zu diesem Zeitpunkt zu einem
Objekt machen muss. Dann formuliere ich mein
Update-Einkaufswagen-Artikelobjekt und setze geteilt, von dem ich
weiß, dass er eingestellt werden muss. Und dann schickte ich über g sun async,
diesen Objekttyp. Und ich rufe
URL auf und verwende dann
Interpolation, ich bleibe nur
bei item.name DID. Deshalb war es wichtig
, den Artikel zu übergeben. Denn bei der
Aktualisierung, um die Bedarfsdaten zu erfüllen, können
sowohl das Originalelement als auch
ich einfach die ID verwenden. Also übergebe ich diese ID und das gesamte Objekt mit den Daten, die das Update
darstellen. Und wenn es dann
erfolgreich war, zeichnest du neu. Dann haben
wir für den Löschvorgang einen einfachen Button. Geben Sie ihm eine Bootstrap-Klasse, und klicken Sie dann auf, wir haben ähnliches Code-Ereignis und
möglich mit dem Item. So möglich, dass die Details gelöscht
werden
können , obwohl wir diese ID
wirklich nur benötigen. Also werden
wir nur Virenanleihen sagen, http dot delete async, nicht als JSON, weil
es kein JSON gibt, der über vernünftige
Daten zum Analysieren
weitergegeben werden muss , einfach löschen. Und der URI wäre APIs, diesen Einkaufswagen, den ich versuche oder item.name DID und
dann zeichnen wir neu. Deshalb verstehst du das. Beginnt in Echtzeit, schauen
Sie
auf die Benutzeroberfläche, da ich jedes Mal neu zeichne, wenn
der Vorgang erfolgreich war. Das ist es wirklich. Denn
Beschnitt interagieren mit der API. Natürlich kann er je nach
Ihren Bedürfnissen oder was auch immer etwas
komplizierter werden. Natürlich könnte die API etwas komplizierter
sein. Aber wieder einmal erzielen wir
nur schnelle Gewinne. Und sobald Sie
diese Kernkonzepte verstanden
haben, können Sie immer darauf
für Ihre zukünftigen Abläufe aufbauen. Das war's. Sie können an
den verschiedenen Punkten Pause drücken und den Code replizieren. Ich scrolle einfach
langsam genug durch , dass du in
den verschiedenen Intervallen Pause drücken kannst. Sie können den gesamten Code sehen. Und ich würde Sie ermutigen mehr Endpunkte oder
mehr Verhaltensweisen in der API aufzubauen und mehr
Seiten auf Komponenten zu erstellen, mit
dieser API zu interagieren. Stellen Sie erneut
sicher, dass Sie
Ihre Basisadresse aktualisieren und
sicherstellen, dass Sie die Kurseinstellungen
auf der API
aktivieren , um
sie gleichzeitig zu testen. Sie möchten nicht zur Lösung
wechseln,
klicken Sie mit der rechten Maustaste auf Eigenschaften. Und dann möchten Sie
mehrere Start-up-Projekte auswählen. Sie können sowohl
den Start als auch beide setzen, mit einem Debug
beginnen, je nachdem, was Sie bevorzugen, basierend auf dem künstlerischen Prozess. Das ist es wirklich zum
Testen mit einer Benutzeroberfläche.
30. Interaktion mit CosmosDB: Willkommen zurück Leute. In dieser Lektion werden wir einige der Änderungen durchgehen ,
die erforderlich sind, um
mit der Datenbank zu sprechen. Die für diese Übung
ausgewählte Datenbank ist eine 0 Cosmos DB-Datenbank. Wir haben bereits etwas
Erfahrung damit. Wir haben es eher als
Eingangstrigger oder
Input-Binding betrachtet . Und insgesamt haben wir
gerade die Daten
weitergegeben und sie werden
mit der Cosmos DB kommunizieren. Dabei werden
wir einen etwas
anderen Ansatz verfolgen, um
nur Eingabebindungen zu verwenden,
da es
bestimmte Operationen gibt , die wir ausführen möchten. Ich glaube, es ist gemischt. Wir können den Code
drei verschiedene
Arten von Wellen schreiben , wenn wir die Eingabebindung
verwenden, da das Gericht aufgrund
der Situation anders aussehen wird oder wir ein bisschen
konsistenter sein können . Also gehe ich mehr für
Konsistenz in dieser Situation. Und ich werde
euch zeigen, wie Sie
Ihre Funktion für die
Abhängigkeitsinjektion auf Hawaii einrichten können Ihre Funktion für die
Abhängigkeitsinjektion auf Hawaii einrichten Verwenden Sie den Cosmos DB Client für
diese Gesamtinjektion, die
überall verwendet werden kann sonst in
jeder anderen Funktion. Um loszulegen, möchte ich, dass wir
zu neuen Werten gehen. Klicken Sie einfach mit der rechten Maustaste auf Ihr
Funktionsprojekt und das Ziel,
Bilder zu verwalten und dieses zu erhalten. Microsoft hat einen Punkterweiterungspunkt für 0
Punkt Webjobs mit Punkterweiterung Cosmos DB erstellt . Dieses Paket
bietet Ihnen also tatsächlich eine API für Cosmos DB
sowie Table Storage, aber wir werden uns jetzt
auf Cosmos DB konzentrieren. Die nächste Sache ist das Erstellen einer Startklasse, die als
Start-Klasse bekannt ist,
ähnelt der, die Sie in
jeder Dotnet Core-Anwendung sehen. Also haben wir einen Blazer hier oben. In dotnet sucht. Es sieht etwas verdichter aus als das, was
Sie wahrscheinlich gewohnt sind, aber das ist so ziemlich
die Startklasse , die sie irgendwie in einer Datei
zusammengefasst haben. Dies ist im Grunde Bootstraps und fast Dienste bereitwillig zu sein. Ich bin für die
Abhängigkeitsinjektion überall in
der Anwendung verfügbar , sobald
die Anwendung R12-Code ausführt. Das ist es also, was das bewirkt. Also haben wir unsere eigenen erstellt, ich nenne es startup.js. Und ich zeige dir einfach den Code und führe dich durch jede Zeile, damit wir
eine volle Wertschätzung
dessen haben , was passiert. also einfach mit der rechten Maustaste auf
Ihre Funktion fügen Sie eine neue Klasse namens Startup hinzu. Keine CSU erhält möglicherweise einen
Fehler oder ein Feedback , dass Sie einen bereits vorhandenen
Funktionstyp erstellen. Das ist in Ordnung. Sie können das alles oder
alles löschen, was nicht mit dem übereinstimmt,
was ich auf meinem Bildschirm habe. Du gehst einfach weiter und
fahre entsprechend. Wir haben die erste
Annotations-Assembly, Doppelpunkt, und wir führen
einen Funktionsstart durch. Es wird eine
Art von Startup sein. Möglicherweise müssen Sie
während des Vorgangs einige fehlende Referenzen angeben, also tun Sie das einfach entsprechend. Oder Namespaces sind
Einkaufswagenliste. Das wissen wir schon. Und dann haben wir, oder tut uns leid, unser Klassen-Startup, das vom Start der
Funktionen
erbt. Dann haben wir Privates
, die nur
die Konfiguration der Konfiguration entfacht haben,
ist die
Root-Konfiguration gleich einem neuen
Konfigurations-Builder, in dem wir die Basis sitzen, um das
aktuelle Verzeichnis der Umgebung zu sein, das ist das Verzeichnis
des Projekts. Wir fügen unsere JSON-Datei
hinzu settings.js IN true, aber dann natürlich die
lokale settings.js auf. Wir wissen also, wie wir später darauf
zugreifen können. Und dann fügen wir
Umgebungsvariablen hinzu und bauen dann einfach. Dann würde es Ihnen natürlich
einen Fehler geben , der besagt, dass Sie die abstrakte Klasse
implementieren müssen, die Funktionen
starten und dies tun würde
diesen
Methodenstub für Sie generieren. Es ist eine öffentliche Überschreibung
ungültig, konfigurieren. All das wird für Sie
generiert, beide innerhalb dieser Methode,
was wir tun möchten, ist
Builder-Punktdienste zu sagen und ein Singleton hinzuzufügen. Ein Singleton bedeutet
so ziemlich, dass
alles, was Sie hier hinzufügen, Zugriff sein
wird. Eine Instanz wird für
Ihre Anwendung
zugänglich sein . Also eine Verbindung oder Cosmos DB, die gleiche Verbindung zur
Kosmos-DB wird jedes
Mal verwendet , wenn wir auf diese
Abhängigkeit zugreifen, ziemlich richtig? Wenn Sie mehr über Abhängigkeitsinjektion und Holdout
gegen eine Goldmine erfahren
möchten, werde ich natürlich mit dieser Null durchmachen. var-Verbindungszeichenfolge ist also gleich und sieht dann
in der Konfiguration aus. Denken Sie daran, dass die Konfiguration
alle diese Elemente kompiliert, einschließlich unserer Einstellungsdatei. Also haben wir
diese Einstellung bereits als Datei, obwohl der
Name anders ist, wird er kontextuell
wissen, wo wir die Konfiguration finden wir die Konfiguration und mir die Cosmos
DB-Verbindung besorgen wie haben wir es in
unserer lokalen Einstellungsdatei genannt , oder? Also haben wir uns das schon angeschaut. Ich benutze den Emulator
und zeige Ihnen in ein paar die Datenbank
, die wir erstellt haben. Stellen Sie also einfach sicher, dass
Sie diesen Schlüssel, die
Cosmos DB-Verbindung, hinzufügen ,
und dann
fügen wir diesen
Emulatorschlüssel entsprechend hinzu. Also rufen wir
diese DB-Verbindung und dann sehen wir,
ob sie null oder leer ist, dann werfen wir eine Ausnahme aus. Andernfalls geben Sie
eine neue Instanz
des Cosmos Strength Builder mit dem Verbindungszeichenfolgen-Punkt-Build zurück. Das ist also unsere Start-Klasse
, die wir
noch einmal konfiguriert haben , damit wir alle von uns definierten
Abhängigkeiten
injizieren können . Wir definieren nur einen, der für den Kosmos-Kunden bestimmt
ist. Lass mich nicht
zu unserer Cosmos DB springen. Wir haben bereits etwas
Erfahrung damit. Das sind unsere Milliliter. Sie können
fortfahren und zu Ihrem Emulator gehen und diesen neuen
erstellen. Wir haben also eine neue Datenbank, die ich Einkaufswagenartikel
nenne. Dann lautet mein
Sammlungsname Items. Und für meinen Schlüssel oder
einen Partitionsschlüssel verwende
ich diese Wortkategorien. Wir werden also
einige Änderungen an den
Modellen vornehmen , wie wir sie haben. Aber denken Sie daran, dass
die Partitionsschlüssel eine Hochgeschwindigkeitssuche
mögen. So wie Indizes, Ihre Aufzeichnungen oder Ihre Dokumente, Zitat unquote, damit
es schneller gefunden werden kann. Wir fügen also eine neue Eigenschaft namens category hinzu,
was sinnvoll ist. Es ist eine Artikelliste des Einkaufswagens. Was ist die Kategorie? Ist es Essen, ist es Kleidung? Ist es ein Bedürfnis, ist
nicht wollen usw. Damit können wir unser Gewebe
auf den Daten
aufbauen und das Nachschlagen
beschleunigen, die Vorgänge gegen
diese gesamte Datenbank beschleunigen. Du kannst weitermachen und das machen. Nachdem Sie die
Datenbank erstellt haben,
betrachten diese die Änderungen, die an unseren Modellen
vorgenommen werden müssen. Die einzige Änderung, die ich mache, ist der Artikel des
Einkaufswagens. Und ich mache ein GNS3-Create. Lassen Sie mich zuerst mit einem
Einkaufswagen-Artikel gehen. Warenkorbartikel, einer davon, dass er
von
der Tabelleneinheit erbt wird, die
mit freundlicher Genehmigung dieser neuen Klasse, Microsoft Punktfenster,
Punktspeicher-Punkttabelle, die in unserem neuen Paket enthalten ist. Sie können es also erben lassen. Sie müssen es nicht unbedingt tun, aber das Leistungsangebot
, das
es erben lässt , besteht darin, dass die Klasse oder das Modell
wissen, dass sie tatsächlich
Zugriff auf alle Eigenschaften haben , die erhalten wird
immer dann berührt, wenn unser Dokument gespeichert wird, um viele
andere Meta-Tags zu sehen. Sie haben
sie wahrscheinlich bemerkt, als wir die Blog-Übung gemacht haben. Es gibt eine Reihe anderer
Meta-Tags, die sie angehängt haben. Sobald es also
von zwei Entitäten geerbt wurde, wird tatsächlich in der Lage sein, sie zu
analysieren. Nein, ich habe auch
JSON-Eigenschaftenanmerkungen
zu unserer Eigenschaft id req hinzugefügt . Entschuldigung, diese JSON-Eigenschaft sieht
im Grunde genommen, Ja,
ich weiß, dass ich in C-Sharp World bin, beide in JSON Web, bitte treffen Sie mir eine gemeinsame ID. Die Relevanz davon ist Cosmos DB sucht für eine
Immobilie mit gemeinsamer ID. Wenn wir diesen ID-Wert setzen, erhalten
Sie tatsächlich
eine Reihe von Pfeilen. Du kannst es selbst ausprobieren. Ich hatte eigentlich ein kleines
Feld mit Hillary. Denken Sie daran, dass es das dort ablegen
musste. Also kannst du es tatsächlich versuchen. Nachdem ich Ihnen den
ganzen Code gezeigt habe und alles, was
versucht wurde, erstellt werden, muss
ich die
Fehler sehen, die Sie erhalten. Sie werden sich beschweren
, dass
die ID-Spalte fehlt ,
obwohl sie da ist. Also sehen wir es nur,
wenn Sie in JSON sind, identifizieren
Sie sich bitte als gemeinsame ID und dann wird Cosmos DB es sehen und sehen
können,
okay, ich sehe die
ID-Wert-Gefängnisse. Natürlich sind wir nicht allein in Cosmos DB, um die ID zu generieren. Das machen wir. Das bleibt also das Gleiche. Ich habe auch eine andere
Eigenschaft namens category hinzugefügt. Wie ich gerade sagte, Kategorie wird unser
Partitionsschlüssel sein. Und genau wie bei der ID müssen
wir sie wissen lassen, dass
es sich um eine gemeinsame Schlüsselkategorie handelt. Natürlich muss dies nur die Regel für das ganze Jahr mit
dem Partitionsschlüssel
übereinstimmen. Also lasse ich es einfach so. Capital C für
Codebook-Befehl Z für JSON. Dann füge
ich innerhalb des Erstellten auch diese Kategorie ein. Wenn Sie also das Element
erstellen, sehen
Sie den Namen
und die Kategorie. Und natürlich gibt es
bessere Möglichkeiten, dies zu tun. Sie könnten Enums verwenden, Sie
könnten eine Auswahlliste verwenden usw. Aber im Moment werden wir es einfach
halten, nur damit wir die
Übung zum vierten Mal
verstehen können , die Updates, die
tatsächlich optional sind. Eigentlich nehme
ich es raus und nenne es einen Code,
wenn wir da sind. Also werde ich das entfernen,
damit sich das Update nicht ändert. Also fügen wir hier nur eine
Kategorie hinzu. Und für den Warenkorb-Artikel fügen
wir hinzu, dass Andy Studenten
auf dem Grundstück sowie die JSON-Eigenschaft über der ID liegen. Es ist schön
vorbeigekommen und lasst uns zu unserer Funktion
springen. Nein, du würdest einen bemerken, ich habe alle
statischen Schlüsselwörter entfernt, öffentlich. Dies war eine öffentliche statische Klasse. Ich habe das entfernt, weil statische Klassen keine Konstruktoren
haben können. Wir brauchen das Konstrukt
der oralen Injektion. Und andere Sache ist das tut mir leid, ich habe diese Zeile gerade entfernt. Wenn du also wieder ignoriert anfängst , entschuldige
ich mich. Eine andere Sache ist also, dass wir keine statischen Methoden haben
können ,
weil wir
den Code dort ändern müssen. Und das bedeutet, dass wir
das Private benutzen müssen. Felder, die hineingehen. Während wir erklären, was hier
vor sich geht, zeige
ich Ihnen nur das Gelehrte,
das Sie bekommen würden wenn Sie die
Methode anheben, statisch ist, also keine statische Klasse und
keine statischen Methoden. Okay, lasst uns Zeile für Zeile
durchgehen und sehen,
was hier passiert. Zuerst
injiziere ich die
Kosmos-Behauptungen, dass der Kosmos-Kunde von Anfang an
vorbeikommt. Dies gibt also
eine Instanz oder
die Abhängigkeit zurück , die für
den Zugriff auf den Cosmos Client erforderlich ist. Also
schreibe ich nur einen Konstruktor, der für Konstrukteure CTO, unsere Wanne, Wanne
eingekreist ist ist. Und dann könntest du
eigentlich einfach
in den Kosmos Kunden schreiben . Und dann wird es mit
Kontrollpunkten angeboten, das Feld für Sie zu initialisieren und zu injizieren
. Also zeige ich
eine Tastenkombination. Du kannst es schnell einschreiben. Wir wollten einen privaten
schreibgeschützten Kosmos-Client. Und das wird
innerhalb unseres Konstruktors initialisiert. Und dann haben wir einen privaten
Container, Dokumentencontainer. Und dann werden wir
sehen, dass der Dokumentcontainer Cosmos client.stop
Container
entspricht , indem der Name
Einkaufswagen Artikel mit den Kollegen auf Artikeln enthält. Wenn Sie also den Mauszeiger darüber bewegen, werden
Sie sehen, dass es nach
der Datenbankkennung und
der Container-ID gefragt wird. Mit diesem Tool. Mit dem Dokumentcontainer kann
ich jetzt auf die Datenbank zugreifen, auf
die Elemente, die für alle Operationen ausgeführt werden,
die ich brauche. Ich habe darauf
hingewiesen, dass ich das etwas
konsistenter finde , um mit
ein paar Zeilen zu tun , als das Schreiben einzelner
Trigger Code pro Methode ist. Was passiert wäre,
ist, dass ich Cosmos DB schreiben müsste . Dann nach dem
Initialisierer Cosmos DB, um die
Verbindungszeichenfolgenwerte zu haben. Ich werde
generell so schnell machen, wie es
aussehen würde . Das war's. So
würde unsere Notation als
Eingabebindungen aussehen. Als wir uns also vorher
Eingabebindungen angeschaut
haben, haben wir es mit dem
TypeScript-Projekt gemacht, wo wir tatsächlich die
Funktion dot js JSON-Datei ändern. Es gibt keine Funktion
, die JSON-Datei für uns
generiert wird, wenn wir die C-Sharp-Projekte
verwenden. Also haben wir tatsächlich die
Bindungen und Trigger genau
hier in unserer Funktion
Wie bei Rotation eingefügt . Es würde also Cosmos DB sagen, wie lautet der Datenbankname, wie lautet der Sammlungsname und dann die Verbindungszeichenfolge, die natürlich nur
auf den Namen in den App-Einstellungen verweisen würde . Und dann würden wir
es einen Dokument-Client nennen, der
Kunde weiß, Sie hier möglicherweise
verschiedene Datentypen verwenden,
um alle Artikel abzurufen . Wir würden den Client verwenden und dann würde
der Abfragecode so
aussehen. In Ordnung, zuerst müssten
wir also einen URI finden oder einen URI für
die Sammlung
generieren. Also sage ich URI oder
Factory Dot erstellen, Entschuldigung, erstellen Sie
Dokumentensammlungs-URI, und dann geben wir ihm diese. Also hier siehst du, dass ich diese Strings
überall
wiederhole . Sie
möchten wahrscheinlich darüber nachdenken eine
Konstante plus eine Konstante für den
Datenbanknamen oder die
Sorge um den
Sammlungsnamen usw. zu
verwenden. die die
Datenbankkennung und die Sammlung. Und dann würden wir
sagen, dass ich die Abfrage
relativ zum Datentyp dokumentiere , wo ein Boot abfragen soll. Und dann erstellt der Client
dokumentierte
Client-Punkt eine Dokumentabfrage. Und dann geben wir den
URI als Dokumentabfrage ein. Und all dies kann auf
den Hub erweitert werden , wo die Klausel gleich
ist, um sogar so zu sagen wie wir sind, und dann in
eine Bedingung gebracht werden, nach der Sie die Dokumente finden
wollten. Es könnte sein, dass Sie
eine Suche finden oder machen
möchten , die sich für so etwas
wie eine Suche als
nützlich erweisen würde . jedem Fall würde dies
alle Dokumente zurückgeben, und dann würden wir sagen, obwohl die
Abfrage mehr Ergebnisse hat, würden
wir
sie abfragen und dann möglicherweise zumindest
füllen, was wir zurückgeben
möchten. Also hatten wir diese Liste von Top. Das habe ich auch entfernt. Und ich benutze
es hier nur vor Ort. Sie würden also einfach jedes Element zur Liste
hinzufügen. Das war es, was Sie getan haben, wurden nicht der
Ansatz gewählt, den ich
Ihnen nur zeige , weil es gut ist, Ihre Optionen
zu kennen. Also werde ich das
kommentieren, und ich werde das
kommentieren. Zumindest wenn Sie sich den Quellcode später ansehen
, können
Sie sehen,
dass dies mit diesem Code übereinstimmt. Da ich jedoch den Client an die Spitze
injiziert
habe, kann ich jetzt geradeaus gehen und C. Zuerst habe ich meine Liste hier
generiert, deklariert. Und dann sage ich, dass
var-Elemente gleich dem Dokumentcontainer Punkt sind, bekomme Artikelabfrage I Iterator relativ zum Typ
Einkaufswagen Artikel. Dies wird so sein, dass ich
losgehen und einfach alles bekommen muss losgehen und einfach alles bekommen und sie werden sehen, dass
Gegenstände mehr Ergebnisse haben. Wir würden einfach weitermachen und hinzufügen. Ein Drei-Zoll-Werkzeug oder eine neue Liste. Okay, also ist die
var-Antwort gleich den Elementen, die als nächstes asynchron
gelesen werden. Und dann
lassen wir diesen Bereich einfach in unsere Dropdown-Liste
in unsere Liste fallen. Und dann kehren
wir wieder zurück. Denken Sie darüber nach. Ich könnte wahrscheinlich sogar
diese Liniendiagramme machen. Mal sehen, ob das funktionieren würde. Und C Items Dot gelesen. Als nächstes sehen Sie Punkte. Okay, also ist es ein
asynchroner Softkurs ich gerne auf unsere Breite hätte. Nun, wenn ich
das mit unseren Gewichten mache, dann könnte ich eine To-Do-Liste auf dem erstellen,
was zurückgegeben wird. Da sind wir los. Also
brauche ich wahrscheinlich sowieso nicht einmal das alles. Zwei Zeilen. Weißt du, manchmal schreibst du
etwas und dann
merkst du , dass ich es etwas besser hätte
schreiben können. Also werde ich das vorerst kommentieren , dass
wir zurückkommen und testen
und validieren können , ob mein
Refaktor wie erwartet funktioniert. Aber du siehst das Ziel,
die Gegenstände zu bekommen, und dann bekommen wir sie in den
gelesenen Punkten macht das Asynchron, was im Grunde nicht die
Gegenstände sind, die in unseren Slips oder in
Klammern enthalten sind, so dass können die beiden Liste auf
alles aufrufen, was zurückgegeben wird. Okay, das ist es, was wir zurückkehren, als wir
versuchten, alles zu bekommen. Also lasst uns weitermachen. Der wird nach ID. Hier
wäre es also wie basierend
auf dem , was wir zuvor gemacht haben,
wo wir tatsächlich diese Bindung
hatten, wo wir nach der
ID für den Partitionsschlüssel gesucht haben
, der in diesem Fall eine Kategorie ist. Also hier habe ich
die Route geändert, um zu sagen, gib mir ID und Partitionsschlüssel. Dann sind das die
Werte, die ich
verwenden werde, um meine Abfrage auszuführen. Ich hätte
tatsächlich die gleiche Art von Bindung verwenden können, die
zuvor in
dieser Methode hier verwendet hätte . Das würde uns tatsächlich
helfen, den einen Datensatz zu erhalten, der mit
dieser ID und dem Partitionsschlüssel übereinstimmt. Hier ist ein Beispiel dafür
, wie das aussehen würde,
dieser Bindungscode. Also Cosmos DB, wir haben
denselben Datenbanknamen, Sammlungsnamen und dieselbe
Verbindungszeichenfolge. Und dann sagte ich
ihm, dass die ID an die ID gebunden ist ,
die vom Parameter hier hereinkommt. Der Partitionsschlüssel ist in ähnlicher Weise an den
Partitionsschlüssel
gebunden, der hier hereinkommt, und dann wird
dieser verstreut. Gehen Sie zu Cosmos DB, suchen
Sie nach und speichern das Ergebnis anstelle des
Warenkorbsartikels. Und sobald wir einen
Einkaufswagen haben, wären
Sie nicht so einfach wie Rückgabe sperriger Objektergebnisse, den Warenkorbartikel. Aber wie gesagt, bevorzuge
ich eine Art
Konsistenz, da
dieser Bindungscode
sich fast völlig
von diesem Bindungscode unterscheiden wird. Und du musst sehr
vorsichtig sein und ich
sage nicht, dass es schlecht ist, ich
verprügele keineswegs den Code. Ich sehe, dass es
nicht meine Präferenz ist, aber ich zeige Ihnen,
welche Möglichkeiten Sie haben. Also werde ich das
kommentieren
, damit der PCAOB es
als Bezugspunkt ist. Aber was ich hier getan habe, ist
zu sagen, dass var item dem
Container für Gewichte entspricht , lesen Sie den Artikel asynchron. Also bekomme die Artikelabfrage ich Iterator. Das ist alles, was wir
zu unserer Sammlung bekommen. Dieser ist einer, den Sie wollen, einer möchte einen
Warenkorbartikel und ich gebe ihm die ID, und ich gebe ihm den
Partitionsschlüssel, der Kategorie ist. Natürlich habe ich
die Parameterliste ebenfalls um
die ID und die Kategorie erweitert . Und ich habe gerade eine Route gemacht
, auf die ich hinweise, um die ID
Slash-Kategorie darauf zu haben. Wenn Sie versuchen zu
bekommen, sollten Sie die ID dessen, was
Sie erhalten,
sowie den Kategorienamen übergeben die ID dessen, was
Sie erhalten, .
Sie können mit Glukose sprechen. Das machen wir. Und dann wird der Artikel tatsächlich mit einem Statuscode
zurückkommen. In Ordnung, also
wird es sagen, ob der Statuscode dem HTTP-Statuscode und
dem
Telefon entspricht , dann geben wir keine Telefonergebnisse zurück. Alles klar, nett und einfach. Ansonsten gehen wir weiter und geben die alten wichtigen Ergebnisse zurück sind in Ordnung. Objektergebnisse mit
item.name-Ressource. Sie können also sehen, dass das
bei einem Versuch ausbrach, weil ich etwas
falsch
gemacht habe , als ich
das geschrieben habe und ich die Ausnahme
sehen musste. Sie können das also nicht tun,
wenn nötig, aber es ist wirklich und
wirklich nicht unbedingt. Also habe ich es entfernt,
nur damit ich
den Code vereinfachen und dir
genau zeigen kann , was benötigt wird. Es ist also ganz. Sie würden
einen Datensatz aus
dem Cosmos DB-Datenspeicher nachschlagen . Sehen wir uns nun an, was passiert
, wenn wir unser Create machen. Okay, was wir hier wirklich und wirklich
machen ist zu sehen, dass wir
die gleiche Art von Bindungen machen wollen. Also habe ich es natürlich kommentiert, aber wenn man es sich anschaut, ist
es dieselbe Art von Bindung, außer dass diese eine äußere
Bindung für Output-Bindings
wäre . Das ist also eine Input-Bindung. Dies ist eine Output-Bindung,
weil
sie dann etwas
an die Cosmos DB ausgeben wird. Im Wesentlichen geht es darum, die Cosmos DB Collection
Datenbank zu bekommen, das wissen wir alles. Aber dann der letzte
Parameter hier. Ist vom Typ I Async-Collector
relativ zum Datentyp. Wir wissen, dass wir einen Prozess
und dann den Namen davon wollen. Lassen Sie es mich also in
die gleiche Linie legen, damit es etwas einheitlicher aussieht. Das ist der Datentyp, den
wir verwenden müssen , weil wir
asynchron arbeiten. Wenn du
es nicht asynchron gemacht hast
, machen wir einfach
eine Alt-Variable. Sie können keine alten Verbals anstelle einer
asynchronen Methode verwenden, wir müssen den
Async-Collector relativ zum Datentyp und
dann zum Warenkorbartikel verwenden. Und später im Code,
nachdem wir den Warenkorbartikel und alles bekommen haben
, müsste tatsächlich
so etwas tun ,
um ihn der Sammlung hinzuzufügen. Also lass uns sehen. Artikel im Einkaufswagen ALT. Also ein Auto zu diesem
Namen, das Artikel im Einkaufswagen
hätte sein sollen . Ich nenne das nur, weil
wir wissen, dass es ein ALT ist. Es geht alles in
die Cosmos DB, oder? Also Artikel im Einkaufswagen, nicht asynchron hinzufügen, und dann geben wir den Artikel weiter
, den er hinzufügen soll. Das wäre wirklich das, was
am Ende dieser Operation passieren würde . Der kommentierte alte Code, genauso wie ein kälter es kommentiert
. Was wir
jedoch tun, ist, dass wir sehen, natürlich wissen wir, dass wir
die Daten aus dem Körper beziehen, sie entsprechend analysieren
und dann
einen neuen Artikel vom Typ
Einkaufskarten erstellen, und dann
einen neuen Artikel vom Typ
Einkaufskarten erstellen auf dem wir geben Sie den Namen
und die Kategorie ein, die durch unsere Anfrage eingegangen ist. Und dann sehen wir Belegmenge und R
Punkt erstellen Artikel asynchron. Wir geben Ihnen den
Artikel und
geben ihm dann den Partitionsschlüsselwert. Die Relevanz dieses
Partitionsschlüsselwerts besteht darin, dass wir die Kategorie
verwenden, die als Daten
gesendet wurde, oder? Wenn ich diese Kategorie gesagt habe, wenn Sie diesen
Artikel und diese Kategorie erstellen, erstellen
wir sie, um
diesen Wert festzulegen. Als wir also unser
Blog-Beispiel gemacht haben, wo ich die ID sowohl
für ID als auch für den Partitionsschlüssel verwenden würde . In diesem Fall zeige ich
ein praktischeres Beispiel. Jetzt möchten
Sie es wirklich basierend
auf einer
Kategorie oder Gruppierungen schneiden . Wir verwenden die Kategorie
als Gruppierung. Sobald Sie das getan
haben, geben wir einfach die alten
Hauptobjektergebnisse mit dem Element entsprechend zurück. Also würde eine dieser
Zeilen relativ
zu den unkommentierten
schwer vor Gericht für Erwachsene kommen. Schauen wir uns das Update an
und weil ich
die Kategorie aus dem Artikel zum
Aktualisieren des Einkaufswagens entfernt habe , erhalten
wir diesen
Fehler, aber wenn wir dort
ankommen, können wir es uns ansehen. Nein, ich werde keine Zeit
damit verbringen, nach
Alternativen für den Put und das
Löschen zu suchen , zu dem Sie gehen können, um diese zu
recherchieren. Ich werde einfach
voranschreiten und dir
zeigen, wie ich es gemacht habe. Also habe ich das Root aktualisiert oder muss die Route aktualisieren
, um die Kategorie einzuschließen. Also habe ich nicht in die Kategorie aufgenommen, weil
wir so, wie wir es machen, immer diesen
Partitionsschlüssel brauchen. Also muss ich
dies auf die Kategorie ausdehnen. Natürlich ist die Methode gesetzt. Also bekommen wir die
Anforderungsdaten und analysieren sie. Und dann werde
ich sehen, ob unsere Artikel, ich werde gehen und
das Element aus der Datenbank montieren. Also verwenden wir denselben
Code, der in
der GIT-Single verwendet hätte , oder? Nun, dieses Mal kommt der
Partitionsschlüssel aus unserer Parameterkategorie, oder wir gehen einfach Wege an. Also muss ich sicherstellen, dass
ich String-Kategorie einfüge. Und wenn es
den Gegenstand gefunden hat oder nicht, wird
es überprüfen, währenddessen Schlüssel. Wenn es gefunden wurde
, sagen wir weiter
Artikelpunkt-Ressource. Die Daten, nachdem sie fertig sind, Doktorandendaten
in der item.name-Ressource gespeichert. Aus diesem Grund haben wir die
Artikelpunkt-Ressource zurückgegeben , die nicht nur auf den Artikel
gestiegen ist. Ich weiß nicht, ob ich
darauf hingewiesen habe. item.name, source und
dann aktualisieren wir alles, was wir brauchen, um auf
nirgendwo zu aktualisieren, wo ich im Collected aktualisieren wollte . Wenn Sie es also erweitern, um einen
Namen auf dem zu haben, was auch immer es sein wird, dachte
item.name Ressource diese Eigenschaft. Und dann sind wir
Gewichtungsdokumentcontainer dot upsert item async, wo wir die
Artikelpunkt-Ressource zu viel zurücksenden. Nachdem wir die
Artikelpunkt-Ressource aktualisiert haben, senden wir sie zurück. Dann
werden wir das sowieso zurückgeben, als aktualisierte Daten. Im Delete aktualisieren wir das Root
erneut. Also nehmen wir die Kategorie
als Partitionsschlüssel. Und dann werden wir nur sehen, dass ein
Löschelement für Gewichtungsdokumente angezeigt wird. Wir sehen, dass wir
einen Warenkorbartikel löschen. Wir möchten die ID
und diesen bestimmten
Partitionsschlüssel löschen . Und dann geben wir das Ergebnis zurück. Das ist es im Grunde
für diese Operation. Alles klar Leute, also lasst es uns an allem
testen, was wir tun. Immer wenn wir etwas
Cooles machen, müssen wir es testen. Ich werde nur
Postman zur Sprache bringen und ich habe bereits einen Test
für die Nachkriegszeit gemacht , die ich
geschaffen habe, und ich habe dir
die Kategorie Obst gegeben. Hier ist eine erfolgreiche Rückkehr. Wir können gehen und holen. Also das wird alles und ich
habe zwei Rekorde da drin, die Sonne, die und ich Äpfel haben. Einer gehört zur Kategorie Lebensmittel, eines gehört zu einer Kategorie von Obst. Früher, als ich statistisch war, habe ich tatsächlich Bedürfnisse
und Wünsche als Test verwendet. Und was mir aufgefallen
ist, war, dass es tatsächlich
eine 500 zurückgegeben hat, oder? Also habe ich einen Einkaufswagen ID-Karte, Partitionsschlüssel, also sollte mir das
wirklich 404 geben. Es bedeutet, dass du nicht finden
kannst, wonach ich suche. Ein 500 zeigt an, dass es auf meinem Server
ein Problem gibt
, das nicht korrekt ist. Wenn Sie hier hinschauen, werden
Sie feststellen, dass es
tatsächlich
eine Ausnahme auslöst , da
der HTTP-Client , der den
Aufruf von Cosmos
DB tätigt , eine Methode enthält
, die besagt, dass unsere , die besagt, dass Erfolgscode sicherstellen. Wenn es etwas
anderes als 200
oder einen dieser
200-Antwortcodes
sieht , wird
tatsächlich eine Ausnahme ausgeführt. Obwohl es
sieht, dass es sich um 404
handelt, wirft es eine
Ausnahme aus, die
sich als
500 für den Kunden manifestiert, was wir nicht wollen. Was ich also getan habe, ist es ein bisschen
neu zu gestalten. Also zeige ich dir
den Code, der aufgerufen
wird und der eine Ausnahme auslöst. Mein Refaktor würde mich dazu , diesen Anruf
innerhalb des Versuchs zu fangen. Dann gebe ich die alten
Schlüsselobjektergebnisse zurück und dann 40 fangen. Ich werde sagen, fangen die Kosmos-Ausnahme in
Form eines Objekts namens E. So Cosmo, also ist eine Ausnahme benutzerdefinierte Ausnahme, die von dieser Methode ausgelöst
wird. Und wenn der
Statuscode gleichwertig ist und wir einfach den integrierten
Statuscode E-Norm verwenden
können , um nicht angerufen zu werden, möchten wir einen neuen 404
zurückgeben. In Ordnung, das ist also
mein literarischer Faktor. Also starte ich
das neu und versuche es noch einmal. Wenn ich das noch einmal
ausführe, stelle ich einfach sicher
, dass dies läuft. Wenn ich das also
noch einmal ausführe und auf Senden drücke, nein, gibt es keine Instanz oder es gibt keinen Hinweis auf eine Ausnahme
im Protokoll und wir
kommen von 404 ab, also ist das viel besser. Ich wollte das als Essen. Lass mich einen Wagen probieren. Anfragen, die keine
Vier oder Vier oder eine
500 geben sollten , und los geht's. Wir können den
Datensatz erfolgreich abrufen. Jetzt versuchen wir es. Anfangs hatte ich die Kategorie ,
in der ich bereit bin,
die Transportkiste zu nehmen, und ich habe sie
einfach bei gesammelt lassen,
stimmt, dass diese unseren ID-Wert
aktualisieren. Also die ID und die
Partitionsschlüssel, die für den Put benötigt werden, lassen Sie mich beides setzen und dann aktualisieren. Jetzt wirst du sehen
, dass das stimmt. Zunächst
wissen wir, dass es falsch war. Wir können sehen, dass es stimmt. Das Update funktioniert. Dann lasst uns löschen. Und noch einmal müssen
wir
unsere ID und einen
Partitionsschlüssel für das Löschen eingeben . Also lass mich das einfach machen, und das ist eine 200. Okay. Wenn ich also versucht habe, wieder
zu kommen, dann bekomme ich nur einen. Unser gesamter Code
arbeitet also mit unserer Cosmos DB. Wenn Sie dies weiter validieren möchten
, können
Sie natürlich die MLA aufrufen
oder MLA betrachten, um sicherzustellen, dass es vorhanden ist, und dann
alle Ihre Anpassungen
entsprechend vornehmen . Spielen Sie damit herum, erforschen Sie, sehen Sie, was möglich ist.
31. Updates für die Benutzeroberfläche: In Ordnung Leute, also haben wir einfach unseren Code
durchgegangen und unsere Anwendung
für die Verwendung von Cosmos DB
eingerichtet, richtig, also lassen Sie uns
schnell
einige der Änderungen an der Benutzeroberfläche durchgehen , die vorgenommen werden müssen. Da wir die
Roots-Informationen
für einige unserer Endpunkte aktualisiert haben, wie wir geändert haben,
benötigen wir auch den
Partitionsschlüssel, solche Sachen. Natürlich müssen die Endpunkte entsprechend
aktualisiert werden. In unserem Kunden können
wir den
Route-API-Endpunkt
oder die Basisadresse so belassen , wie sie ist. Aber dann werde
ich in unserer Komponente einige Anpassungen am Update und
dem
Löschen vornehmen . Für die Updates. Wir hatten gesagt, dass
ja, wir nehmen die ID, aber wir möchten auch, dass die Kategorien bereits Zugriff auf den Artikel haben. Also sage ich nur Schrägstrich, füge den Kategoriewert
auch den gleichen für das Löschen hinzu. Wir werden die Kategorie einfach
hinzufügen. Und das ist wirklich alles, was es gibt , um diese
Endpunktanrufe zu aktualisieren. Wenn Sie es
erweitern, um
eine detaillierte Rede zu haben,
in der Sie auf klicken, sehen Sie sich natürlich eine detaillierte Rede zu haben,
in der Sie auf klicken, sehen nur das Detail eines Datensatzes an, den Sie berücksichtigen
müssen. Ich meine, lösche einfach
diesen
Code und zeige dir ein weiteres
Update, das gemacht wurde. Anfangs hatte ich das als Wert gleich und es wurde zum Bool
geboren, aber das sollte überprüft werden. Das
aktivierte Kontrollkästchen für den Eingabetyp entspricht
dem Wert, der ist. Und dann haben wir dieses Ereignis und nichts ändert sich
für irgendetwas anderes. Ich werde das einfach
schnell testen. Okay, das ist also
unsere Benutzeroberfläche. Ich werde
das noch einmal testen, um mit Cosmos DB zu helfen. Und die Kategorie
wäre zufällig. Erstellen Sie einen Einkaufswagen-Artikel. Da sind wir los. Alles klar. Natürlich könnten wir
den Code, den er aus
den Textfeldern leert, immer aktualisieren den Code, den er aus
den Textfeldern leert , solange
etwas erfolgreich hinzugefügt wird. Wissen Sie, bevor Sie
bemerkt hätten, dass ja, er hat Kugel gerufen. Der Prüfwert zeigte nicht an,
wann er wahr war oder nicht, also haben wir ihn gerade aktualisiert. Wenn ich das überprüfe, lass mich einfach das
Konsolenfenster aufrufen, damit du siehst, dass es das Update aufruft. Da ist es The Put, was sich erfolgreich
nennt. Wenn ich also beim Comeback von
dieser Seite wegnavigiere, wird eine neue Abfrage ausgeführt. Und manchmal, wenn Sie die Konsole
stören , wird sie pausiert. Aber da ist es, das ist die neue Abfrage und weiß, dass der Prüfwert angezeigt wird. Wenn ich also lösche, können
wir sehen, dass die
Funktion aufgerufen wurde, aber das ist nicht neu zu zeichnen, also kann ich das wahrscheinlich noch einmal besuchen. Aber wenn ich weggehe und
zurückkomme und erlaube, dass es
den Git ausführen kann, dann sehen wir hier, dass es
tatsächlich gelöscht wurde. So können wir wahrscheinlich
den UI-Code aktualisieren , um ihn nach dem Löschen
ordnungsgemäß neu zu zeichnen. Die schnelle und einfache Lösung
dafür besteht darin, die Ereignisrückrufmethode zu ändern oder zu
klicken. Anstatt also so zu tun,
wie wir es mit
den Ereignisargen gemacht haben, und dann
rufen wir den Methodennamen hier auf. Wir werden nur unser Anzeigenschild
haben, Klammern
öffnen und
dann öffnen und schließen. Es ähnelt eher einer
Delegiertenfunktion und wir delegieren sie an
unser Löschklickelement. In Ordnung, so ziemlich
viel wird das Problem des Neuzeichnens
nur lösen, denn
die Art und Weise, wie die Komponente geladen wird, die wir zuvor
gemacht haben, würde tatsächlich versuchen, alles vorher
neu zu laden hat tatsächlich registriert, dass
die Artikelliste aktualisiert wurde. Und eine andere Sache, die Sie sehen
könnten, ist, eine Liste
anstelle eines Arrays zu verwenden , das wirklich
wie normaler Materialeffekt ist wie normaler Materialeffekt Ich bevorzuge nur Listen. Beide Bereiche könnten effizienter
sein. Das ist abgesehen von dem Punkt
an diesem Zeitpunkt, so können Sie diese Löschung
erhalten, um die Seite richtig
neu zu zeichnen. Aber das ist
es wirklich für die Änderungen die für unseren Kunden
erforderlich sind.
32. Section – Erstelle REST API: In Ordnung, also wo
es ein weiterer Meilenstein und wir werden
nur einige
der wichtigsten Diskussionspunkte
dieser Aktivitäten überprüfen . Hauptpunkt Nummer eins, wir hoffen, dass
wir wissen, dass wir
eine Funktion mit einer Datei
oder einer Datei mit einer Funktion erstellt haben. Niemand hat bemerkt, dass wir
mehrere Funktionen in
derselben Klassendatei haben können , was im Fall von
uns, eine Rest-API zu erstellen etwas
effizienter
wäre, wenn es darum , nicht alle damit verbundenen
Endpunkte oder
Verhaltensweisen über mehrere Dateien hinweg, aber sie nur in einer
Datei für eine Referenz haben. Wir haben uns auch angeschaut,
dass wir
die Funktionsnamen
getrennt von der Wurzel definieren können . Mit unserer Definition der Regeln könnten
wir
RESTful API und Mentee
und die Standardangebote tatsächlich nachahmen . Wir können verschiedene
Operationen wie GET,
post, PUT und Delete enthalten. Und wir haben auch alte Passform oder Wurzeln mit Parametern
, die übergeben
werden müssen , die automatisch entbeint
werden, relativ dazu, dass
sie
im Methodenkopf vorhanden sind. Das sind also einige Dinge
, die wir uns angeschaut haben. Wir haben uns keine Sicherheit angesehen, die das tun
wird, wenn wir auf
Ihre Seite gehen , wenn
wir dies veröffentlichen. laufen also alle auf
Autorisierungsebene anonym. Einer der Gründe, warum Sie es nicht im
Folgenden zeigen oder
gar Master machen
möchten , ist, dass bei jeder Anfrage dieser Schlüssel
Gefängnisse sein müssen. Das haben wir uns
in zukünftigen Lektionen angeschaut. Ich weise nur darauf
hin, warum wir für alle
unsere API-Operationen
anonym geblieben sind. Wir haben uns auch mit der
Integration in unsere Daten befasst. Und wir haben gesehen,
dass Sie es immer als
Bindung hinzufügen können, basierend auf dem Ganzen, das
Sie damit integrieren, der Code wird
anders aussehen. Also habe ich die
kommentierten Snippets eingefügt , die mit der Operation
bei
Handschrift einhergehen würden . Ich hatte jedoch
einen anderen Ansatz gewählt denn wenn wir Bindungen verwenden, basiert
jede Methode auf der Art der Bindung
oder der, die wir machten. Die Bank benötigt möglicherweise
andere Datentypen und verschiedene Möglichkeiten,
mit dieser Bindung zu interagieren. Anstatt das zu haben, wissen
Sie, all diese Änderungen
überall, ging
ich stattdessen mit der Option für
die Abhängigkeitsinjektion, ging
ich stattdessen mit Option für
die Abhängigkeitsinjektion bei der ich die
Kosmos-Clients verwende. Wir haben eine Startup-Klasse eingerichtet, die die Schriftart gestartet
hätte, die wir wollen, unseren Cosmos Client. Und das bekommt er von
der Cosmos DB-Verbindung, die in meinem
lokalen settings.js SON gespeichert ist. Und natürlich
emulieren wir das mit dem Speicher-Emulator,
zumindest für nein. Und nachdem ich das getan
habe, kann ich wissen, dass ich überall
injiziert wurde. Ursprünglich hätte man öffentliche statische Klassen
und statische Methoden bekommen. Ich musste das gesamte statische
Schlüsselwort nehmen, um
unsere Abhängigkeitsinjektion mit
diesem Dokumentcontainer zu unterstützen , auf den
wir uns tatsächlich verlassen konnten. Ich bin mehr in meinem Buch konsistent WE der Vielfalt im Code, um bestimmte Dinge zu
erreichen. Wissen Sie,
dass ich
Ihnen deshalb die Optionen gebe da verschiedene Falten, verschiedene Striche, verschiedene
Situationen unterschiedliche Hinrichtungen erfordern
können , oder? also nicht unbedingt sehe , dass
es so ist, wie es gemacht werden muss, zeige
ich Ihnen nur,
wie ich es bevorzuge. In Ordnung. Das ist also wirklich alles, was
es zu oder API gibt. Wir haben uns auch angeschaut
, dass
wir mit unserer Cosmos DB unseren Partitionsschlüssel einbeziehen müssen. Und dabei mussten
wir sicherstellen, dass unser Modell,
das unsere
Cosmos DB-Tabelle
repräsentiert, Jesus On Property ID und den
JSON-Eigenschaftsnamen hat Jesus On Property ID und den
JSON-Eigenschaftsnamen , die
übereinstimmen oder den Namen des Partitionsschlüssels entsprechen. Das letzte, was wir gemacht haben, war nur das Update oder die Benutzeroberfläche,
um sicherzustellen, dass es die neuen
Straßen und alles andere widerspiegelt. Das ist es wirklich
für dieses Modul, ich hoffe, dass Sie
viel erreicht haben und ich möchte, dass Sie sich inspiriert fühlen, dies selbst zu tun. Man sieht, dass der
Photoshop ziemlich leicht ist. Es ist eine einfache Möglichkeit,
Code
zu schreiben und
Dinge mit dem
gesamten Overhead von
zweiminütigen Projektdateien und
Konfigurationen zu erreichen, die mit
all dem Gesagten und Erledigen dem
gesamten Overhead von
zweiminütigen Projektdateien und benötigt werden. Wir sehen uns im nächsten Modul.
33. Azure Function Deployment: Alles klar Leute, willkommen zurück. In diesem Abschnitt werden
wir uns das Publizieren
oder eine 0 Funktionen anschauen , die
ziemlich in einer 0 hoch sind. Es gibt also eine Reihe von Nuancen,
auf die wir achten müssen. Wir haben schon einmal über die
Hosting-Modelle gesprochen, aber wir werden sie uns
noch einmal ansehen. Und wir werden untersuchen, welche Bedürfnisse der
Gedankenprozess
einführen muss , wenn wir unsere Funktion
veröffentlichen werden . Also bleib dran.
34. Azure-Funktionen veröffentlichen: Okay Leute, also lasst uns mit unserem Einsatz
beginnen. Also klicken wir
mit der rechten Maustaste oder auf eine Funktion nach oben und gehen zu Veröffentlichen. Und dann kriegen wir diesen Zauberer. Also wollten wir auf eine 0 veröffentlichen, wir wählen das aus und dann
müssen wir ein Ziel angeben. Ich habe vielleicht
zuvor in diesem Kurs
versehentlich erwähnt , dass Sie,
wenn Sie Windows verwenden, möglicherweise C-Sharp
verwenden möchten und dann andere Sprachen
für andere Plattformen verwenden können. Die Realität ist jedoch, dass .net tatsächlich
plattformübergreifend ist. C-Sharp wird genauso gut
unter Windows funktionieren wie unmarkiert und Linux, das ist die Realität. So
kann Ihre Funktion auf
der Basisebene auf der
Windows-Version
dieser Funktion nach oben oder auf
der Linux-Version
dieser Funktion bereitgestellt werden dieser Funktion nach oben oder auf . Genauso
können Python, Java und TypeScript
und JavaScript Java und TypeScript
und JavaScript
für jede dieser Sprachen ebenfalls unterstützt werden. Sie haben auch die Möglichkeit
, sie als
Container mit Azure
Container Registry zu veröffentlichen , mit
denen Sie Ihr Docker-Image
hosten können. Ich fahre jedoch mit Windows
fort. Nach Auswahl des
Windows-Wochenendes hat keine Ansicht oder Suche nach
Photoshop-Apps bereits eine Funktion, die ich von Anfang an
erstellt habe, aber ich werde sie nicht verwenden. Ich wollte
ein brandneues kreieren. Also klicke ich auf Neue Funktion
erstellen. Und dann
fragt es mich nach dem Namen. Jemand sieht gerade eine
Einkaufswagen-Bindestrich-API , den Abonnementnamen. Natürlich werden
Sie möglicherweise aufgefordert
, sich mit Ihrem 0 Doppelpunkt anzumelden, damit Sie damit fortfahren können. Ich belasse es in einer der vorhandenen Ressourcengruppen. Da sind wir los. Funktion von r g. Wenn Sie
keine Ressourcengruppe haben, können
Sie einfach auf
Neu klicken und dann einen neuen Namen erstellen. Dann haben wir unsere Plantypen. Denken Sie also daran, dass wir
den Verbrauchsplan, den Premium-Plan und
den App-Service-Plan haben. Also nur um zusammenzufassen,
was die Plantypen sind und welche verschiedenen
Vor- und Nachteile von jedem sind. Der
Verbrauchsplan ist der Server, die Milz ist der
günstigste Plan. Das ist ein Vorteil und
ein Nachteil ist, dass es tatsächlich
Einschränkungen bei
der Ausführungszeit hat . Nach etwa fünf Minuten oder so wird
die ganze App
tatsächlich Kuppel wickeln. Es wird also Ressourcen freigeben. Und wenn Sie dann eine weitere Anfrage
stellen, wird
es einige Zeit dauern, sich wieder
zu spulen. Um
auf schnelle Gewinne zu testen, wäre
das natürlich ein guter Ansatz. Für ein reales Szenario
in einer Produktionseinstellung, in einer Produktionseinstellung Sie eine maximale Effizienz
und maximale Betriebszeit benötigen, möchten
Sie wahrscheinlich Premium verwenden, wo es nicht auf Ressourcen
reduziert wird. Sie verfügen
jederzeit über
dedizierte Ressourcen und können auf VNets und andere
Ressourcen im Netzwerk zugreifen. Das ist eine Netzwerkebene. Natürlich kostet das ein bisschen mehr. Ihre andere Option wäre
fusioniert und App-Service-Plan. Vielleicht haben Sie also einen App-Dienst unsere Website
bereits
ausführt, oder eine andere API. Sie könnten es tatsächlich einfach in diesem Plan
bereitstellen. Außerdem wollte ich mit
diesem Konsumplan gehen. Nachdem Sie
dies ausgewählt haben, wählen Sie natürlich
Ihren Standort aus. Und für mich wird das Ost-US-Tool
sein. Und dann wählst du
deine Geschichten oder Kegel aus. Ich habe nur einen, damit
das bleiben kann. Und dann klicken wir
auf Erstellen. Und nachdem das abgeschlossen ist, führen Sie zurück zu diesem
Dialogfeld, in dem wir auswählen
können,
aus der Paketdatei auszuführen. Das ist also angekreuzt und es wird so
ziemlich
empfohlen so
ziemlich
empfohlen
, dass es tatsächlich eher wie
eine Zip-Datei mit allen erforderlichen Dateien,
den DLLs und
Ressourcendateien
bereitstellt eine Zip-Datei mit allen erforderlichen Dateien,
den , die wir benötigen. Und es wird wie
ein Bild der App gemountet ein Bild der App anstatt dass die tatsächlichen
Dateien da sind. Mit dem alten Trend,
die Feinheiten davon zu verstehen, werde
ich es einfach angekreuzt
lassen wird angegeben, dass es empfohlen
wird, also werde ich ihrer
Empfehlung folgen. Dann können wir auf „Weiter“ klicken. Und dann
wollen sie, dass wir uns entscheiden. Möchten Sie
wie eine normale Website veröffentlichen? Bevor es CICD gab, haben wir so früher veröffentlicht. Es würde
eine veröffentlichte Datei generieren. Stellen Sie alle Dateien an einer bestimmten Stelle
im Netzwerk oder Ihrem Computer bereit, und er kann
sie dann kopieren und an das Ziel einfügen. Oder willst du
CICD mit GitHub verwenden? Also habe ich diesen GitHub bereits
hinzugefügt. Wenn du willst, kannst du das
immer machen. Sie können das
Quellcodesteuerelement mit
dieser Option hinzufügen , die sich in der unteren rechten
Ecke von Visual Studio befand. Nachdem du das winzig auf GitHub
hochgeladen hast, kannst du wahrscheinlich wieder
hierher kommen. In Ordnung, jemand
, der CICD mit
GitHub-Aktionen benutzt und dann fertig wird. Das bedeutet also, dass jedes Mal, wenn
ich eine Änderung
einchecke, die Bereitstellung
auslöst. Nirgends führen Sie zu unserem
letzten Bildschirm, wo es uns eine Zusammenfassung von allem
gibt
, was genommen hat, bitte. Es wird tatsächlich
diese neue Datei hinzufügen , die YAML-Datei
genannt wird. Eine YAML-Datei, nämlich Kelly, enthält alle Bereitstellungsanweisungen
, die GitHub verwenden wird , um festzustellen,
was passieren muss. Wir erhalten auch eine Vorschau von der URL, die für unsere Nullen
generiert wird. Alles was wir brauchen, können
wir
über diese URL live darauf zugreifen. Dort
wird unsere EPA zugänglich sein. Und hier unten sehen wir einige der Abhängigkeiten,
die
Application Insights konfiguriert werden
müssen.
Lass uns weitermachen und das machen. Denken Sie daran, dass wir das für die Protokollierung haben möchten
. Sie können
einfach über diesen Assistenten auf
Weiter klicken
und ihn beenden lassen. Sobald Sie
das getan haben,
stimmte es sicherlich zu
, dass Zähne konfiguriert sind. Sie zeigen Ihnen auch
, dass sie
die Azure Storage-Sitzung ersetzen werden die Azure Storage-Sitzung denn lokal
verwenden wir den Emulator, aber sobald wir bereitstellen,
werden wir wissen, dass den
echten Speicher verwenden
sollte, zitiere ich. Alles klar, also wenn
all das erledigt war, und wenn Sie
den Verstärker aus
irgendeinem Grund modifizieren wollten , konnte
er nicht zu
Weitere Aktionen gehen, bearbeiten. Und es zeigt dir,
was benötigt wird. Wie gesagt, wie gesagt, dies wird tatsächlich ausgelöst,
wenn wir einchecken. Wenn ich das Git
Changes Fenster öffne, werden
Sie sehen, dass
alle diese Änderungen hinzugefügt werden. Und dann werde ich
eine Bereitstellungsaktivität sehen, Spalte
Deployment. Dann bin ich einfach gekommen, um
überhaupt zu kommen und die Senke speichert alle Änderungen und erlaube es
, in das Repository zu schieben. Wir können
zum Repository
in GitHub springen und wir können einfach auf den kleinen Punkt klicken , der
neben dem Huhn erscheint, oder
um Zahlen zu verpflichten. Wenn ich diese Eintragsdetails mache, springen
wir zu diesem
CID siehe CICD-Bildschirm. Also lasst uns ein
paar geben, um fertig zu werden. Nach ein paar Minuten sollte
es erledigt sein. Lasst uns
zu unserem Dashboard springen. Schauen wir uns unsere Ressourcen an. Also gehe ich
zu allen Ressourcen und sollte meine neue
Funktion sehen. Da sind wir los. Bevor wir nun
weiter mit der Funktion fortfahren,
denken Sie daran, dass wir
eine Cosmos DB benötigen oder welche Art von Datenbank
Sie verwendet hätten. Sie benötigen das, um diese Verbindung
zum Testen
bereit zu haben. Ich werde zu unserem Dashboard wechseln und bereits die Cosmos DB
erstellt, aber ich werde Sie trotzdem
durch den Prozess führen. Sie können also zu All
Services gehen und dann einfach nach Cosmos DB
suchen. Sobald du die Cosmos
DB hast, würdest du erstellen. Dann verwenden wir das Core-SQL. Nein, auf diesem Bildschirm wählen
Sie die Ressourcengruppen aus. Daher empfehle ich Ihnen,
dieselbe Ressourcengruppe
wie Ihre Funktion zu wählen , natürlich geben Sie
nicht entgegengesetzten NameNode ein. Die Benennung ist sehr streng,
sodass Sie keine
Großbuchstaben oder irgendetwas verwenden können. Also hätte ich
den Einkaufswagen-Artikel angerufen. Natürlich ist das wirklich
nur ein Kontoname, also
müssen Sie es nicht unbedingt so nennen,
aber Sie geben ihm diesen Namen,
wenn er Ihnen
sagt, dass er nicht verfügbar ist, versuchen
Sie einfach, es ein
bisschen mehr zu machen personalisiert. Und dann wählst du einen
Ort aus, der für dich am besten geeignet ist. Ich empfehle noch einmal,
einen Ort zu wählen , der so nahe
wie möglich an dem Ort liegt , an dem die
Funktion bereitgestellt wurde. Sobald Sie dies getan haben,
können Sie wählen, ob Sie
einen Durchsatz oder serverlos bereitstellen möchten. Und wenn Sie Serverless wählen, haben Sie
offensichtlich nicht
die folgenden Optionen. Wenn Sie
bereitgestellte Durchsätze wählen, können
Sie auswählen
, ob Sie diesen Rabatt
für das kostenlose Kontingent anwenden. Wissen Sie, was ich
in der Vergangenheit erlebt habe, ist, dass ich mit
dem kostenlosen Kontingent-Rabatt auf
dem zweiten dritten Tablett nicht fortfahren konnte . Also zeige ich nur so alt. Wenn Sie versuchen, dass es angewendet wird und Sie am Ende
eine Feldbereitstellung haben, müssen
Sie diesen
Ressourcenkohle löschen, versuchen Sie es erneut. Und ich empfehle
Ihnen, sich nicht zu bewerben. Natürlich, wenn es
dein erstes Mal ist, kannst du es dabei belassen. Wenn Sie sich jedoch für „Nicht anwenden“
entscheiden, wird es Sie kosten oder Sie können einfach serverlos
wählen. Sie können auch die Richtlinie mit
Schnallen ändern, um Kosten zu sparen. Da es sich also nicht um
ein Produktionssystem handelt, müssen
Sie nicht unbedingt georedundant werden. Sie können lokale redundante Backup-Stores betreiben, sodass es weniger Geld
kostet. Aber wenn die Produktion
und ich empfehle, dass Sie das geo-redundant lassen, sind dies die echten bis
echten Einstellungen, die Sie
sicherstellen müssen, dass sie vorhanden sind. Und was ich tun werde, ist zu
meinem bereits bereitgestellten
Cosmos DB-Konto zu springen . Sobald Sie hier sind, möchten Sie
zum Data Explorer gehen? Nein, dieser Data Explorer
sieht genauso aus wie das, was wir mit dem Emulator
erlebt hätten . So erstellen Sie Ihre neue Datenbank entsprechend, wie Sie einen Code geschrieben
hätten natürlich
entsprechend, wie Sie einen Code geschrieben
hätten. Und so ziemlich was auch immer
Sie beim Militär getan haben, wiederholen
Sie einfach diese Schritte,
um Ihre Datenbank und
den Container sowie
den Partitionsschlüssel
in diesem zu erstellen den Container sowie . In Ordnung, also möchten
wir bei
all diesem Setup sicherstellen, dass wir
die richtige Verbindungszeichenfolge erhalten . Hier ist also eine primäre
Verbindungszeichenfolge. Wir können das kopieren und dann
wieder zu unseren Emotionen zurückkehren. Also gehe ich einfach zum Dashboard springe zur Funktion nach oben. Dann müssen
wir innerhalb der
Konfiguration diesen
primären Verbindungsschlüssel hinzufügen. Denken Sie daran, dass in unserem Code Lob eingerichtet ist, dass
wir lokal in
den störenden Punkt JSON schauen müssten , das wäre die
lokale Einstellungspunkt-JSON-Datei gewesen. Das ist es, was man
als die gegenteiligen Dinge erkennt. In einer bereitgestellten Einstellung müssen
wir jedoch
Anwendungseinstellungen einrichten. Sie werden nur sehen, dass neue
Anwendungseinstellungen Ihnen den entsprechenden Namen
geben relativ zu dem, was wir in den Code
geschrieben haben, eine Cosmos DB-Verbindung hat. Und dann fügen Sie den
primären Klinikschlüssel hier ein. Das hab ich schon gemacht. Hier ist es. Ich habe das Geld hinzugefügt.
Nun, die Cosmos DB-Verbindung und der Wert. Sobald Sie das gesamte Setup haben, können
Sie mit dem Test fortfahren. Zum Testen können wir auf Funktionen
klicken, und das gibt uns eine Liste
aller Funktionen, die darin bereitgestellt
wurden. Wenn ich auf einen von ihnen klicke, fangen
wir mit dem
Warenkorb an, den ich versuche. Hier sehen Sie ein Dashboard
aller Ausführungen. Sie haben bereits gesehen, wie dieses
Dashboard aussieht. Wenn Sie zum Quartal gehen und testen, beachten Sie, dass Sie
hier keinen
Code für die Funktion schreiben können , da sie tatsächlich von Visual Studio aus
bereitgestellt wurde. Also müssen alle Änderungen in Visual Studio
erfolgen. Es wird wirklich nur montiert und
es hat das absolute Minimum was die
Konfigurationen betrifft. Hier zeigt es
Ihnen also, dass das Skript israelisch von dieser DLL geladen wird, das die kompilierte Version
des gesamten Quellcodes ist, oder? Das würden wir dort sehen. Wenn wir jedoch zurückgehen
und die Funktions-URL abrufen würden
, könnten wir diese URL abrufen,
die wir
zum Testen einfach
in den Browser einfügen können. Wenn Sie überwachen möchten, wie wir zuvor gesehen haben, können
Sie einfach zur
Überwachung gehen und zu den Protokollen gehen. Und wenn das verbunden ist
und offen läuft, können
Sie mit dem Test fortfahren. Also werde ich einfach in
einem neuen Browser-Tab öffnen ,
tut mir leid, und füge ein. Hier bekomme ich diese
leere Array-Klammer. Aber wenn ich dann
in die Abmeldung schaue,
sehe, dass es
die Funktion genannt hat und es nichts zu teilen
gab. In Ordnung, also bedeutet das,
Postman oder ein anderes API-Tool zu verwenden , kann
ich tatsächlich
die gleiche Ursache simulieren , an
die ich gewöhnt bin. Hier
hätten wir also
einen Warenkorbartikel erstellt ,
anstatt jemanden an
den lokalen Host zu posten , um all dies durch
unsere neue URL zu unseren
Azure-Websites zu
ersetzen und die Anfrage zu senden. Und da hab ich es. Es ist eine Antwort von 200 OK. Das heißt also, wenn ich diese Anfrage
aktualisiere,
um alle MC im
Objekt in der Datenbank kennenzulernen. Das ist es wirklich
zum Veröffentlichen oder Funktionieren bis zu Microsoft Azure.
35. Blazor UI-App einsetzen und testen: Alles klar Leute. In dieser Lektion werden
wir
unseren Kunden auf den neuesten Stand bringen . Was ich getan habe, ist, dass ich zu Visual Studio
gesprungen bin. Ich habe die Programm-CS-Datei, und ich werde diesen Pfad vom Pfad
der lokalen Host-Funktionen
zu unserem Pfad für bereitgestellte Funktionen
ändern der lokalen Host-Funktionen
zu unserem Pfad . Aus dem Dashboard.
Ich werde nur diese URL abrufen, da dies
unsere neue Basis-URL ist. Und ich habe
diese Codezeile ersetzt. Also dupliziere ich einfach
den ursprünglichen Kommentar und füge diese neue Adresse mit diesem Stück ein, dann
lass es uns testen. Also klicke ich einfach
mit der rechten Maustaste auf dieses Projekt und gehe zum Debuggen und beginne
mit dem alten Debuggen. Wenn wir zu
unserem Datenabruf navigieren, sehen
Sie hier,
dass ich einen Fehler erhalte. Wenn ich also gehe und inspiziere und in der
Konsole schaue, um Kabel zu sehen, sehen
Sie, dass
es nicht fertig wurde. Das ist alles, was es wirklich sagt. Wenn Sie oben nachschlagen, sehen
Sie, dass der Zugriff auf den Abruf
an diese Adresse von diesem Ursprung Sie für eine Kursrichtlinie
blockiert hat. Also habe ich früher
Kursrichtlinien erwähnt,
natürlich ist das quer Ursprungsprotokoll zur
Ressourcensicherheit. Mit anderen Worten, zwei Dinge
müssen sich im selben
Netzwerk oder in einer Domäne oder
einer Framework-Infrastruktur befinden,
damit der Zugriff gewährt werden kann. Was ich tun muss, ist
wieder zu den Funktionen nach oben zu springen Kursrichtlinie zu
gehen. Da sind wir los. Fügen Sie dann die URL hinzu. Sobald das bei Speichern hinzugefügt wurde
, komme ich
zurück und versuche es erneut
und stelle fest, dass kein Fehler vorliegt. Nein, ich habe Daten,
von denen es dir gut geht. In Ordnung, jetzt wo ich
überprüft habe , dass das funktioniert, springen
wir zurück
zur program.cs. Und was ich
tun wollte, ist dies zu konfigurieren, dass wir, wenn wir in der Produktion sind, den
Produktionslink für Interviews verwenden. Der Deputy. In Ordnung. Damit ich es einfach
einmal einrichten kann. Ich ging zu sehen, gebe
mir eine Adresse von var B, erstellt eine Variable
namens Basisadresse und setze es auf diesen neuen URI. Oder lassen Sie mich
es als diese Zeichenfolge setzen, die unser lokaler ist. Und dann sagte ich, wenn
Builder Dot Host-Umgebung, ist
es, nun, das ist die
Entwicklungsadresse. Ich werde sagen, dass es Produktion ist. Dies ist eine nette, einfache Möglichkeit
zu überprüfen, ob Sie in
Produktion sind , wenn Sie
einen Blazer WebAssembly verwenden.
Dann werde ich nur sehen, Dann werde ich nur sehen die Basisadresse dieser Zeichenfolge
entspricht, bei der es
sich um unsere veröffentlichte Adresse handelt. Dann kann ich eine Zeile haben, in der ich verschwommenes
Dienstproblem hinter mir
sehe. Die Adresse ist ein neuer URI außerhalb
des Basisadresswerts. Wenn das erledigt ist,
wird es dynamisch sein. Es mag
elegantere Möglichkeiten geben, dies zu tun ,
aber das alles wird funktionieren. Lassen Sie uns unser Up veröffentlichen. Ich klicke einfach mit der rechten Maustaste. Gehe runter, um zu veröffentlichen, veröffentliche. Da sind wir los. Dann
erstelle ich ein neues Profil. Das Profil, das
da ist, ist also schon für die volle Bewegung vorhanden, aber dieses Mal
erstelle ich ein neues Profil. Ich wähle eine 0 aus und veröffentliche sie in
einem anderen App-Dienst. Und es wird gefragt, welche
USV-Service-Instanzen hier sind. Lasst uns schon ein paar haben. Ich werde keines
von denen benutzen, die wahrscheinlich können. Das ist in Ordnung. Ich
mache einfach ein neues. Also
erstelle ich ein neues. Dies wäre der
App-Service-Plan. Der App-Service-Plan ist so
ziemlich die Bs. Dann stellen Sie diese BCE, diesen App Service selbst, bereit. Ich erstelle
einen neuen Hosting-Plan. Ich nenne es
eine Einkaufswagenliste und lege es in dieselbe
Ressourcengruppe wie unsere Funktion ein. Die Wichtigkeit, der gleichen Funktion und derselben
Ressourcengruppe
Dinge zuzuweisen,
besteht darin, dass
Sie die Ressourcengruppe einfach löschen können, wenn Sie nicht mehr das Up und
die Ressourcen dafür benötigen und alles drin. Und das ist eine nette,
einfache Art zu bereinigen. Ich lege
die einfach auch da rein. Und ich setze
das auf einen kostenlosen Plan. Indem Sie auf Neu klicken. Ich wähle meinen Standort aus und
gehe dann zum kostenlosen Tarif. Aber natürlich möchten
Sie, basierend
auf Ihrem Kontext, nicht den Plan
auswählen
, der Ihren Bedürfnissen am besten entspricht. Ich gehe mit
kostenlos für diese Demo. Wir klicken auf „Erstellen“. Wenn das erledigt ist, kann
ich einfach weitermachen
und auf Weiter klicken. Und ich werde dies mit
dem CMC ICD-Setup veröffentlichen , wenn die
Funktion nach oben steht. Beenden Sie einfach. Okay, und dann werden diese
Sommerseiten mich wissen lassen, welche URL für meine
App
abhängen wird. An diesem Punkt kann ich einfach
Änderungen abrufen und
Setup-Bereitstellung für Blazer,
Comments All und Sync sagen Setup-Bereitstellung für Blazer, . Und wenn Sie noch einmal möchten, springen Sie zu GitHub und
schauen Sie sich diese Bereitstellung an. Es ist fertig. Lasst uns also zu
den veröffentlichten Seiten springen. Denken Sie daran, dass wir diese URL einfach
aus
dem veröffentlichten Profil abrufen oder zum Board
zum Dashboard gehen
und sie von der
neu bereitgestellten Seite abrufen können dem veröffentlichten Profil abrufen oder zum Board
zum Dashboard gehen Board
zum Dashboard . Ich scrolle einfach, um Daten
abzurufen, nur um sicherzustellen, dass sie kommunizieren können. Es kann nicht. Kannst du
raten und mir sagen warum? Nun, wenn Sie vermutet haben, dass die
Kursrichtlinien nicht eingerichtet sind, dann haben Sie
richtig erraten, oder? Hier können wir es sehen. Es ist
immer noch kompatibler Kurs. Warum beschwert es sich
über beide Kerne? Weil das ein
brandneuer Domainname ist der von dem
getrennt ist, den wir ursprünglich verwendet
hatten, oder? Ich muss zurück zur Funktion
nach oben gehen, zur
Kursrichtlinienkonfiguration
und dieser neuen URL
springen . Lassen Sie mich einfach sicherstellen, dass
ich das Format verwende. Sparen und genießen Sie die Früchte
unserer Arbeit, die
unsere Kunden veröffentlicht, die
mit unserer Funktion kommunizieren. Es gibt andere Dinge
, die wir mit
diesen anderen
Konfigurationen tun können , die wir auf dem Weg vornehmen
können, um dies nahtloser zu
erfüllen. Ich werde sie
später besprechen, aber im Moment haben
wir
sowohl die API als auch unseren Kunden erfolgreich veröffentlicht .
36. Setup: Alles klar, jetzt besprechen
wir uns über Sicherheit. Mal sehen, dass
wir nach oben schweben. Ja. Wir möchten die Funktion
sichern und wir möchten nicht jedem n erlauben,
auf zuzugreifen
oder einfach nur an
jedem Ort zu Daten zuzugreifen
oder einfach nur an
jedem Ort zu schulen,
wo er möchte. Wie Sie bisher sehen können, sind
URLs ziemlich offen die Funktion. Jeder
, der
die URL erhält , kann
das Muster herausfinden oder wenn er es mindestens einmal
gesehen hat, muss er nur
setzen slash API Und dann dieser Endpunkt, um
darauf zugreifen zu können. Nein. Es gibt verschiedene
Möglichkeiten, eine API auf
sehr grundlegender Ebene zu
sichern, Sie können wie einen Off-Schlüssel anlegen oder beantragen, dass ein Off-Key in der Kopfzeile dargestellt
wird. Der aktuelle Industriestandard
verwendet JWT- oder JSON-Web-Tokens. Aber die Abwärtsquote und die
Trainer, die Sie
tatsächlich nutzen müssten und Ihre Funktion
konfigurieren müssten. Suchen Sie nach diesen Token, sind diese Schlüssel in
jeder einzelnen Anfrage. Und du müsstest
daran denken, das
für jede einzelne Funktion zu tun . Dies kann zu Overhead führen, insbesondere wenn Sie mehrere Funktionen
und mehrere Operationen
haben , die Sie unterstützen. Eine andere Möglichkeit wäre, die Schlüssel zu verwenden, die wir uns angesehen
hätten,
die UPC-Schlüssel, in denen wir sie
von der Standardeinstellung oder von anonymer
Funktionsebene im Vergleich zur
Admin-Master-Ebene setzen können von der Standardeinstellung oder von anonymer . Der Nachteil davon ist
, dass, sobald Sie den Schlüssel festgelegt haben,
dieser Schlüssel in
der URL vorhanden sein muss und sich dieser Schlüssel nicht ändert, wenn Sie den
Befehl nicht ändern. Entweder müssen
Sie das GnG
jedes Mal beibehalten, oder Sie müssen diesen Schlüssel freigeben
. Und der Schlüssel wäre in
der URL vorhanden , die von unserer
anfragenden Kundeneinrichtung stammt. Jedenfalls
könnte jemand diese Informationen immer noch
abrufen und auf Ihre API zugreifen
können. Das würde
sinnvoller sein, wenn dies wie auf der Netzwerkebene
von Maschine zu Maschine wäre. Wenn Sie also eine
Funktion erstellen,
haben Sie wie einen anderen Server
eingerichtet, der die Funktion aufruft. Das bedeutet also, dass Sie keinen URL-Datenverkehr
sehen, dessen GTP-Datenverkehr
im Browser übergeht oder Dr. MB überwacht, schnüffeln Sie sehr leicht alt. Dann hatte er die Schlüssel
wird ein sehr schneller Sieg sein. Da wir jedoch
die Kundenseite nach oben haben, denke
ich, dass es besser ist, eine Sicherheit auf
clientseitiger Ebene aufzuerlegen oder es so aussehen zu
lassen, als wäre es
auf clientseitiger Ebene. Wenn also ein Benutzer
versucht, in die App zu
kommen, muss er sich hier
authentifizieren um zur Funktion zu gelangen. Eine einfache Möglichkeit, damit zu beginnen,
besteht darin, zur Authentifizierungsoption in
unserem Dashboard zu
springen Authentifizierungsoption in , um
unsere Funktion zu verbessern. Dann fügen wir
einen Identitätsanbieter hinzu. Jetzt wird das wie eine
Mini-Version von Azure AD sein. Wenn Sie Azure AD verwendet haben, wissen
Sie, dass Sie verschiedene Anbieter
verwenden können, die
OAuth2 Standard unterstützen. Wenn Sie nicht so vertraut sind, können
Sie sich mein
Microsoft Azure für Dotnet-Entwickler ansehen,
bei denen wir das mit azure AD
einrichten, sei es für das Geschäft oder für Wortvorstellungen Kunden. Dies ist jedoch eine sehr
verkleinerte Version zwei
, bei der Sie nicht einmal
ein vollständiges Verständnis von
Azure AD benötigen , um das zu erreichen,
was wir tun werden. Erstens wählen wir einen
Identitätsanbieter, weiß, dass jeder von diesen
möglicherweise eine gewisse
Menge an Setup erfordert. Natürlich werden
Sie für Twitter,
Google und Facebook zwei globale dort haben und Ihre App und
alle möglichen Dinge
registrieren. Jemand, der den
Weg dieses Widerstands wählt. Ich benutze einfach Microsoft. Dann wird es mich einfach fragen,
okay, was will ich für
den Vertrieb haben? Ja, Lagerung oder Kegel. Die Unterstützung, die ein Gegner eingibt, möchten
Sie
hier wahrscheinlich ein wenig Aufmerksamkeit schenken , um sicherzustellen, dass Sie diejenige
auswählen, die für Ihre Operation
am besten geeignet ist . Ich kann nur
den aktuellen Mandanten auswählen,
was bedeutet, dass der Mandant das Konto
ist, das die App für jeden Benutzer bereitgestellt hat, der
Zugriff
auf dieses Dokument in diesem Mandanten
soweit einfach ist wie es um Ihre
AD geht, dann sind es nur diejenigen, die ich auch jedes
Azure AD-Verzeichnis sagen kann. Wenn es sich also um mehrere Mieter handelt, kann
ich das wählen. Ich kann jedes Active Directory und jedes persönliche Microsoft-Konto sehen, und ich kann ihm nur persönliche
Microsoft-Konten sehen. Ich gehe mit dem hier. Obwohl dieser wahrscheinlich
wieder für die Azure AD
funktionieren würde ,
diese Benutzerverwaltung. Deshalb ist derjenige, den
Sie wählen, sehr wichtig. Wenn Sie
mehr Details dazu wünschen, können
Sie dies
im anderen Kurs erfahren. Wir machen es mit jedem Azure AD und persönlichen Microsoft-Konten. Das sollte es mir
ermöglichen, mich auch mit
meinem persönlichen
Konto anzumelden meinem persönlichen , wenn ich
eine
Service-Authentifizierung für Einstellungen habe eine
Service-Authentifizierung für Einstellungen Wie beschränken wir den Zugriff? Wenn ich zu sehen war,
können Sie einfach lesen, dass die
Autorenauthentifizierung erforderlich ist,
um
sicherzustellen, dass sich
jeder authentifizieren muss. Wenn Sie
nicht authentifizierte Anfragen zulassen, benötigen Sie Ihren eigenen Code. Das ist kein Problem. Ich benötige nur eine
Authentifizierung. Sobald Sie
sich hier aufheizen, rufen
Sie einfach die API oder
die Funktion auf. Ich benötige eine Authentifizierung. Zur Authentifizierung bei
authentifizierten Anfragen. Wir können die auswählen, basierend darauf, wie Sie Ihre
Benutzererfahrung wünschen. Und das wird an
Microsoft weitergeleitet und wir werden die Tolkien
speichern. Also klicke ich einfach auf „Hinzufügen“. Mit all dem erledigt
und hinzugefügt oder wahrgenommen. Wir kriegen den Bildschirm und null. Wir sollten in der Lage sein,
ein gewisses Maß an Authentifizierung zu genießen. Wenn ich also versuche,
direkt zur
URL für die Funktion zu gehen ,
werde ich mich einfach umleiten, um mich zu autorisieren oder zu authentifizieren. Wenn ich noch nicht angemeldet wäre, würde ich gebeten,
meine Anmeldeinformationen einzugeben , und dann
würde ich hier zugreifen. Es sieht, dass ich um
Erlaubnis für diese API fordere. Und das würde ich akzeptieren wollen. Nachdem ich das akzeptiert habe,
werde ich damit einverstanden sein. Und dann kann ich ohne Fenster zur
Funktion gehen und sagen, dass diese
Aktivität darin besteht, dass sie nicht mehr
in unserem Blazer arbeiten
wird. Das ist aus
einer Reihe von Gründen etwas Neues. Sie werden sehen, dass es ein Korps gibt, und was passiert,
ist,
dass es nicht zur Anmelde-URL umgeleitet werden kann , da
ich von
der API-URL von der Website-URL
aus umgeleitet wurde . Es gibt also viel
mehr Konfiguration , die dort hineinspringen muss. Und das wird
in dieser speziellen Lektion nicht passieren. Ich wollte dir wirklich nur
zeigen, wie du die Funktionen
konfigurieren und sogar
sichern würdest . Aber um den Blazer
für eine 0 AD-Konfiguration vorzubereiten, liegt außerhalb des Geltungsbereichs
des Azure
Functions-Inhalts dieses Kurses. Aber ich zeige Ihnen nur einige
der Auswirkungen auf Dinge , auf die Sie achten müssen. Sie können also immer zu
Ihrer API zurückkehren und verschiedene Aspekte
dieser Authentifizierung
, die Sie hinzugefügt haben,
ändern . Sie haben tatsächlich als AD in
einer sehr Express-Suite hinzugefügt , oder? Anstatt also manuell zu Azure
AD und city02 zu gehen, einfach die
Authentifizierung hinzufügen hätten
Sie
ihm tatsächlich mitgeteilt, dass
Azure AD das Up sichern soll, indem Sie . Und Sie können zurückgehen, Sie können die Authentifizierung bearbeiten, Sie können sie einfach deaktivieren. Wenn Sie
es nicht aktivieren oder aktivieren möchten, können
Sie die Regeln
hier basierend auf Ihren Bedürfnissen ändern. Sie können auch
zum Identitätsanbieter und andere Dinge
ändern. Obwohl es sich um
die verschiedenen Aspekte
der Azure AD-Sitzungen handelt
, die angewendet wurden. Sehen Sie sich die Endpunkte noch einmal hier an. Sie können Ihren
Kunden über Ihren Mandanten informieren, leider eine Client
- und Anwendungs-IDs. Sie können zu Ihrer App-ID-URL gelangen. Wenn du
darauf aufbauen müsstest, kannst du es. Wie gesagt, Azure AD
befindet sich jedoch nicht im Rahmen
dieses Kurses, daher werde ich nicht
zu viele Details darüber eingehen ,
was möglich ist. So
einfach ist es also,
Ihre Funktion bei so
ziemlich allen, die Sie bereitstellen, zu sichern . Ein App-Dienst, den Sie bereitstellen, kann
genauso einfach gesichert werden.
37. Section Rezension – Azure - veröffentlichen: Ordnung Leute, also
haben wir
in diesem Abschnitt einige Dinge behandelt. Wir haben uns angeschaut, wie wir unser Azure Up
veröffentlichen können ,
an dem wir in Visual Studio gearbeitet haben. Wir haben uns auch
einige der Änderungen angesehen , die sowohl für den
veröffentlichten als auch für jeden
anderen Kunden erforderlich veröffentlichten als auch für jeden sind, der bedeutet, dass er mit ihm interagieren
muss. Wir haben einen veröffentlichten Beweis für
uns sowohl für die Funktion
als auch für unsere Client-App eingerichtet , die wirklich nur als
Demonstrativ da war , aber es ist nicht wirklich
die Schwerpunkte, also hat es nicht ausgegeben
zu viel Zeit drauf. Aber wir konnten sie
mit CICD-Pipelines mit freundlicher Genehmigung von
GitHub bereitstellen mit CICD-Pipelines mit freundlicher Genehmigung von und sehen, wie Sie
alles einfach und nahtlos mischen. Wir haben uns auch einige
Sicherheitsoptionen für unsere Funktionen
mit Azure AD angeschaut und
alles kann einfach fließen. Am Ende sollten
Sie in der Lage sein, Ihre 0-Funktionen
hochzubringen, auf Azure und
produktionsbereit
zu sein.
38. Schlussbemerkung: Leute, herzlichen Glückwunsch, dass es bis zum Ende
dieses Kurses geschafft
hast, in dem du alles gelernt hast, was du über Funktionen wissen
musst. In diesem Kurs haben wir das
Einrichten einer 0-Funktion
über das Portal
behandelt . Wie können wir Funktionen
direkt hier im Portal schreiben, die verschiedenen Arten von
Triggern, die verwendet werden können. So können wir eine durch Blob ausgelöste
Funktion im Vergleich zu einem
Timer haben , oder vielleicht die am häufigsten
verwendete Funktion, bei der es sich um
einen HTTP-Trigger einer Funktion handelt . Sie haben sich auch angeschaut, dass Sie verschiedene
Bereitstellungsmodelle haben. Sie haben den
serverlosen im Vergleich zum Premium-Plan im Vergleich
zum Verbrauchsplan, jeder mit seinem eigenen Vorteil. Wir haben auch
unsere eigene Suite von Funktionen durchgegangen und aufgebaut , die wir in eigenen
Bereichen bereitgestellt haben und Apps wie
Arrest Fully API. Hier konnten wir nicht
viel Code schreiben
und mussten uns
keine Sorgen um Server machen und IIS konfigurieren. Alles, was wir getan haben, war eine Reihe von
Funktionen zu schreiben , die mit
einer sehr einfachen Cosmos DB-Datenbank interagieren einer sehr einfachen Cosmos DB-Datenbank von
jedem Client aus aufgerufen werden
kann. Nach der Bereitstellung auf einer 0
haben wir uns angeschaut, wie wir über die Richtlinien
des gesamten Wochenendes
auf sie zugreifen
können Richtlinien
des gesamten Wochenendes um sicherzustellen, dass sie vollständig zugänglich
sind. Alles was wir brauchen ist das Sternchen, um zu sagen, dass jeder darauf zugreifen kann. Wir haben uns auch angeschaut, wie wir es mit Azure AD
sichern können. Ungeachtet des
sehr spezifischen Beispiels das wir durchlaufen
haben, untersuchen wir auch
verschiedene Funktionen wie
dauerhafte Funktionen. Wir haben uns die
verschiedenen Arten von
Bindungen angeschaut , die verwendet werden können. Und wir haben uns all die
verschiedenen Tools angeschaut, die
zusammenkommen können , um
dorthin zu gelangen, wo wir sind. Also haben wir uns Emulatoren angeschaut, uns die Kern-Tools angeschaut, wir haben uns Visual Studio
Code vs Visual Studio angeschaut. Was auch immer Ihre Plattform ist, es gibt ein Tool, das
Sie mit allem Gesagten und Erledigen versorgt . Danke, dass du
mit mir auf dieser Reise mitgekommen bist. Und ich kann es kaum erwarten zu
sehen, was du produzierst.