sgcWebSockets artık Delphi ve C++Builder için yerel bir gRPC istemcisi içeriyor. Yeni TsgcGRPCClient bileşeni, gRPC'yi kütüphanenin kendi HTTP/2 taşıması üzerinden konuşur; bu nedenle dağıtılacak harici bir gRPC çalışma zamanı, C kütüphanesi ve ek DLL yoktur. Enterprise sürümünün bir parçasıdır ve Windows, macOS, Linux, iOS ve Android üzerinde çalışır.
gRPC, yalnızca HTTP/2 üzerinde çerçevelenmiş Protocol Buffers mesajlarıdır. sgcWebSockets zaten eksiksiz bir HTTP/2 yığınına sahiptir, bu nedenle gRPC istemcisi doğrudan onun üzerine inşa edilir: istek baytlarınızı çerçeveler, gRPC üst bilgilerini ve zaman aşımlarını uygular ve durumu ile trailer'ları türlü sonuçlara geri ayrıştırır.
Yerel HTTP/2 taşıması üzerine kurulu
Bir gRPC kanalı, bir HTTP/2 bağlantısıdır. Bir TsgcHTTP2Client oluşturursunuz, onu ana bilgisayara ve bağlantı noktasına yönlendirir, ardından gRPC bileşeninin Client özelliğine atarsınız. TLS, HTTP/2 istemcisi tarafından OpenSSL veya Windows SChannel aracılığıyla işlenir.
uses
sgcHTTP2, sgcGRPC_Client, sgcGRPC_Classes, sgcGRPC_Types;
var
HTTP2: TsgcHTTP2Client;
GRPC: TsgcGRPCClient;
oResponse: TsgcGRPCResponse;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.Host := 'grpc.example.com';
HTTP2.Port := 443;
HTTP2.TLS := True;
GRPC := TsgcGRPCClient.Create(nil);
GRPC.Client := HTTP2;
// metadata is sent on every call (auth, tracing...)
GRPC.DefaultMetadata.Add('authorization', 'Bearer eyJ...');
// unary call: the request is your serialized protobuf message as TBytes
oResponse := GRPC.Call('helloworld.Greeter', 'SayHello', RequestBytes);
if oResponse.StatusCode = grpcOK then
Memo1.Text := oResponse.DataString
else
ShowMessage('gRPC error: ' + oResponse.StatusMessage);
end;
Dört çağrı türünün tümü
Bileşen, senkron veya asenkron her gRPC etkileşim desenini destekler:
- Tekli (Unary).
Callbloklar ve birTsgcGRPCResponsedöndürür;CallAsynchemen döner veOnGRPCResponseolayını tetikler. - Sunucu akışı.
ServerStreamingCallbir istek gönderir ve her biriOnGRPCStreamMessageolayını tetikleyen bir mesaj akışı alır; kapanışta iseOnGRPCStreamEndtetiklenir. - İstemci akışı.
OpenClientStream, ardından her mesaj içinSendStreamMessageve sonra tek yanıtı okumak içinCloseClientStream. - Çift yönlü akış.
OpenBidiStream,SendBidiMessageveCloseBidiStream, tek bir HTTP/2 akışı üzerinde tam çift yönlü (full-duplex) bir alışveriş çalıştırır.
Bir yanıt, çağrının döndürdüğü her şeyi taşır: StatusCode, StatusMessage, ham Data baytları (veya DataString) ve Trailers.
Meta veriler, son tarihler ve kanal seçenekleri
Özel üst bilgiler, tüm kanal için veya çağrı başına DefaultMetadata aracılığıyla taşınır. Çağrı başına bir zaman aşımı, standart grpc-timeout üst bilgisine çevrilir ve CancelCall, devam eden bir akışı durdurur. Kanalın kendisi ChannelOptions aracılığıyla ayarlanır.
// gzip compression and channel limits
GRPC.ChannelOptions.Compression := grpcGzip;
GRPC.ChannelOptions.MaxMessageSize := 16 * 1024 * 1024;
// abort a long-running stream
GRPC.CancelCall(StreamId);
Interceptor'lar, yeniden deneme ve gözlemlenebilirlik
Bir Interceptors zinciri her çağrıyı sarar, böylece günlük tutma, kimlik doğrulama yenileme veya izlemeyi tek bir yerde ekleyebilirsiniz. RetryPolicy seçtiğiniz durum kodlarında yeniden dener, ServiceConfig metot başına ilke uygular ve MetricsCollector çağrı sayaçlarını ve gecikmeleri kaydeder.
GRPC.RetryPolicy.MaxAttempts := 4;
GRPC.RetryPolicy.RetryableStatusCodes :=
GRPC.RetryPolicy.RetryableStatusCodes + [grpcUNAVAILABLE];
Kendi Protocol Buffers'ınızı getirin
İstemci ham mesaj baytlarını (TBytes) alır ve döndürür, bu nedenle sizi tek bir Protocol Buffers kütüphanesine kilitlemez. İsteğinizi halihazırda kullandığınız herhangi bir protobuf aracıyla kodlayın, baytları Call metoduna iletin ve yanıt baytlarını aynı şekilde çözün. Bileşen, gRPC uzunluk öneki çerçevelemesini, sıkıştırma bayrağını, durum kodlarını ve trailer'ları sizin için işler.
Google Cloud gRPC API'leri dahildir
Genel istemcinin üzerine, sgcWebSockets, Google Cloud gRPC hizmetleri için türlü istemciler içerir: Pub/Sub, Speech-to-Text, Translation, Vision, Natural Language, Cloud Storage, BigQuery ve Vertex AI. Bunlar, hizmet hesabı (service-account) kimlik doğrulamasını ve istek ile yanıt mesajlarını işler, böylece protobuf'ları elle oluşturmak yerine üst düzey metotları çağırırsınız.
Kullanılabilirlik
gRPC istemcisi şimdi Delphi ve C++Builder için sgcWebSockets Enterprise sürümünde mevcuttur. Çalıştırılmaya hazır bir örnek Demos\21.GRPC\01.GRPC_Client içinde yer alır ve tam özellik, metot ve olay referansı gRPC Client ürün sayfasında bulunur.
Sorularınız, geri bildirimleriniz veya başlarken yardıma mı ihtiyacınız var? Bize ulaşın. Kodu yazan kişilerden bir yanıt alacaksınız.
