gRPC ile istemci sunucusu uygulamaları oluşturma

gRPC her ortamda çalışabilen modern, açık kaynaklı ve yüksek performanslı bir RPC çerçevesidir. Yük dengeleme, takip, durum denetimi ve kimlik doğrulama için sunulan takılabilir destekle hizmetleri veri merkezleri arasında ve farklı veri merkezleri arasında verimli bir şekilde bağlayabilir. Cihazları, mobil uygulamaları ve tarayıcıları arka uç hizmetlerine bağlamak, dağıtılmış bilgi işlemin son aşamasında da geçerlidir. gRPC'nin resmi web sitesindeki belgeleri bulabilir ve açık kaynak topluluklarından destek alabilirsiniz. Bu kılavuzda, gRPC kullanarak Android uygulamaları oluşturma çözümleri açıklanmaktadır.

grpc.io, gRPC projesinin resmi web sitesidir. gRPC'nin nasıl çalıştığı hakkında daha fazla bilgi edinmek için bkz. gRPC nedir? ve gRPC Kavramları. Bir Android uygulamasında gRPC'yi nasıl kullanacağınızı öğrenmek için gRPC Android Java Hızlı Başlangıç Kılavuzu'ndaki Hello World örneğine bakın. GitHub'da başka gRPC Android örnekleri de bulabilirsiniz.

Özellikler

Prosedürler çağrısı süreci basitleştirir
RPC olduğundan, programlama modeli prosedür çağrılarıdır: Teknolojinin ağ iletişimi kısmı uygulama kodundan soyutlanır ve neredeyse normal bir işlem içi işlev çağrısı gibi görünür. İstemci-sunucu etkileşiminiz, HTTP kaynak yöntemlerinin (GET, PUT, POST ve DELETE gibi) anlamlarıyla sınırlanmaz. REST API'lere kıyasla uygulamanız, HTTP protokolü meta verilerini işlemeye gerek kalmadan daha doğal görünür.
HTTP/2 ile verimli ağ iletimi
Mobil cihazlardan arka uç sunucusuna veri iletmek son derece fazla kaynak gerektiren bir işlem olabilir. Standart HTTP/1.1 protokolünü kullanarak, bir mobil cihazdan bulut hizmetine sık sık yapılan bağlantılar pili tüketebilir, gecikmeyi artırabilir ve diğer uygulamaların bağlanmasını engelleyebilir. Varsayılan olarak gRPC, HTTP/2'nin üzerinde çalışır. Bu sayede çift yönlü akış, akış denetimi, başlık sıkıştırma ve tek bir TCP/IP bağlantısı üzerinden istekleri Multiplex özelliği sunar. Bunun sonucunda gRPC kaynak kullanımını azaltarak uygulamanız ile bulutta çalışan hizmetleriniz arasındaki yanıt sürelerinin azalmasına, ağ kullanımının azalmasına ve mobil cihazlarda çalışan istemciler için daha uzun pil ömrüne neden olur.
Dahili akış veri alışverişi desteği
gRPC, HTTP/2'nin tam çift yönlü çift yönlü akış desteğiyle tasarlanmıştır. Akış, bir istek ve yanıtın rastgele büyük boyutlara (ör. çok miktarda bilgi yükleme veya indirme işlemi gerektiren işlemler) sahip olmasına olanak tanır. Akış sayesinde istemci ve sunucu, iletileri aynı anda okuyup yazabilir ve izleme kaynak kimlikleri olmadan birbirlerine abone olabilir. Bu sayede uygulama kullanımınız daha esnek hale gelir.
Protokol Arabelleği ile sorunsuz entegrasyon
gRPC, Android için optimize edilmiş kod oluşturma eklentisi (Protobuf Java Lite) ile serileştirme/serileştirme yöntemi olarak Protokol Arabelleklerini (Protobuf) kullanır. Metin tabanlı biçimle (JSON gibi) karşılaştırıldığında Protobuf, düzenleme hızı ve kod boyutu açısından daha verimli veri alışverişi sunduğundan mobil ortamlarda kullanılmaya daha uygundur. Ayrıca Protobuf'un kısa mesaj/hizmet tanımı söz dizimi, uygulamanız için veri modeli ve uygulama protokolleri tanımlamayı da çok daha kolay hale getirir.

Kullanıma genel bakış

gRPC Temel Bilgileri - Android Java eğiticisinin izlenmesinde Android uygulamaları için gRPC kullanımı dört adımdan oluşur:

  • RPC hizmetlerini protokol arabellekleriyle tanımlayın ve gRPC istemci arayüzlerini oluşturun.
  • İstemci ve sunucu arasındaki RPC çağrıları için aracı işlevi gören bir kanal oluşturun.
  • İstemci tarafından RPC çağrılarını başlatmak için giriş noktası olarak bir istemci Saplaması oluşturun.
  • Uzak sunucuya yerel prosedür çağrılarını yaparken yaptığınız gibi RPC çağrıları yapın.

Gösterim amacıyla, baytlar sağlanan örnekte düz metin olarak iletilir. Ancak, uygulamanız üretimde her zaman ağ verilerini şifrelemelidir. gRPC, kimlik doğrulama amacıyla SSL/TLS şifreleme desteğinin yanı sıra OAuth jetonu değişimi (Google hizmetleriyle OAuth2) sağlar. Daha fazla bilgi için Android'de TLS ve OAuth2'yi kullanma bölümlerine göz atın.

Ulaşım

gRPC, Android istemcileri için iki Transport uygulaması seçeneği sunar: OkHttp ve Cronet.

Ulaşım şekli seçme (gelişmiş)

  • OkHttp
    OkHttp, mobil cihazlarda kullanım için tasarlanmış hafif bir ağ yığınıdır. Bu, gRPC'nin Android ortamında çalışmak için kullanılan varsayılan aktarımıdır. Uygulamanız için gRPC aktarımı olarak OkHttp'yi kullanmak istiyorsanız kanalı AndroidChannelBuilder ile oluşturun. Bu kanal, OkHttpChannelBuilder ile sarmalanır ve ağ değişikliklerine hızlıca yanıt vermek için Android OS ile bir ağ izleyicisi kaydeder. Örnek kullanımı gRPC-Java AndroidChannelBuilder konusunda bulabilirsiniz.
  • Cronet (deneysel)
    Cronet, Chromium'un mobil cihazlar için kitaplık olarak paketlenmiş Ağ İletişimi yığınıdır. Özellikle güvenilir olmayan ağ ortamlarında etkili olabilecek modern QUIC protokolüyle güçlü ağ iletişimi desteği sunar. Cronet hakkında daha fazla bilgi edinmek için Cronet'i kullanarak ağ işlemleri gerçekleştirme bölümüne bakın. Uygulamanız için gRPC aktarımı olarak Cronet'i kullanmak istiyorsanız kanalı CronetChannelBuilder ile oluşturun. gRPC-Java Cronet Transport bölümünde örnek bir kullanım verilmiştir.

Genel olarak, son SDK sürümlerini hedefleyen uygulamaların daha güçlü bir ağ yığını sunduğu için Cronet kullanmasını öneririz. Cronet kullanmanın olumsuz tarafı, APK boyutunun artmasıdır. Çünkü ikili Cronet bağımlılığı, uygulama boyutuna 1 MB'tan fazla ve OkHttp için yaklaşık 100 KB ekler. GMSCore v.10 sürümünden itibaren, Cronet'in güncel bir kopyası Google Play Hizmetleri'nden yüklenebilir. Artık APK boyutu için bir sorun olmayabilir, ancak en son GMSCore'un yüklü olmadığı cihazlar yine de OkHttp'yi kullanmayı tercih edebilir.