Windows Communication Foundation (WCF) geliştiricileri için gRPC
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.
Bu makalede, ASP.NET Core gRPC'nin modern mimarilere ve platformlara geçiş yapmak isteyen Windows Communication Foundation (WCF) geliştiricileri için neden uygun olduğu özetlenmektedir.
Uygulama ve yaklaşım gRPC için farklı olsa da, gRPC ile hizmet geliştirme ve kullanma deneyimi WCF geliştiricileri için sezgisel olmalıdır. WCF ve gRPC, aynı hedeflere sahip RPC (uzaktan yordam çağrısı) çerçeveleridir:
- İstemci ve sunucu aynı platformdaymiş gibi kod yapmayı mümkün hale getirin.
- Basitleştirilmiş bir taşınabilir ağ API'sini sağlayın.
Her iki platform da bir arabirim bildirme ve uygulama gereksinimini paylaşır, ancak arabirimi bildirme işlemi farklıdır. gRPC'nin desteklediği birçok RPC çağrısı türü WCF hizmetleri için kullanılabilir bağlamalarla iyi eşler. Daha fazla bilgi ve örnek için bkz . WCF çözümünü gRPC'ye geçirme.
gRPC aşağıdaki nedenlerle diğer yaklaşımlardan daha iyi bir çerçeve sağlar.
gRPC HTTP/2 kullanır. HTTP/1.1, HTTP/2'nin aksine:
- Daha küçük ve daha hızlı bir ikili protokoldür.
- Bilgisayarların ayrıştırma için daha verimlidir.
- Tek bir bağlantı üzerinden isteklerin çoğullamasını destekler. Çoğullama, birbirini engelleyen istekler olmadan birden çok isteğin bir bağlantı üzerinden gönderilmesini sağlar. HTTP/1.1'de, engelleme "satır başı (HOL) engelleme" olarak bilinir.
gRPC, iletileri serileştirmek için verimli bir ikili biçim olan Protobuf kullanır. Protobuf iletileri şunlardır:
- Seri hale getirmek ve seri durumdan çıkarmak için hızlı.
- Metin tabanlı biçimlerden daha az bant genişliği kullanın.
gRPC, bant genişliği kısıtlamaları olan mobil cihazlar ve ağlar için iyi bir çözümdür.
.NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby ve PHP gibi tüm büyük programlama dilleri ve platformları için gRPC araçları ve kitaplıkları vardır. Protobuf ikili tel biçimi ve her platform için verimli kod oluşturma sayesinde geliştiriciler platformlar arası, performanslı uygulamalar oluşturabilir.
gRPC kapsamlı bir RPC çözümüdür. Birden çok dil ve platformda tutarlı bir şekilde çalışır. Ayrıca, ortak kodun büyük bölümü otomatik olarak oluşturulan mükemmel araçlar sağlar. WCF gibi gRPC de iletileri ve kesin olarak yazılan bir istemciyi otomatik olarak oluşturur. İş mantığına odaklanmak için geliştirici süresi serbesttir.
gRPC, WCF'nin tam çift yönlü hizmetlerine benzer işlevler sağlayan tam çift yönlü akışa sahiptir. gRPC akışı normal İnternet bağlantıları, yük dengeleyiciler ve hizmet ağları üzerinden çalışabilir.
gRPC, istemcilerin RPC'nin bitmesi için en uzun süreyi belirtmesine olanak tanır. Belirtilen son tarih aşılırsa, sunucu işlemi istemciden bağımsız olarak iptal edebilir. Son tarihler ve iptaller, kaynak kullanım sınırlarının uygulanmasına yardımcı olmak için sonraki gRPC çağrıları aracılığıyla yayılabilir. İstemciler, son tarih aşıldığında veya gerekirse daha erken olduğunda işlemleri durdurabilir. Örneğin, istemciler bir kullanıcı etkileşimi nedeniyle işlemleri durdurabilir.
gRPC, istemci ile sunucu arasında uçtan uca şifreli bir bağlantı sağlamak için TLS ve HTTP/2 kullanabilir. İstemci sertifikası kimlik doğrulaması desteği, istemci ve sunucu arasındaki güvenliği ve güveni daha da artırır.
.NET Core ve .NET 5, Microsoft'un çeşitli platformlarda hizmet sunmak isteyen geliştiricilere uzaktan iletişim çözümleri sunma biçiminde bir değişime işaret eder. .NET Core ve .NET 5, WCF hizmetlerini çağırmayı destekler, ancak WCF barındırma için sunucu tarafı desteği sunmaz.
WCF uygulamalarını modernleştirmek için önerilen iki yol vardır:
gRPC modern teknolojiler üzerine kurulmuştur ve RPC uygulamaları için geliştirici topluluğunun en popüler tercihi olarak ortaya çıkmıştır. .NET Core 3.0'dan başlayarak, modern .NET platformları gRPC için mükemmel desteğe sahiptir. WCF hizmetlerini gRPC kullanacak şekilde geçirmek, modern uygulamalarda gereken RPC özelliklerini, performansını ve birlikte çalışabilirliği sağlamaya yardımcı olur.
CoreWCF , .NET Core ve .NET 5'e WCF hizmetlerini barındırma desteği sunmak için bir topluluk çalışmasıdır. Bir önizleme sürümü mevcuttur ve proje üretime hazır hale gelmek için çalışmaktadır. CoreWCF yalnızca WCF özelliklerinin bir alt kümesini destekler ve bunu kullanmak için geçirilen .NET Framework uygulamalarının başarılı olması için kod değişiklikleri ve test gerekir. Bir uygulamanın WCF hizmetlerini çağıran mevcut istemcilerle uyumluluğu koruması gerekiyorsa CoreWCF iyi bir seçimdir.
WCF geliştiricileri için ASP.NET Core'da gRPC hizmetleri oluşturma hakkında ayrıntılı yönergeler için bkz . WCF Geliştiricileri için Core gRPC ASP.NET
ASP.NET Core geri bildirimi
ASP.NET Core, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: