Page 143 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 143
REST API ve gRPC Mimari Stillerinin Karşılaştırılması | 143
verimliliği artırır ve daha iyi bir kullanıcı deneyimi sunar. HTTP 2.0 üzerine inşa edilen gRPC, çift yönlü
veri akışını destekler ve aynı anda birden çok isteğe yanıt verebilir. Ek olarak gRPC, REST’e benzer
tekli iletişimi de destekler.
2. Mesaj Formatı
REST API, veri alışverişinde genellikle JSON ve XML formatlarını kullanır. gRPC ise Protokol
arabelleklerini (Protobuf) kullanarak serileştirilmiş binary formatında mesaj alışverişini kullanır.
Belirtilen bütün formatlar platform ve dilden bağımsız olmakla birlikte birbirlerine üstünlük kurdukları
çeşitli alanlar mevcuttur. JSON ve XML formatları insanlar tarafından daha kolaylıkla okunulabilirler
ve daha basit ve esnek yapıya sahiptir. Protokol arabellekleri ise binary formatında olması sebebiyle
insanlar tarafından okunamazken, mesaj boyutlarının daha küçük olması sebebiyle daha az bant
genişliğine ihtiyaç duyar ve genellikle daha hızlı bir veri alışverişine imkân tanır.
3. Serileştirme ve Tip Kontrolü
REST, çoğu durumda hem istemci hem de sunucu için serileştirme ve hedef programlama diline
dönüştürme gerektiren JSON veya XML kullanır, böylece yanıt süresini ve istek/yanıtı ayrıştırırken
hata olasılığını artırır. Bununla birlikte gRPC, Protobuf değişim formatı kullanılarak seçilen
programlama diline otomatik olarak dönüştürülen kesin olarak yazılmış mesajlar sağlar.
4. Ağ Gecikmesi
HTTP 1.1 protokolünü kullanan REST, her istek için bir TCP el sıkışması gerektirir. REST API’lerde bu
sebeple bazı gecikme sorunları yaşanabilir. gRPC ise veri akışlarını destekleyen HTTP 2.0 protokolüne
dayanır. Istemciler her istek için yeni bir TCP el sıkışmasına gerek duymadan birden çok isteği iletebilir.
Bunun yanı sıra sunucu, kurulan bağlantı aracılığıyla istemcilere anlık bildirimler gönderebilir.
5. Tarayıcı Desteği
REST API, HTTP 1.1 protokolünü kullanması sebebiyle tarayıcıların büyük bir çoğunluğu tarafından
desteklenmektedir. Ancak çoğu tarayıcının HTTP 2.0 için olgunlaştırılmış desteği olmadığı için gRPC,
REST’e göre oldukça sınırlı bir tarayıcı desteğine sahiptir. HTTP 1.1 ve HTTP 2.0 arasındaki dönüşümü
gerçekleştirmek için gRPC-web ve proxy katmanı kullanılır. Bu sebeple gRPC genellikle dışa dönük
servisler yerine dahili servisler arasındaki işlemler için kullanılır.