33 votes

Devrais-je créer un backend REST pour une application GWT?

Je suis la planification d'une nouvelle application et ont fait des expériences avec GWT comme un possible frontend. La question du design, je suis confronté est-ce.

Dois-je utiliser Option A: GWT-RPC et de construire l'application rapidement

Option B: Construire un REPOS backend à l'aide de Spring MVC 3.0 avec tous les grands @Contrôleur, @Service, @Référentiel d'annotations et de construire un client à côté de la bibliothèque pour parler à l'arrière-plan à l'aide de l'GWT superposition de fonctions et le GWT générateur de Requête?

Je suis intéressé à tous les avantages et les inconvénients et les gens expériences avec ce type de conception?

28voto

Chris Lercher Points 22134

Posez-vous la question: "ai-je besoin de réutiliser le côté serveur de l'interface avec un non-GWT front-end?"

Si la réponse est "non, je vais juste avoir une GWT client": Vous pouvez utiliser GWT-RPC, et profiter du fait que vous pouvez utiliser vos objets Java à la fois sur le serveur et côté client. Cela peut aussi faire de la communication un peu plus efficace, au moins lorsqu'il est utilisé avec <inherits name="com.google.gwt.user.RemoteServiceObfuscateTypeNames" />, ce qui réduit les noms de type de pour de petites valeurs numériques. Vous aurez également l'avantage d'une meilleure gestion des erreurs (à l'aide d'Exceptions), type de sécurité, etc.

Si la réponse est "oui, je vais faire mon service accessible pour plusieurs sortes de front-end": Vous pouvez utiliser de REPOS avec JSON (ou XML), qui peut aussi être compris par des non-GWT clients. En plus du changement des clients, ce serait également vous permettre de passer à un autre serveur de mise en œuvre (peut-être non-Java) à l'avenir plus facilement. L'inconvénient est que vous aurez probablement à écrire des wrappers (JavaScript Types d'Incrustation) ou de la transformation de code sur le GWT côté client pour construire de belles des objets Java à partir de la forme d'objets JSON. Vous devrez être particulièrement prudent lorsque vous déployez une nouvelle version du service, ce qui nous ramène à l'absence de sécurité de type.

La troisième option serait de construire à la fois. J'ai choisi cette option, si le public RESTE de l'interface doit être différente de la GWT-RPC interface de toute façon - peut-être qu'ils fournissent seulement un sous-ensemble de services faciles à utiliser.

25voto

Hiram Chirino Points 1855

Vous pouvez faire les deux si vous utilisez également le projet RestyGWT . Cela facilitera l'appel des ressources JSON basées sur REST par rapport à l'utilisation de GWT-RPC. De plus, vous pouvez généralement réutiliser les mêmes DTO de réponse à la requête côté serveur côté client.

8voto

Zack Grossbart Points 136

Nous avons rencontré le même problème lorsque nous avons créé le cadre d'interface utilisateur Spiffy . Nous avons choisi REST et je n'y retournerai jamais. Je dirais même que GWT-RPC est un anti-motif GWT .

REST est une bonne idée même si vous n'avez jamais l'intention d'exposer vos points de terminaison REST. La création d'une API REST accélérera votre interface utilisateur, améliorera votre API et facilitera la maintenance de l'ensemble de votre application.

3voto

LiorH Points 4623

Je dirais construire un REPOS backend. Dans mon dernier projet, nous avons commencé par le développement de l'utilisation de GWT-RPC pour la première quelques mois, nous voulions rapide d'amorçage. Plus tard, quand nous avons eu besoin de l'API REST, c'était si cher à faire du refactoring nous nous sommes retrouvés avec deux backend Api (REST et RPC)

Si vous construisez un REPOS backend, et une désérialisation infra sur le côté client (pour les transformer au format json\xml pour Java GWT objets) alors le bénéfice de la RPC est presque rien.

Un autre oublie parfois l'avantage de le RESTE approche est qu'il est plus naturel de le navigateur en cours d'exécution, le client RPC est un propitiatoire protocole, où toutes les demandes sont à l'aide de POST. Vous pouvez bénéficier de la mise en cache côté client lors de la lecture des ressources de façon standard.

Répondre ams commentaires: Concernant le protocole RPC, la dernière fois que j'ai "reniflé" à l'aide de firebug il ne ressemble pas à du json, donc je ne sais pas à ce sujet. Cependant, même si c'est du json, il utilise toujours uniquement de la méthode HTTP POST pour communiquer avec le serveur, donc mon point ici sur la mise en cache est toujours valide, le navigateur ne permet pas la mise en cache des requêtes POST.

Au sujet de la rétrospective et de ce qu'il aurait pu faire mieux, écrit le service RPC dans une architecture orientée pourrait conduire plus tard à simplifier le portage de REPOS. rappelez-vous que dans le RESTE généralement on expose des ressources de base, les opérations CRUD, si vous vous concentrez sur cette approche lors de l'écriture de la RPC service, alors vous devriez être bien.

2voto

fumanchu Points 8291

Le style architectural REST favorise inspectable messages (qui facilite le débogage et de sécurité), de l'API de l'évolution, de multiples plates-formes, d'interfaces simples, de récupération de défaillance, une grande évolutivité, et (éventuellement) extensible systèmes par le biais de code à la demande. Il est négocié par interaction de la performance pour l'ensemble de l'efficacité du réseau. Il réduit le serveur de contrôle de l'application uniforme de comportement.

Le "RPC style" (comme on parle d'elle dans l'opposition pour se REPOSER) favorise la plate-forme de l'homogénéité, de l'interface de la variabilité, de la génération de code (et donc de la capacité de croire que le réseau n'existe pas, mais voir les Erreurs), et des interactions personnalisées. Il traite de l'ensemble du réseau de l'efficacité pour le haut par interaction de la performance. Il augmente le serveur de contrôle de l'application uniforme de comportement.

Si votre application désirs de l'ancien qualités, utilisez le RESTE de style. Si elle veut les derniers, utilisez le type RPC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X