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;
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.