Zayıf hata işleme ve test etme yeteneklerine sahip olan RequestFactory'nin aksine (çoğu şeyi GWT kapsamında işlediğinden), RPC daha hizmet odaklı bir yaklaşım kullanmanıza izin verir. RequestFactory, karmaşık polimorfik veri yapılarını çağırmanız gerektiğinde kullanışlı bir yaklaşım sağlayabilen daha modern bir bağımlılık enjeksiyon stili yaklaşımı uygular. RPC'yi kullanırken, veri yapılarınızın daha düz olması gerekecektir, çünkü bu, sıralama araçlarınızın json / xml ve java modelleriniz arasında çeviri yapmasına izin verecektir. RPC'yi kullanmak, Google'ın web sitesindeki gwt dev bölümünden alıntılandığı gibi daha sağlam mimari uygulamanıza da olanak tanır.
"Basit İstemci / Sunucu Dağıtımı
Hizmet tanımlarını düşünmenin ilk ve en basit yolu, bunları uygulamanızın tüm arka ucu olarak ele almaktır. Bu perspektiften, istemci tarafı kodu sizin "ön uç "unuzdur ve sunucuda çalışan tüm hizmet kodu" arka uç "dur. Bu yaklaşımı kullanırsanız, hizmet uygulamalarınız belirli bir uygulamaya sıkı sıkıya bağlı olmayan daha genel amaçlı API'ler olma eğiliminde olacaktır. Hizmet tanımlarınız büyük olasılıkla JDBC veya Hazırda Bekletme aracılığıyla veritabanlarına veya hatta sunucunun dosya sistemindeki dosyalara doğrudan erişecektir. Birçok uygulama için bu görünüm uygundur ve katman sayısını azalttığı için çok verimli olabilir.
Çok Katmanlı Dağıtım
Daha karmaşık, çok katmanlı mimarilerde, GWT hizmet tanımlarınız, J2EE sunucuları gibi arka uç sunucu ortamlarına çağrı yapan basit ağ geçitleri olabilir. Bu açıdan, hizmetleriniz, uygulamanızın kullanıcı arayüzünün "sunucu yarısı" olarak görülebilir. Hizmetler, genel amaçlı olmak yerine, kullanıcı arayüzünüzün özel ihtiyaçları için oluşturulur. Hizmetleriniz, çağrıları daha genel amaçlı bir arka uç hizmet katmanına birleştirerek yazılan "arka uç" sınıflarının "ön ucu" olur, örneğin bir J2EE sunucu kümesi olarak uygulanır. Bu tür bir mimari, arka uç hizmetlerinizin HTTP sunucunuzdan fiziksel olarak ayrı bir bilgisayarda çalışmasını istiyorsanız uygundur. "
Ayrıca, tek bir RequestFactory hizmeti kurmanın 6 civarı java sınıfı oluşturmayı gerektirdiğini ve RPC'nin sadece 3 gerektirdiğini unutmayın. Daha fazla kod == kitabımda daha fazla hata ve karmaşıklık.
RequestFactory, veri proxy'leri ve gerçek java modelleri arasında serileştirmeyi sıralamak zorunda olduğu için, istek işleme sırasında biraz daha fazla ek yüke sahiptir. Eklenen bu arabirim, bir işletme veya üretim ortamında gerçekten toplanabilecek ekstra işlem döngüleri ekler.
Ben de RequestFactory servislerinin RPC servisleri gibi serileştirme olduğuna inanmıyorum.
Sonuçta her ikisini de bir süredir kullandıktan sonra, her zaman RPC'yi daha hafif, test etmesi ve hata ayıklaması daha kolay ve bir RequestFactory kullanarak daha hızlı olduğu için kullanıyorum. RequestFactory daha zarif ve genişletilebilir olsa da, RPC karşı kısmından daha iyidir. Eklenen karmaşıklık, onu daha iyi bir araç gerekli kılmaz.
Bence en iyi mimari, iki web uygulaması, bir istemci ve bir sunucu kullanmaktır. Sunucu, servlet.jar kitaplığını kullanan basit ve hafif bir java web uygulamasıdır. Müşteri GWT'dir. İstemci web uygulamasının sunucu tarafına GWT-RPC aracılığıyla RESTful isteğinde bulunursunuz. İstemcinin sunucu tarafı, sunucu servlet web uygulamanızda tek bir sunucu uygulaması olarak çalıştırdığınız istek işleyicisine kalıcı bir tünel kullanan apache http istemcisine yalnızca bir geçiştir. Servlet web uygulaması, veritabanı uygulama katmanınızı (hazırda bekletme, cayenne, sql vb.) İçermelidir. Bu, veritabanı nesne modellerini gerçek istemciden tamamen ayırmanıza olanak tanır ve uygulamanızı geliştirmek ve birim testi yapmak için çok daha genişletilebilir ve sağlam bir yol sağlar. Biraz ilk kurulum süresi gerektirdiği için, ancak sonunda GWT'nin dışında oturan dinamik bir istek fabrikası oluşturmanıza olanak tanır. Bu, her iki dünyanın en iyilerinden yararlanmanıza olanak tanır. Gwt istemcisinin derlenmesine veya oluşturulmasına gerek kalmadan sunucu tarafınızda değişiklik yapabilmenizden bahsetmiyorum bile.