GRPC-basierter Sidecar .NET 5C#

Ein Treffpunkt für C#-Programmierer
Guest
 GRPC-basierter Sidecar .NET 5

Post by Guest »

Ich versuche gerade, einen gRPC-basierten Sidecar für meine Dienste zu erstellen, um die Kommunikation und den Umgang mit übergreifenden Problemen usw. zu vereinfachen. Ich habe mit einfachen Client- und Server-gRPC-Diensten begonnen, die dieselben Protodateien verwenden. Danach habe ich in der Mitte einen Dienst hinzugefügt, um die gRPC-Anfrage des Clients zu empfangen und einige Nachrichtentransformationen durchzuführen, verfügbare Dienste zu ermitteln usw.
Im mittleren Dienst, der die Rolle von spielt Client-Sidecar (in Zukunft wird auch das Server-Sidecar hinzugefügt) habe ich das GRPC.ASPNetCore-Paket mit dieser Option verwendet:

Code: Select all

option.IgnoreUnknownServices = true;
Damit ich die Anfragen in meiner benutzerdefinierten Middleware verarbeiten kann und meine Herausforderungen wie folgt sind:
Deserialisierung anfordern< /strong>
Ich verwende protobuf-net und seine Reflexions-APIs, um C#-Code für meine Protos zur Laufzeit zu generieren und sie mit Roslyn zu kompilieren, um einen gleichwertigen CLR-Typ meiner Protos zu haben . Danach verwende ich den Serializer von protobuf-net, um die Daten zu deserialisieren, die ich aus dem Anforderungsstream meiner benutzerdefinierten Middleware gelesen habe.
  • Kann ich komprimierte Nachrichten lesen? ?
  • Wie kann ich Server-Streaming, Client-Streaming oder bidirektionales Streaming lesen?
  • Ist dieser Ansatz richtig oder gibt es dafür eine integrierte Technologie? Szenario?

Anfrage an einen anderen Dienst weiterleiten

Nachdem ich den Zielknoten erkannt habe (falls dieser Knoten die gRPC-Anfrage akzeptiert), muss ich das eingehende HTTP weiterleiten Anfrage an den genannten Knoten. Gibt es eine schnelle Möglichkeit, eine solche Anfrage an einen anderen Dienst weiterzuleiten?
Eine weitere Alternative besteht darin, einen gRPC-Client zur Laufzeit zu erstellen und ihn mit dem deserialisierten Wert aus dem HTTP-Anfragestream aufzurufen. Aber ich muss herausfinden, wie ich das machen kann.
Ich habe noch viel mehr Fragen und Unklarheiten im Kopf. Ich würde mich freuen, wenn Sie meine Fragen beantworten oder Referenzen vorschlagen.
Mein Projekt ist hier.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post