Verwendung von Nancy in ASP.Net Core

Nancy ist ein leichtes Framework zum Erstellen von HTTP-basierten Diensten. Nancy bevorzugt Konventionen gegenüber der Konfiguration und bietet Unterstützung für GET-, HEAD-, POST-, PUT-, DELETE- und PATCH-Operationen. Nancy ist auch Open Source unter der MIT-Lizenz. Dieser Artikel enthält eine Diskussion darüber, wie wir Nancy mit einer ASP.Net Core-Anwendung verwenden können.

Nancy ist ein Webframework und hat keine Abhängigkeiten von System.Web oder anderen .Net-Bibliotheken. Am wichtigsten ist, dass Sie nicht an das MVC-Muster oder ein anderes Muster gebunden sind, wenn Sie Nancy verwenden. Nancy ist nur ein Service-Endpunkt, der auf HTTP-Verben reagieren kann. Dies macht Nancy zu einer guten Wahl für die Erstellung von Websites, APIs und Webdiensten.

Nancy ist Host-Agnostikerin. Sie können es in IIS, in WCF, als Windows-Dienst, eingebettet in eine EXE-Datei oder in eine selbst gehostete Anwendung ausführen. Nancy ist recht einfach einzurichten und anzupassen. Ein weiterer Vorteil von Nancy ist die integrierte Unterstützung für die Abhängigkeitsinjektion. Nancy bietet auch eine Bibliothek, mit der der Anforderungs- / Antwortzyklus einfach getestet werden kann. Ich werde diese Funktion von Nancy in einem späteren Beitrag diskutieren.

Erstellen Sie ein ASP.Net Core-Projekt in Visual Studio

Zunächst erstellen wir ein ASP.Net Core-Projekt in Visual Studio. Wenn Sie Visual Studio 2019 nicht auf Ihrem System installiert haben, können Sie es hier herunterladen. 

Führen Sie die folgenden Schritte aus, um ein neues ASP.Net Core-Projekt in Visual Studio 2019 zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "ASP.Net Core-Webanwendung" aus.
  4. Weiter klicken. 
  5. Geben Sie im Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Klicken Sie auf Erstellen.
  7. Wählen Sie im Fenster "Neue ASP.Net Core-Webanwendung erstellen" .Net Core als Laufzeit und ASP.Net Core 2.2 (oder höher) aus der Dropdown-Liste oben aus.
  8. Wählen Sie als Projektvorlage „Webanwendung“.
  9. Stellen Sie sicher, dass die Kontrollkästchen "Docker-Unterstützung aktivieren" und "Für HTTPS konfigurieren" deaktiviert sind, da diese Funktionen hier nicht verwendet werden.
  10. Stellen Sie sicher, dass die Authentifizierung auf "Keine Authentifizierung" eingestellt ist, da wir auch keine Authentifizierung verwenden.
  11. Klicken Sie auf Erstellen. 

Sie sollten jetzt ein neues ASP.Net Core-Projekt in Visual Studio haben. Wir werden dieses Projekt in den folgenden Abschnitten verwenden, um unseren benutzerdefinierten gehosteten Service zu erstellen.

Installieren und konfigurieren Sie Nancy in ASP.Net Core

Um Nancy zu installieren, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt und wählen Sie "NuGet-Pakete verwalten ...". Suchen Sie dann im NuGet Package Manager-Fenster nach Nancy und installieren Sie es. Alternativ können Sie Nancy mit dem folgenden Befehl über die NuGet Package Manager-Konsole installieren.

Installationspaket Nancy

Sobald Nancy installiert wurde, sollten Sie als Nächstes Nancy konfigurieren. Dazu sollten Sie die UseNancy-Methode in der Configure-Methode der Startup-Klasse aufrufen, wie unten gezeigt.

public void Configure (IApplicationBuilder-App, IHostingEnvironment env)

 {

     app.UseMvc ();

     app.UseOwin (x => x.UseNancy ());

 }}

Erstellen Sie Ihr erstes Nancy-Modul in ASP.Net Core

So weit, ist es gut. Lassen Sie uns nun ein Nancy-Modul erstellen und Code dafür schreiben. Ein Nancy-Modul ist eine Standard-C # -Klasse, die die NancyModule-Klasse des Nancy-Frameworks erweitert.

öffentliche Klasse HomeModule: NancyModule

{

}}

Es ist zu beachten, dass Sie Ihr Nancy-Modul als öffentlich deklarieren müssen. Das Nancy-Framework kann kein Modul erkennen, das nicht als öffentlich markiert ist.

Erstellen Sie Routen in einem Nancy-Modul in ASP.Net Core

Ein Nancy-Modul definiert die Routen in seinem Konstruktor. Um eine Route in Nancy zu definieren, müssen Sie das HTTP-Verb, das Muster, die Aktion und (optional) die Bedingung angeben. Hier ist ein Beispiel, das eine Nancy-Routendefinition veranschaulicht.

öffentliche Klasse HomeModule: NancyModule

{

    öffentliches HomeModule ()

    {

       Get ("/", args => GetAllAuthors ());

       Get ("/ {id: int}", args => GetAuthorById (args.id));

    }}

}}

Im Wesentlichen ist ein Nancy-Modul ein Ort zum Definieren von HTTP-Endpunkten. Das folgende Codeausschnitt zeigt ein Nancy-Modul, das drei verschiedene GET-Anforderungen verarbeiten kann.

öffentliche Klasse HomeModule: NancyModule

    {

        öffentliches HomeModule ()

        {

            Get ("/", args => "Willkommen in Nancy.");

            Get ("/ Test", args => "Test Message.");

            Get ("/ Hello", args => $ "Hello {this.Request.Query [" name "]}");

        }}

    }}

Nancy ist nicht nur leicht, modular und schnell, sondern auch ganz einfach zu installieren und zu konfigurieren. Mit Nancy können Sie wichtige HTTP-Dienste mit minimalem Aufwand bereitstellen. Weitere Informationen zum Nancy-Framework finden Sie in der Dokumentation zu GitHub.