gRPC adalah framework RPC modern, open source, berperforma tinggi yang dapat berjalan di lingkungan apa saja. Framework ini dapat menghubungkan layanan di seluruh pusat data secara efisien dengan dukungan pluggable untuk load balancing, perekaman aktivitas, pemeriksaan kesehatan, dan autentikasi. Framework ini juga dapat digunakan di mil terakhir komputasi terdistribusi untuk menghubungkan perangkat, aplikasi seluler, dan browser ke layanan backend. Anda dapat menemukan dokumentasi di situs resmi gRPC dan mendapatkan dukungan dari komunitas open source. Panduan ini menunjukkan solusi untuk membuat aplikasi Android menggunakan gRPC.
grpc.io adalah situs resmi untuk project gRPC. Untuk mempelajari cara kerja gRPC lebih lanjut, lihat Apa itu gRPC? dan Konsep gRPC. Untuk mempelajari cara menggunakan gRPC di aplikasi Android, lihat contoh Hello World di Panduan Memulai Android Java gRPC. Anda juga dapat menemukan beberapa contoh Android gRPC lainnya di GitHub.
Fitur
- Panggilan prosedur memudahkan segalanya
- Karena merupakan bagian dari RPC, model pemrogramannya adalah panggilan prosedur: aspek jaringan teknologi dipisahkan dari kode aplikasi, membuatnya seolah-olah adalah panggilan fungsi dalam proses yang normal. Interaksi klien ke server Anda tidak akan dibatasi oleh semantik metode resource HTTP (seperti GET, PUT, POST, dan DELETE). Dibandingkan dengan REST API, penerapan Anda terlihat lebih natural, tanpa perlu menangani metadata protokol HTTP.
- Transmisi jaringan yang efisien dengan HTTP/2
- Mengirimkan data dari perangkat seluler ke server backend bisa menjadi proses yang yang menggunakan resource secara intensif. Menggunakan protokol HTTP/1.1 standar, koneksi yang sering terjadi dari perangkat seluler ke layanan cloud dapat menguras baterai, meningkatkan latensi, dan memblokir aplikasi lain agar tidak tersambung. Secara default, gRPC berjalan pada HTTP/2 yang menghadirkan streaming dua arah, kontrol alur, kompresi header, dan kemampuan untuk melipatgandakan permintaan melalui koneksi TCP/IP tunggal. Hasilnya adalah gRPC dapat mengurangi penggunaan resource, menghasilkan waktu respons yang lebih rendah antara aplikasi dan layanan yang berjalan di cloud, mengurangi penggunaan jaringan, dan memperpanjang masa pakai baterai untuk klien yang berjalan di perangkat seluler.
- Dukungan pertukaran data streaming bawaan
- gRPC dirancang dengan dukungan HTTP/2 dengan mempertimbangkan streaming dua arah full-duplex dari awal. Streaming memungkinkan permintaan dan respons yang berukuran besar dan berubah-ubah, misalnya operasi yang memerlukan proses upload dan download sejumlah besar informasi. Dengan streaming, klien dan server dapat membaca dan menulis pesan secara bersamaan dan berlangganan satu sama lain tanpa melacak ID resource. Hal ini membuat implementasi aplikasi Anda lebih fleksibel.
- Integrasi yang lancar dengan Protocol Buffer
- gRPC menggunakan Protocol Buffer (Protobuf) sebagai metode serialisasi/deserialisasinya dengan plugin codegen yang dioptimalkan untuk Android Protobuf Java Lite). Dibandingkan dengan format berbasis teks (seperti JSON), Protobuf menawarkan pertukaran data yang lebih efisien dalam hal kecepatan marshalling dan ukuran kode, yang membuatnya lebih cocok digunakan pada lingkungan seluler. Selain itu, sintaks definisi layanan/pesan yang ringkas milik Protobuf membuat penentuan model data dan protokol aplikasi untuk aplikasi Anda lebih mudah.
Ringkasan penggunaan
Berdasarkan tutorial Dasar-Dasar gRPC - Android Java, menggunakan gRPC untuk aplikasi Android melibatkan empat langkah:
- Tentukan layanan RPC dengan protocol buffer dan buat antarmuka klien gRPC.
- Buat Saluran yang berfungsi sebagai perantara panggilan RPC antara klien dan server.
- Buat Stub klien sebagai titik awal untuk memulai panggilan RPC dari sisi klien.
- Buat panggilan RPC ke server jarak jauh seperti saat Anda melakukan panggilan prosedur lokal.
Untuk tujuan demonstrasi, byte dikirimkan dalam bentuk teks biasa pada contoh yang diberikan. Namun, aplikasi Anda harus selalu mengenkripsi data jaringan dalam produksi. gRPC menyediakan dukungan enkripsi SSL/TLS serta pertukaran token OAuth (OAuth2 dengan layanan Google) untuk autentikasi. Untuk detail selengkapnya, lihat TLS di Android dan Menggunakan OAuth2.
Transport
gRPC menyediakan dua pilihan penerapan Transport untuk klien Android: OkHttp dan Cronet.
Memilih transport (tingkat lanjut)
- OkHttp
- OkHttp adalah stack jaringan ringan yang dirancang untuk digunakan di perangkat seluler. Ini adalah
transport default gRPC yang akan dijalankan di lingkungan Android. Untuk menggunakan OkHttp sebagai
transport gRPC untuk aplikasi Anda, buat saluran dengan
AndroidChannelBuilder
, yang menggabungkanOkHttpChannelBuilder
dan akan mendaftarkan pemantauan jaringan dengan OS Android untuk merespons perubahan jaringan dengan cepat. Contoh penggunaannya dapat ditemukan di gRPC-Java AndroidChannelBuilder.
- Cronet (eksperimental)
- Cronet adalah stack Jaringan Chromium yang dipaketkan sebagai library untuk seluler. Cronet
menawarkan dukungan jaringan yang kuat dengan protokol QUIC yang canggih, yang sangat
efektif digunakan dalam lingkungan jaringan yang tidak dapat diandalkan. Untuk mempelajari
Cronet lebih lanjut, lihat Menjalankan operasi jaringan menggunakan Cronet.
Untuk menggunakan Cronet sebagai transport gRPC untuk aplikasi Anda, buat saluran dengan
CronetChannelBuilder
. Contoh penggunaan disediakan di Transport Cronet gRPC-Java.
Secara umum, kami menganjurkan agar aplikasi yang menargetkan versi SDK terbaru menggunakan Cronet, karena menawarkan stack jaringan yang lebih canggih. Kelemahan dari penggunaan Cronet adalah ukuran APK bertambah besar, karena terdapat penambahan dependensi Cronet biner sebesar >1 MB terhadap ukuran aplikasi, berbanding dengan OkHttp yang hanya ~100 KB. Dimulai dengan GMSCore v.10, salinan terbaru Cronet dapat dimuat dari Layanan Google Play. Ukuran APK mungkin tidak lagi mengkhawatirkan, meskipun perangkat yang tidak menginstal GMSCore versi terbaru mungkin masih lebih cocok menggunakan OkHttp.