GRPC hizmetlerini C çekirdeğinden ASP.NET Core
Temel yığının uygulanması nedeniyle, tüm özellikler C çekirdek tabanlı gRPC uygulamaları ve ASP.NET Core tabanlı uygulamalar arasında aynı şekilde çalışmaz. Bu belgede, iki yığın arasında geçiş için temel farklar vurgulanır.
Önemli
gRPC C-core bakım modundadır ve .NET için gRPC ile kullanım dışıdır. Yeni uygulamalar için gRPC C-core önerilmez.
gRPC hizmeti uygulama ömrü
Bu ASP.NET Core gRPC hizmetleri varsayılan olarak kapsamlı bir yaşam süresiyle oluşturulur. Buna karşılık, gRPC C-core varsayılan olarak tek kullanım ömrüne sahip bir hizmete bağlar.
Kapsamlı yaşam süresi, hizmet uygulamasının kapsamlı yaşam süreleriyle diğer hizmetleri çözümlemesini sağlar. Örneğin, kapsamlı bir yaşam süresi, oluşturucu ekleme DbContext yoluyla DI kapsayıcıdan da çözümlenebilirsiniz. Kapsamlı yaşam süresi kullanma:
- Her istek için yeni bir hizmet uygulaması örneği oluşturulur.
- Uygulama türü üzerinde örnek üyeleri aracılığıyla istekler arasında durum paylaşmak mümkün değildir.
- Beklenti, paylaşılan durumları DI kapsayıcısı içinde tek bir hizmette depolamaktır. Depolanan paylaşılan durumları gRPC hizmet uygulamasının oluşturucusu içinde çözümlenir.
Hizmet ömrü hakkında daha fazla bilgi için bkz. ASP.NET Core bağımlılık ekleme .
Tekli hizmet ekleme
gRPC C-core uygulamasından ASP.NET Core için, kapsamı tek olan hizmet uygulamasının hizmet ömrünü değiştirmek mümkündür. Bu, DI kapsayıcısı için hizmet uygulamasının bir örneğini eklemeyi içerir:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
services.AddSingleton(new GreeterService());
}
Ancak, tek kullanım ömrü olan bir hizmet uygulaması artık kapsamlı hizmetleri oluşturucu ekleme yoluyla çözümleyemeyecek.
gRPC hizmetleri seçeneklerini yapılandırma
C çekirdek tabanlı uygulamalarda, ve gibi ayarlar grpc.max_receive_message_length grpc.max_send_message_length Sunucu örneği ChannelOption yapılandırılırken ile yapılandırılır.
Bu ASP.NET Core gRPC, tür aracılığıyla yapılandırma GrpcServiceOptions sağlar. Örneğin, bir gRPC hizmetinin gelen en büyük ileti boyutu aracılığıyla yalıtabilirsiniz. AddGrpc Aşağıdaki örnek varsayılan MaxReceiveMessageSize 4 MB olan değeri 16 MB olarak değiştirir:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.MaxReceiveMessageSize = 16 * 1024 * 1024; // 16 MB
});
}
Yapılandırma hakkında daha fazla bilgi için .NET yapılandırması için gRPC bkz. .
Günlüğe Kaydetme
C çekirdek tabanlı uygulamalar, hata ayıklama GrpcEnvironment amacıyla günlükçeri yapılandırmak için 'yi temel almaktadır. Bu ASP.NET Core yığını, Günlük API'si aracılığıyla bu işlevi sağlar. Örneğin, oluşturucu ekleme yoluyla gRPC hizmetine bir günlük oluşturucu eklenebilir:
public class GreeterService : Greeter.GreeterBase
{
public GreeterService(ILogger<GreeterService> logger)
{
}
}
HTTPS
C çekirdek tabanlı uygulamalar, Server.Ports özelliği aracılığıyla HTTPS'yi yapılandırmaktadır. Benzer bir kavram, ASP.NET Core' içinde sunucuları yapılandırmak için kullanılır. Örneğin, Kestrel bu işlevsellik için uç nokta yapılandırmasını kullanır.
C çekirdek tabanlı uygulamalar, Server.Ports özelliği aracılığıyla HTTPS'yi yapılandırmaktadır. Benzer bir kavram, ASP.NET Core' içinde sunucuları yapılandırmak için kullanılır. Örneğin, Kestrel bu işlevsellik için uç nokta yapılandırmasını kullanır.
gRPC Interceptors ve Ara Yazılım karşılaştırması
ASP.NET Core yazılım, C çekirdek tabanlı gRPC uygulamalarına kıyasla benzer işlevler sunar. ASP.NET Core ara yazılım ve kesme noktası kavramsal olarak benzerdir. Hem:
- Bir gRPC isteğini işleyici bir işlem hattı oluşturmak için kullanılır.
- İşlem hattında bir sonraki bileşenden önce veya sonra iş gerçekleştirilecek şekilde izin ver.
- erişimi
HttpContextsağlama:- Ara yazılımda
HttpContextparametresidir. - Kesmecilerde,
HttpContextgenişletme yöntemiyle parametresi kullanılarakServerCallContextServerCallContext.GetHttpContexterişilebilir. Bu özelliğin, verilerde çalışan kesme ASP.NET Core.
- Ara yazılımda
gRPC Interceptor ile ASP.NET Core farkları:
- Interceptors:
- ServerCallContextkullanarak soyutlamanın gRPC katmanında çalışma.
- Şu erişime erişim sağlama:
- Bir çağrıya gönderilen, deserialized iletisi.
- Çağrı seri hale getirimeden önce çağrıdan döndürülen ileti.
- gRPC hizmetlerinden gelen özel durumları yakalayabilir ve işebilir.
- Middleware:
- gRPC kesme noktası öncesinde çalışır.
- Temel alınan HTTP/2 iletileri üzerinde çalışır.
- Baytlara yalnızca istek ve yanıt akışlarından erişin.