Frage

Apache Wicket ( http://wicket.apache.org/ ) und Apache Tapestry ( http://wicket.apache.org/ ) ist sowohl die Komponente orientierte Web-Framework s - im Gegensatz Handlungs basierte Frameworks wie Streifen - von der Apache Foundation. Beide können Sie Ihre Anwendung von Komponenten in Java bauen. Sie sehen beide sehr ähnlich zu mir .

Was sind die Unterschiede zwischen diesen beiden Frameworks? Hat jemand Erfahrung in beide? Im Einzelnen:

  • Wie ihre Leistung ist, wie viel Handhabung angepasst werden feststellen können, können sie verwendet staatenlos werden
  • Was ist der Unterschied in ihrem Komponentenmodell?
  • Was würden Sie für die Anwendungen wählen?
  • Wie integrieren sie mit Guice, Frühling, JSR 299?

Bearbeiten : Ich habe die Dokumentation zu lesen und ich habe beide verwendet. Die Fragen können nicht mit ausreichender beantwortet werden aus der Dokumentation zu lesen, aber aus der Erfahrung von diesem für einige Zeit, z.B. wie Wicket in einem Stateless-Modus für hohe Leistung Websites zu verwenden. Danke.

War es hilfreich?

Lösung

Einige relevante Unterschiede, wie ich sehe sie:

  • Tapestry verwendet eine semi-statische Seite Struktur, in der Sie mit arbeiten können Bedingungen und Schleifen zu erreichen, dynamisches Verhalten. Wicket ist vollständig dynamisch; Sie können laden Komponenten dynamisch, ersetzen zur Laufzeit, usw. Die Folgen dies ist, dass Tapestry leichter optimieren, und das Wicket ist mehr in seiner Anwendung flexibel.
  • Beide Frameworks etwa gleich effizient sind in Ausführung, sondern verlässt sich auf Wicket Serverseite Speicher (standardmäßig der aktuelle Seite in der Sitzung, und Vergangenheit Seiten in einer ‚zweiten Ebene cache‘, die eine temporäre Datei in der Datei wird standardmäßig System). Wenn das Sie stört, denken darüber, wie viele gleichzeitige Sitzungen erwarten Sie in Spitzenzeiten haben und Berechnung mit etwa ~ 100 kb pro Sitzung (Was wahrscheinlich auf der hohen Seite). Das bedeutet, dass Sie ausführen können grob Unterstützung 20k gleichzeitige Sitzungen für 2GB. Sagen 15k, weil Sie müssen, dass als auch Speicher für andere Dinge. Von natürlich ein Nachteil des Speicherns Zustand ist, dass es nur dann gut funktionieren wird mit Session-Affinität, das ist so ein Einschränkung bei der Verwendung von Wicket. Das Framework bietet Ihnen mit einem Mittel zu implementieren staatenlos Seiten, aber wenn Sie entwickeln völlig staatenlos Anwendungen, die Sie interessieren könnten ein verschiedene Rahmen.
  • Wicket Ziel ist es statische Typisierung in vollem Umfang zu unterstützen, während Tapestry mehr über das Speichern von Code-Zeilen ist. Also mit Tapestry Ihrer Codebasis ist wahrscheinlich kleiner, was für die Wartung gut ist, und mit Wicket, ist man viel statisch typisiert, was es einfacher macht, mit einer IDE und überprüfen Sie mit einem Compiler zu navigieren, die auch für die Wartung gut ist. Etwas zu sagen für beide imho.

Ich habe ein paar Mal jetzt gelesen, dass Leute denken, Wicket durch Vererbung arbeitet viel. Ich möchte betonen, dass Sie die Wahl haben. Es gibt eine Hierarchie von Komponenten, aber auch Wicket unterstützt Zusammensetzung obwohl Konstrukte wie IBehavior (auf deren Oberseite z.B. Wicket Ajax Unterstützung gebaut ist). Obendrein haben Sie Dinge wie Konverter und Validatoren, die Sie Komponenten hinzufügen, global oder sogar als Querschnitt betrifft einige der Phase Zuhörer mit Wicket bietet.

Andere Tipps

REVISED nach dem Studium der Tapestry 5.

Wicket Ziel ist ein Versuch, zu machen Web-Entwicklung ähnlich wie Desktop-GUI ein. Sie schafften es wirklich gut auf Kosten der Speichernutzung zu tun (Httpsession).

Tapestry 5 hat sich zum Ziel ist machen sehr optimiert (für CPU und Speicher) Komponente orientierte Web-Framework.

Die wirklich große Gefahr für mich war Antworten "Wicket unterstützt staatenlos Komponente!" auf die Argumente „ist Wicket Speicher hungrig“. Während in der Tat Wicket staatenlos Komponenten unterstützt sind sie nicht „ein Schwerpunkt der Wicket Entwicklung“. Zum Beispiel in StatelessForm ein Fehler war nicht für eine sehr lange Zeit festgelegt - siehe StatelessForm -. Problem mit Parametern nach Validierung fehlschlägt

  • IMHO mit Wicket ist ein bisschen eaiser, bis Sie optimieren gehen / Feinabstimmung Web-Anwendung Parameter
  • IMHO Wicket ist schwieriger zu studieren, wenn Sie Web-Anwendungen programmiert haben und in Bezug auf die Anforderungsverarbeitung denken
  • Tapestry 5 automatisch nachlädt Komponentenklassen , sobald Sie sie ändern. Beide Frameworks nachladen Komponente Markup.
  • Wicket Kräfte Markup / code Trennung , Tapestry 5 geben Sie nur diese Fähigkeit. Sie können auch weniger ausführlich Syntax in Tapestry verwenden 5. Wie immer diese Freiheit mehr Vorsichtsmaßnahmen erfordert genommen werden.
  • Wicket Kern ist einfacher zu debuggen: Benutzerkomponenten basiert auf Vererbung während Tapestry 5 Benutzerkomponenten auf Annotationen basieren. Von der anderen Seite, die Übergänge zu den zukünftigen Versionen einfacher für Tapestry dann für Wicket machen könnte.

Leider Tapestry 5 Tutorial nicht, dass Tapestry Codebeispiel wie ‚t nicht betonen : Schleife source = „1..10“ ...‘kann eine schlechte Praxis sein. So sollten einige Mühe in das Schreiben Tapestry Nutzung Konventionen gestellt werden / bewährten Verfahren, wenn Ihr Team nicht sehr klein ist.

Meine Empfehlungen :

  • Verwenden Sie Wicket, wenn Ihre Seiten Struktur ist sehr dynamisch und Sie können pro Benutzer (diese sind grobe Zahlen).
  • Ausgaben 10-200 Kbs von Http Speicher leisten
  • Verwenden Sie Tapestry 5 in Fällen, wenn Sie eine effizientere Nutzung der Ressourcen benötigen

Ich denke, Wicket ist ein einfacher Rahmen zu verwenden.

Auch Wicket erlaubt für Klasse Nachladen über Ihre IDE Hot-Code-System ersetzen. Das ist alles, was erforderlich ist für Wicket modifizierte Versionen einer zur Zeit der Klassen laufenden Anwendung ablaufen. Die üblichen Einschränkungen gelten für Hot-Code zu ersetzen, wie mit in Debug-Modus (Eclipse) und nicht in der Lage zu ändern strukturelle Aspekte eine Klasse (das heißt Klassenname, Ändern Methodensignaturen etc ...).

laufen

Ich mag das Tapestry-Programmiermodell nicht und ich kenne viele Entwickler Tapestry verlassen, weil zu viele Veränderungen und Inkompatibilitäten in der Entwicklung. Siehe: http: //ptrthomas.wordpress .com / 2009/09/14 / perfbench-update-Tapisserie-5-und-Grails /

Wicket ist sehr gut Web-Framework. Beste von allen, was ich weiß. Ich bin es verwenden, da die Version 1.3 und immer bekommen, was ich bin wollen. Wicket hat eine hervorragende Integration mit Spring - nur @SpringBean Anmerkung in Sie Code verwenden jede Feder Bean Ihre Klassen zu injizieren.

Versuchen Sie http://incubator.apache.org/click/ . Es ist erstaunlich, Java Web-Framework. Manche Leute nennen es „Wicket richtig gemacht“; -)

Wie gesagt, wenn 4.1 die offizielle stabile Version war:

Sie sollten einen sehr guten Blick auf die Entwicklungsgeschichte der Tapestry nehmen bevor sie sich, es zu benutzen. Tapestry hat eine Menge nicht-kompatible Upgrades durchgeführt, ohne weitere Unterstützung von älteren Versionen. Patches 4.1 werden nicht mehr innerhalb eines angemessenen Zeitraums bearbeitet. Das ist in meiner Sicht nicht akzeptabel für die offizielle stabile Version.

Begehen Tapestry 5 Mittel zu verwenden:

Sie sollten ein Committer werden; Sie müssen mit allen neuen Entwicklung Schritt zu halten, verzichten alte Versionen so schnell wie möglich; pflegen stabile Versionen selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top