2008-10-25 24 views

cevap

1

GWT, birkaç rasgele RPC'nin toplu işlenmesi için tek adımlı bir çözüm sağlamaz. Ancak, GWT'nin otomatik serileştirme işleminin, RPC yöntemlerinin her birinin seri ve toplu sürümlerini yazmayı oldukça kolaylaştırdığını unutmayın. Örneğin, bu RPC tanımladığınız varsayalım:

FooResponse callFoo(FooRequest request); 

It aynı RPC kendin bir "toplu" versiyonunu yazmak için bu kolay: Bilmiyorum ama

ArrayList<FooResponse> batchCallFoo(ArrayList<FooRequest> requests) { 
    ArrayList<FooResponse> responses = new ArrayList<FooResponse>(); 
    for (FooRequest request : requests) { 
    responses.add(callFoo(request)); 
    } 
} 
+0

GWT RPC Asynchronouse vardır çünkü çözüm çalışmaz; çağrıdan hemen sonra geri dönerler; AsyncCallback işleyicisi, değeri ele almaktan sorumludur. –

+0

BatchCallFoo sunucu tarafı uygulaması olmadıkça, bu durum işe yarayacak, ancak istemci tarafı bir çağrı olarak, toplu uygulamasının sıralamadan hiçbir şey yapmadığı - callFoo'yu art arda çağırıyor, bu da "toplu" çağrıların antitezi . –

1

Bu iyi bir soru kolay bir çözüm olduğunu düşünün.

DWR'ye benzer bir şekilde toplu işlem gerçekleştirmek için yöntemlerinizi bir araya getiren ayrı bir yöntem oluşturmanız gerektiğine inanıyorum.

Yani varsa:

public int add(int x, int y); 
public int sub(int i, int j); 

Bunları birleştirmek için yeni bir yöntem oluşturmak istiyorum:

public Map<String, Integer> addAndSub(Map methodsAndArguments) { 
    // Call add and sub methods with it's arguments 
} 

Hala elbette aynı geri arama yönteminde bütün yanıtını işlemek gerekir .

Bunun en zarif çözüm olmadığını anladım ama GWTs RPC çalışmasının yolunda gitmenin yolu olduğunu düşünüyorum. GWT ile, genellikle yöntemlerinizi yazmayı denemeniz gerektiğini düşünüyorum, böylece toplu işlem, göz önünde bulundurmanız gereken bir sorun bile olmayacaktır.

8

Google'ın Ray Ryan, bir komut deseni kullanma hakkında konuştuğu Best Practices For Architecting Your GWT App hakkında bir sunum yaptı. RPC'yi aşan eşzamansız komutlar göndermek muhtemelen isteyeceğiniz şeydir. RPC'ler yerine komutlar gönderdikten sonra, bunları toplu işlemek çok kolaydır.

Bu deseni sizin için uygulayan bir kitaplık için gwt-dispatch'a bakın. Sadece kullanmaya başladım, bu yüzden otomatik olarak toplu iş yapıp yapmadığını bilmiyorum, ancak izin veren bir lisansla açık kaynak kodlu, eğer yapmazsanız onu düzeltebilirsiniz.

1

Başvurunuz Comet (sunucu tarafı tuş) alanı içine sığar durumunda da GWTEventService kullanabilirsiniz:

GWTEventService bir olay tabanlı istemci-sunucu iletişimi çerçevesidir. GWT-RPC ve Comet/server-push tekniğini kullanır. İstemci tarafı, dinleyicileri bir GUI bileşeni gibi sunucuya kaydetme fırsatlarına sahip yüksek düzeyli bir API sunar. Olaylar sunucu tarafındaki bir içerik/alana eklenebilir ve müşteri tarafındaki dinleyiciler gelen olaylar hakkında bilgilendirilir. Sunucu tarafı, istemci uygulamasından tamamen bağımsızdır ve yüksek düzeyde yapılandırılabilir.Bu olay modeli tarafından sunulan avantajlardan biri

Çünkü:

Olaylar sunucu aramaları azaltmak için paketlenmiştir

İlgili konular