9 Geheimnisse von ASP.NET Core

Zuletzt haben wir ASP.NET Core auf Version 2.1 aktualisiert. Einer der Entwickler der Plattform, unser Kollege David Fowler, teilte einige seiner nützlichen Funktionen mit, über die nur wenige Menschen Bescheid wissen. Zusätzlich zu den 9 geheimen Funktionen von ASP.NET Core finden Sie unter dem Schnitt auch eine Liste der wichtigsten Innovationen mit allen nützlichen Links. Jetzt mitmachen!



Version 2.1 der offenen ASP.NET Core-Plattform wurde veröffentlicht, und Entwickler David Fowler twitterte einige seiner nützlichen Funktionen, die nur wenige kennen. Natürlich ist die Plattform jetzt schneller, aber es gibt auch eine Reihe neuer Funktionen und Best Practices, die es wert sind, genauer betrachtet zu werden.

Generischer .NET-Host


ASP.NET Core funktioniert jetzt mit dem neuen Hosting-Modell. .NET-Anwendungen bilden und starten den Host .

Der Host ist für das Starten von Anwendungen und das Verwalten ihres Lebenszyklus verantwortlich. Das Ziel des generischen Hosts besteht darin, das HTTP-Pipelining von der Webhost-API zu trennen, um mehr Skripts auf dem Host erstellen zu können. Messaging-, Hintergrund- und andere Nicht-HTTP-Aufgaben funktionieren besser mit durchgängigen generischen Host-Funktionen wie Konfiguration, Abhängigkeitsinjektion (DI) und Protokollierung.

Dies bedeutet, dass es jetzt für Skripte ohne Webhosting nicht nur WebHost, sondern auch generischen Host gibt. Gleichzeitig ist die Arbeit so bequem wie mit ASP.NET Core, aber Sie haben auch neue Funktionen wie DI, Protokollierung und Konfiguration. Beispielcode für Generic Host finden Sie auf GitHub .

IHOSTEDSERVICE-Schnittstelle


Damit können Sie lange Hintergrundvorgänge sowohl auf dem Universalhost als auch in Ihren Webanwendungen ausführen. Mit ASP.NET Core 2.1 wurde die Unterstützung für die BackgroundService-Basisklasse eingeführt, die die Erstellung einer langen asynchronen Schleife erheblich erleichtert. Der Beispielcode für den gehosteten Dienst befindet sich ebenfalls auf GitHub .

Erstellen Sie eine einfache temporäre Hintergrundaufgabe:

public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; } 

einfach!

Windows-Dienste unter .NET Core


Sie können ASP.NET Core jetzt in einem Windows-Dienst hosten! Viele Benutzer haben darum gebeten, diese Funktion hinzuzufügen. Sie benötigen IIS nicht mehr, um zu hosten, was Sie wollen. Schauen Sie sich Microsoft.AspNetCore.Hosting.WindowsServices auf NuGet und eine ausführliche Dokumentation zum Hosten Ihrer eigenen ASP.NET Core-Anwendung unter Windows als Windows-Dienst ohne IIS an.

 public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); } 

IHOSTINGSTARTUP - IWEBHOSTBUILDER- Konfiguration mit Assembly-Attribut


Wie immer eine einfache und genaue Implementierung unter Verwendung einer Quelle auf GitHub.

 [assembly: HostingStartup(typeof(SampleStartups.StartupInjection))] 

SHARED SOURCE-Pakete


Es wird für Sie interessant sein, achten Sie darauf, auf sie zu achten. Sie können Pakete erstellen, die als Hilfstools für Quellcode verwendet werden, der über eine gemeinsam genutzte Quelle verteilt wird. Wir nennen sie untereinander "Shared Source Packages". Sie werden in ASP.NET Core überall dort verwendet , wo etwas freigegeben werden muss, aber über die API nicht öffentlich zugänglich sein sollte. Dann wird Ihr Code verwendet, es bestehen jedoch keine Abhängigkeiten vom endgültigen Paket.

Sie werden auf diese Weise in CSPROJ verwendet. Beachten Sie das PrivateAssets- Attribut:

 <PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" /> 

OBJECTMETHODEXECUTOR


Wenn Sie eine Methode in einem Typ durch Reflektion verwenden müssen und diese Methode asynchron sein kann, hilft Ihnen die optimierte und flexible ObjectMethodExecutor- Funktion, die wir überall in der ASP.NET Core-Codebasis verwenden.

Das Team verwendet diesen Code in MVC, um Ihre Controller-Methoden aufzurufen. Sie verwenden diesen Code in SignalR, um Hub-Methoden aufzurufen. Es funktioniert mit synchronen und asynchronen Methoden. Es kann auch mit benutzerdefinierten erwarteten Objekten und asynchronen F # -Workflows arbeiten.

SUPPRESSSTATUSMESSAGES


Eine kleine und häufig nachgefragte Methode. Wenn Ihnen das, was nach dem Starten des Dotnet-Treibers beim Hosten der Webanwendung angezeigt wird (Drucken der Bindungsinformationen), nicht gefällt, können Sie die neue SuppressStatusMessages-Erweiterungsmethode verwenden.

 WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>(); 

ADDOPTIONEN


In Version 2.1 ist es einfacher geworden, Parameter zu konfigurieren, für die Dienste erforderlich sind. Früher mussten Sie einen mit IConfigureOptions erhaltenen Typ erstellen, jetzt können Sie dies alles in ConfigureServices mit AddOptions ‹TOptions› tun

 public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); } 

IHTTPCONTEXT mit ADDHTTPCONTEXTACCESSOR


Normalerweise muss IHttpContext nicht konfiguriert werden, aber viele möchten wissen, wie das geht , und einige glauben, dass dies automatisch erfolgen sollte. Es wird standardmäßig nicht protokolliert, da seine Anwesenheit zu einer Leistungsminderung führt. In ASP.NET Core 2.1 wurde jedoch PR für die Erweiterungsmethode hinzugefügt , was den Prozess erleichtert, wenn Sie möchten.

 services.AddHttpContextAccessor (); 

ASP.NET Core 2.1 ist also zur Veröffentlichung bereit .

Neue Funktionen in dieser Version:


Weitere Informationen zu diesen Funktionen finden Sie in der Liste der Änderungen in ASP.NET Core 2.1 in den ASP.NET Core-Dokumenten. Eine vollständige Liste aller Änderungen in der neuen Version finden Sie in den Versionshinweisen.

Probieren Sie es aus! Nehmen Sie am QuickStart-Kurs teil und Sie können in 10 Minuten grundlegende Webanwendungen erstellen.

Source: https://habr.com/ru/post/de416443/


All Articles