45 votes

Différence entre Apache Tapestry et Apache Wicket

Apache Wicket ( http://wicket.apache.org/ ) et Apache Tapestry ( http://wicket.apache.org/ ) sont les deux composants web cadres - contrairement à l'action en fonction des cadres comme les Rayures par la Fondation Apache. Les deux vous permettent de construire votre application à partir de composants en Java. Ils ont tous deux l'air très semblable à moi.

Quelles sont les différences entre ces deux cadres? Quelqu'un a une expérience à la fois? Plus précisément:

  • Comment est leur performance, combien peut-état de la manipulation être personnalisés, peuvent-ils être utilisés apatrides?
  • Quelle est la différence dans leur modèle de composant?
  • Qu'aimeriez-vous choisir pour quelles applications?
  • Comment intègrent-elles avec Guice, Printemps, JSR 299?

Edit: j'ai lu la documentation pour tous les deux et j'ai utilisé les deux. Les questions ne peuvent pas répondre suffisamment à la lecture de la documentation, mais à partir de l'expérience de l'utilisation de ces pendant un certain temps, par exemple, comment utiliser Guichet dans un apatride à la mode pour la haute performance des sites. Merci.

41voto

Eelco Points 1411

Les différences que je vois:

  • Tapisserie utilise un semi-statique de la page la structure, où vous pouvez travailler avec les conditions et les boucles pour atteindre comportement dynamique. Wicket est complètement dynamique; vous pouvez charger composants dynamiquement, de les remplacer au moment de l'exécution, etc. Les conséquences de ce sont cette Tapisserie est plus facile à optimiser, et que le Guichet est plus souple dans son utilisation.
  • Les deux cadres sont à peu près aussi efficace dans l'exécution, mais le Guichet s'appuie sur côté serveur de stockage (par défaut, le page en cours de session, et passé pages dans un "cache de second niveau", qui est par défaut un fichier temporaire dans le fichier système). Si cela vous ennuie, pense sur le nombre de sessions simultanées vous vous attendez à avoir aux heures de pointe et calculer avec les dis ~100ko par session (ce qui est probablement sur le côté haut). Cela signifie que vous pouvez exécuter à peu près soutien 20k sessions simultanées pour 2 GO. Dire 15k parce que vous avez besoin que de la mémoire pour d'autres choses aussi. De évidemment, l'inconvénient de stockage l'état, c'est que ça ne marchera bien avec l'affinité de session, donc c'est un limitation lors de l'utilisation de Guichet. L' cadre vous offre un moyen pour mettre en œuvre des apatrides pages, mais si vous êtes en développement entièrement apatrides les applications que vous pourriez envisager une cadre de référence différent.
  • Le guichet a pour objectif de soutenir le typage statique à la mesure, alors que la Tapisserie est plus sur l'enregistrement de lignes de code. Donc, avec la Tapisserie de votre base de code est probablement plus petit, ce qui est bon pour l'entretien, et avec Portillon, vous est statiquement typé, ce qui le rend plus facile à naviguer, avec un IDE et de vérifier avec un compilateur, qui est également bon pour la maintenance. Quelque chose à dire pour les deux à mon humble avis.

J'ai lu quelques fois maintenant que les gens pensent de Guichet fonctionne grâce à l'héritage d'un lot. Je tiens à souligner que vous avez un choix. Il existe une hiérarchie de composants, de Guichet, mais prend également en charge la composition de bien des constructions comme les IBehavior (sur le dessus de qui, par exemple, le Guichet de l'Ajax est construit). Sur le dessus de ce que vous avez des choses comme des convertisseurs et des validateurs, auquel vous ajoutez les composants, à l'échelle mondiale, ou même comme un transversales qui concernent l'utilisation de certains de la phase auditeurs de Guichet fournit.

36voto

Sergey Points 1943

RÉVISÉ après des études de Tapisserie 5.

Guichet de l'objectif est une tentative de faire du développement web semblables à GUI de votre bureau . Ils ont réussi à le faire vraiment bien, au détriment de l'utilisation de la mémoire ( HTTPSession ).

Tapisserie 5 l'objectif est de faire de très optimisé (pour le CPU et mémoire) de la composante orientée web framework.

Les très gros écueil pour moi a été de réponses "Guichet prend en charge apatrides composant!" arguments "de Guichet, c'est la mémoire de la faim". Alors que le Guichet en effet apatrides composants qu'ils ne sont pas "une priorité du Guichet de développement". Par exemple, un bug dans StatelessForm n'a pas été fixé pour un temps très long - voir StatelessForm - problème avec les paramètres après la validation échoue.

  • À mon humble avis à l'aide de Wicket est un peu eaiser jusqu'à ce que vous allez optimiser/ affiner les paramètres de l'application web
  • À mon humble avis Wicket est plus difficile à étudier si vous avez programmé des applications web et que vous voulez réfléchir en termes de traitement de la demande
  • Tapisserie 5 automatiquement recharge classes de composants dès que vous les modifiez. Les deux cadres de rechargement de la composante de balisage.
  • Guichet des forces de balisage/ code de la séparation, de la Tapisserie 5, juste pour vous donner cette capacité. Vous pouvez également utiliser moins verbeux syntaxe dans la Tapisserie 5. Comme toujours cette liberté nécessite plus de précautions à prendre.
  • Guichet de base est plus facile à déboguer: les composants utilisateur sont basées sur la succession de la Tapisserie à 5 de l'utilisateur composants sont basés sur les annotations. De l'autre côté qui pourrait faire des transitions pour les futures versions plus facile pour la Tapisserie puis pour le Guichet.

Malheureusement Tapisserie 5 tutoriel ne pas souligner que la Tapisserie exemple de code comme " t:boucle source="1..10"... " peut être une mauvaise pratique. Donc, des efforts devraient être mis par écrit pour la Tapisserie des conventions d'utilisation des bonnes pratiques si votre équipe n'est pas très petit.

Mes recommandations:

  • L'utilisation de Guichet lors de votre structure des pages est très dynamique et que vous pouvez vous permettre de dépenser 10-200 Kbs de HttpSession de la mémoire par l'utilisateur (ce sont des nombres approximatifs).
  • L'utilisation de la Tapisserie 5 dans le cas où vous avez besoin de plus efficace l'utilisation des ressources

10voto

Scott Swank Points 259

Voici une comparaison assez complète de Developer Works d'IBM.

http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.html?ca=drs

1voto

Antony Stubbs Points 4236

Je pense que Wicket est un framework plus simple à utiliser.

De plus, Wicket permet le rechargement de classe via le système de remplacement par code à chaud de votre IDE. C'est tout ce qui est requis pour que Wicket puisse exécuter des versions modifiées des classes d'une application en cours d'exécution. Les restrictions habituelles s'appliquent au remplacement de code à chaud, tel que devoir s'exécuter en mode débogage (Eclipse) et ne pas pouvoir changer les aspects structurels d'une classe (c'est-à-dire le nom de la classe, la modification des signatures de méthode, etc.).

1voto

deamon Points 15181

Je n'aime pas le modèle de programmation Tapestry et je connais de nombreux développeurs qui quittent Tapestry à cause de trop de changements et d'incompatibilités de développement. Voir: http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/

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