Dies ist ein Gastbeitrag des Orleans-Teams. Orleans ist ein plattformübergreifendes Framework zum Erstellen verteilter Anwendungen mit .NET. Weitere Informationen finden Sie unter https://github.com/dotnet/orleans .Wir freuen uns, die Veröffentlichung von Orleans 3.0 bekannt zu geben. Im Vergleich zu Orleans 2.0 bietet es viele Verbesserungen und Korrekturen sowie einige neue Funktionen. Diese Änderungen werden durch die Erfahrung vieler Menschen bestimmt, die Orleans-basierte Anwendungen in der Produktion in einer Vielzahl von Szenarien und Umgebungen verwenden, sowie durch die Begeisterung der globalen Orleans-Community, die dazu beiträgt, dass das Framework besser, schneller und flexibler wird. Vielen Dank an alle, die auf verschiedene Weise zu dieser Veröffentlichung beigetragen haben!

Wesentliche Änderungen gegenüber Orleans 2.0
Orleans 2.0 wurde vor etwas mehr als 18 Monaten veröffentlicht, und das Framework hat seitdem erhebliche Fortschritte gemacht. Einige Änderungen gegenüber 2.0:
- Verteilte ACID-Transaktionen
- Ein neuer Scheduler, der in einigen Fällen die Produktivität um mehr als 30% gesteigert hat
- Neuer Roslyn-basierter Codegenerator
- Die Mitgliedschaft im Cluster wurde neu geschrieben, um die Wiederherstellungsgeschwindigkeit zu verbessern
- Co-Hosting-Unterstützung
Sowie viele andere Verbesserungen und Korrekturen.
Ersetzen der Netzwerkschicht durch ASP.NET Bedrock
Die Aufrechterhaltung einer sicheren Kommunikation mit
TLS ist seit einiger Zeit ein wichtiges Anliegen. Darüber hinaus sowohl von der
Community als auch von internen Partnern. In Version 3.0 fügen wir TLS-Unterstützung hinzu, die über das
Microsoft.Orleans.Connections.Security- Paket verfügbar ist. Weitere Informationen finden Sie im
TransportLayerSecurity-Beispiel .
Die Implementierung der TLS-Unterstützung war ein wichtiges Anliegen, da die Netzwerkschicht in früheren Versionen von Orleans implementiert wurde: Sie konnte nicht einfach für die Verwendung von
SslStream
angepasst werden, der am häufigsten verwendeten Methode zur Implementierung von TLS. Mit TLS als treibende Kraft haben wir die Netzwerkschicht von Orleans neu geschrieben.
In Orleans 3.0 wird die gesamte Netzwerkschicht durch eine Schicht ersetzt, die auf der Grundlage von
Project Bedrock , einer ASP.NET-Gruppenfunktion, erstellt wurde. Bedrocks Ziel ist es, Entwicklern dabei zu helfen, schnelle und zuverlässige Netzwerkclients und -server zu erstellen.
Das ASP.NET-Team und das Orleans-Team haben zusammengearbeitet, um Abstraktionen zu erstellen, die sowohl Netzwerkclients als auch Server unterstützen, transportunabhängig sind und mithilfe von Middleware konfiguriert werden können. Diese Abstraktionen ermöglichen es uns, den Netzwerktransport durch die Konfiguration zu ändern, ohne den internen Orleans-spezifischen Netzwerkcode zu ändern. Die TLS-Unterstützung von Orleans ist als Bedrock-Middleware implementiert. Wir beabsichtigen, sie universell zu gestalten, damit sie mit anderen im .NET-Ökosystem geteilt werden kann.
Obwohl der Anreiz für diese Innovation die zusätzliche TLS-Unterstützung war, steigt der Durchsatz bei unseren nächtlichen Belastungstests im Durchschnitt um etwa 30%.
Beim Umschreiben der Netzwerkschicht wurde auch unser benutzerdefiniertes Pufferpooling durch ein
MemoryPool<byte>
. Mit dieser Änderung nutzt die Serialisierung jetzt
Span<T>
. Einige Codepfade, die zuvor auf das Sperren durch dedizierte Threads angewiesen waren, die
BlockingCollection<T>
aufrufen, verwenden jetzt
Channel<T>
für die asynchrone Nachrichtenübermittlung. Dies führt zu weniger dedizierten Threads, stattdessen wird die Arbeit in den .NET-Thread-Pool verschoben.
Co-Hosting über Generic Host
Das Co-Hosting von Orleans mit anderen Plattformen wie ASP.NET Core im selben Prozess ist jetzt dank des
generischen .NET-Hosts einfacher als zuvor.
Hier ist ein Beispiel für das Hinzufügen von Orleans zusammen mit ASP.NET Core zu einem Host mithilfe von
UseOrleans
:
var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => {
Diese Funktionalität kann verwendet werden, um die Bereitstellungstopologie zu vereinfachen oder einer vorhandenen Anwendung zusätzliche Funktionen hinzuzufügen. Einige Teams verwenden Shared Hosting intern, um ihren Orleans-Projekten mithilfe von
ASP.NET Core Health Checks Kubernetes-Tests hinzuzufügen.
Zuverlässigkeitsverbesserungen
Dank fortschrittlichen Klatsches können Cluster jetzt schneller Fehler beheben. Außerdem werden Messaging-Fehler jetzt konsistenter behandelt, was dazu führt, dass Fehler an den Anrufer zurückgegeben werden. Dies hilft Entwicklern, Fehler schneller zu finden. Wenn eine Nachricht beispielsweise nicht vollständig serialisiert oder deserialisiert werden kann, wird eine detaillierte Ausnahme an den ursprünglichen Anrufer zurückgegeben.
Erweiterte Erweiterbarkeit
Streams können jetzt über eigene Datenadapter verfügen, mit denen sie Daten in jedem Format empfangen können. Dies gibt Entwicklern mehr Kontrolle darüber, wie Flow-Elemente im Repository dargestellt werden. Außerdem kann der Stream-Anbieter steuern, wie Daten geschrieben werden, sodass Streams in vorhandene Systeme und / oder Dienste außerhalb von Orleans integriert werden können.
Der benutzerdefinierte Status der Transaktion kann jetzt deklarieren, welche Rollen sie in der Transaktion spielen kann. Beispielsweise kann eine Implementierung eines Transaktionsstatus, der Transaktionslebenszyklusereignisse in die Servicebuswarteschlange schreibt, die Aufgaben eines Transaktionsmanagers nicht erfüllen, da er schreibgeschützt ist.
Jetzt mitmachen!
Nachdem Orleans 3.0 veröffentlicht wurde, richten wir unsere Aufmerksamkeit auf zukünftige Versionen - und wir haben einige aufregende Pläne! Treten Sie unserer herzlichen und einladenden Community auf
GitHub bei .
Siehe auch: 7 kostenlose Kurse für Entwickler