Skip to content

Was ist neu in Zyan 2.0_

yallie edited this page May 21, 2018 · 1 revision

Was ist neu in Zyan 2.0?

Bi-direktionale Kommunikation durch clientseitige Firewalls (NAT) hindurch

Zyan 2.0 führt einen neuen Transportkanal ein. Er heißt TcpExChannel und implementiert ein bi-direktionales Protokoll. Das macht es für Clients möglich, Ereignisse und Callbacks vom Server zu empfangen, sogar bei eingeschalteter clientseitiger NAT-Firewall. Einfach TcpDuplexClientProtocolSetup und TcpDuplexServerProtocolSetup verwenden, um die Vorteile des neuen Features in eigenen Anwendungen nutzbar zu machen.

+Beispiel:+ {code:c#} // Duplex-Kanal am Server mit Anschluss 8080, ohne Authentifizierung und mit eingeschalteter Verschlüsselung konfigurieren. TcpDuplexServerProtocolSetup protocol = new TcpDuplexServerProtocolSetup(8080, new NullAuthenticationProvider(), true); using (ZyanComponentHost host = new ZyanComponentHost("YourApp", protocol)) { ... }

// Duplex-Kanal am Client einstellen TcpDuplexClientProtocolSetup protocol = new TcpDuplexClientProtocolSetup(true); ZyanConnection connection = new ZyanConnection("tcpex://server:8080/YourApp",protocol); // Präfix 'tcpex' beachten! {code:c#}

Call Interception

Zyan 2.0 enthält ein neues Feature, um Aufrufe clientseitig abzufangen. Dies ist sher nützlich, wenn bestimmte Aufrufe unter bestimmten Bedingungen abgebrochen oder überwacht werden sollen. Außerdem für Caching Szenarien.

+Beispiel:+ {code:c#} // Filter für anstößige Wörter in einer Chat-Anwendung, mit Zyan Call Interception implementiert connection.CallInterceptors.For().Add( (IMiniChat chat, string nickname, string message) => chat.SendMessage(nickname, message), (data, nickname, message) => { if (message.Contains("fuck") || message.Contains("sex")) { System.Console.WriteLine("TEXT CONTAINS FORBIDDEN WORDS!"); data.Intercepted = true; } }); {code:c#}

LINQ-Unterstützung

Zyan 2.0 ermöglicht einfache Verwendung von LINQ-Abfragen in verteilten Anwendungen. Die LINQ-Unterstützung ist in der Assembly Zyan.InterLinq implementiert. Fügen Sie diese Assembly als Verweis Ihrem Projekt zu. So wird eine LINQ-Datenquelle mit einem eindeutigen Namen am Server veröffentlicht:

{code:c#} // LINQ-Datenquelle registrieren host.RegisterQueryableComponent("YourSourceName", t => GetYourLinqSource(t));

...

///

/// Abfragehandler. /// /// Elementtyp private IEnumerable GetYourLinqSource(Type t) { ... } {code:c#} LINQ-Abfragen können ganz einfach am Client auf veröffentlichten entfernten Datenquellen ausgeführt werden. Folgender Beispielcode zeigt, wie´s geht: {code:c#} // Proxy für den Zugriff auf die entfernte LINQ-Datenquelle erzeugen var proxy = connection.CreateQueryableProxy("YourSourceName");

// LINQ-Abfrage ausführen (wird serverseitig verarbeitet) var result = from item in proxy.Get() where item.Name.StartsWith("Hello World") orderby item.Name select item; {code:c#}

OneWay-Unterstützung

.NET Remoting kennt sog. OneWay-Methoden. Das sind Methoden, welche mit einem OneWay Attribut dekoriert werden. OneWay-methoden blockierend den Aufrufthread nicht. Deshalb sind sie nützlich für Fire & Forget Szenarien. Zyan 2.0 erkennt und verarbeitet diese OneWay-Attribute nun auch. Sie können sie ganz normal verwenden, wie Sie es von .NET Remoting gewohnt sind.