Frage

Ich arbeite derzeit an einer Web -App, die JSF und ICEFACES stark nutzt. Wir haben einige Diskussionen über den Umzug in eine andere Präsentationsebene geführt, und ich dachte, ich würde die Diskussion in SO herausnehmen und sehen, was die Experten denken.

Ich bin gespannt, ob jemand die Vor- und Nachteile der verschiedenen Java -Präsentationsschichttechnologien eindämmen könnte. Wenn Sie nur mit einem gearbeitet haben, sagen Sie, warum Sie es lieben oder hassen. Wenn Sie mit mehreren gearbeitet haben, geben Sie Ihre Eindrücke darüber, wie sie sich gegenseitig stapeln.

Unsere betrachteten Technologien sind:

  • Eisdeflächen
  • JSF (ohne Eisgefertigungen)
  • GWT (Google Web Toolkit)
  • Wicket
  • Tapisserie

Und wenn mir etwas aus meiner Liste fehlt, lassen Sie es mich wissen.

Vielen Dank!

War es hilfreich?

Lösung

Meine Meinungen sind ziemlich stark in Richtung Wicket voreingenommen, weil ich es eine Weile benutze, nachdem ich viel zu oft über JSP -Minen gestolpert habe.

Wicket Profis:

  • Wahre Trennung von Layout und Code.
  • Komponentenbasiert, was eine hohe Wiederverwendbarkeit von Standortelementen bedeutet; Sie können beispielsweise eine geschriebene Form mit automatischer Kennzeichnung und CSS -Stilen und allem erstellen. Wenn Sie das DAO -Objekt im Konstruktor der Komponente ändern, ist es in einem anderen Projekt vollständig wiederverwendbar.
  • Hervorragende Unterstützung für Dinge wie AJAX, Portlets und verschiedene Frameworks im Allgemeinen direkt außerhalb des Boxs, und vor allem ist es nicht auf etwas anderes als SLF4J/LOG4J zur Arbeit, alles ist optional!

Wicket Cons:

  • Die Entwicklung hat einige Verwirrung über Dinge im Allgemeinen und Wicket -Generika sind momentan ein bisschen durcheinander, obwohl sie in 1.4 viel gereinigt wurden
  • Einige Komponenten (wie Form.onSubmit()) Erfordern eine umfangreiche Unterklasse oder anonyme Methode, die das Injektionsverhalten leicht überschreibt. Dies ist teilweise auf das leistungsstarke eventbasierte Design von Wicket zurückzuführen, aber leider bedeutet es auch, dass es einfach ist, mit Wicket ein Code zu machen.

Zufällige Nachteile: (Das heißt, ich habe nicht verwendet, aber das sind meine Opionionen und/oder Dinge, die ich gehört habe)

  • GWT basiert auf JavaScript, was für mich dumm klingt. Hauptproblem ist, dass es mich zu viel an JSP: S und seine autogenerierten Klassen erinnert, die schrecklich sind.
  • Tapestry trennt Markup und Code nicht ordnungsgemäß in einer Weise, die leicht zwischen den beiden validiert werden kann, was in Zukunft Probleme verursacht.

Andere Tipps

Ich habe GWT für ein paar kleine Projekte verwendet. Hier sind einige Dinge, die ich daran mag:

  1. Es ist standardmäßig Ajax, also musste ich nicht machen Es macht Ajax, es kam einfach mit GWT ein.
  2. Es hat eine gute Trennung von Client und Server-Side-Code.
  3. Ich kann meinen Client-Code mit JUNIT mit dem Einheitstest testen
  4. Sie können knusprige, bissige Apps erstellen, vor allem, weil es Ajax ist.

Dinge, die ich nicht mag:

  1. Einige Dinge funktionieren nicht wie erwartet. Zum Beispiel habe ich Fälle gesehen, in denen Click -Ereignisse nicht wie erwartet abgefeuert wurden, also musste ich eine Problemumgehung machen.
  2. Auto-Deploy to Tomcat, der in Sonnenfinsternis läuft, hört manchmal auf, zu arbeiten, und ich konnte nie herausfinden, warum.

Die größte Frage, die ich stellen würde, ist, warum Sie die Präsentationsschicht ändern. Das ist ein sehr teurer Kosten und ich kann die Vorteile einer Technologie sehen, die die anderen um so viel wie die Kosten für die Änderung überwiegt ...

Zusamenfassend:

= Jsf =

Profis:

  • Komponentenarchitektur;
  • Viele Bibliotheken & Tools;
  • etwas gute Ideenunterstützung

Nachteile:

  • Schweres Gewicht, beide in CPU/Speicher und Lernkurve;
  • Wenn etwas nicht wie erwartet funktioniert, ist es schwierig zu debuggen

= Wicket =

Profis:

  • Leicht;
  • Sensible Templating System;
  • gute Tutorials;

Nachteile:

  • Referenzdokumentation ist nicht so gut organisiert und tief wie die Tutorials.
  • Das Entwicklungsteam hatte einige schwerwiegende Schwierigkeiten, insbesondere beim Werden und inkubierten Projekt. Dies führte zu Verwirrung über wichtige Aspekte des Frameworks. Zu dieser Zeit musste ich aufgrund dieses ...

Wie wäre es mit Streifen?

Meine Wahl wäre sein Wicket. Ich habe es verwendet und gibt eine hervorragende Wiederverwendbarkeit. Es hat eine der lebendigsten Forum-/Mailingliste. Als Frage und es wird in wenigen Minuten beantwortet. Es hat eine hervorragende Unterstützung für Ajax. Eine der üblichen Nachteile, die Wicket zugeschrieben werden, ist die steile Lernkurve. Nun, das waren eine der Altersbücher, die jetzt keinen Wert mehr haben.

JSF: Halten Sie sich besser davon fern. Ein weiteres Team, das ein Projekt auf JSF entwickelt hat, überlegt nun, nach unserem Erfolg zu Wicket zu wechseln.

@Megadix: Wie Sie sagten, war die Dokumentation am Anfang schlecht, aber nicht mehr. Es gibt ein ausgezeichnetes Buch mit dem Titel Wicket in Action, das von den Entwicklern von Wicket geschrieben wurde. Der auf der Website bereitgestellte Beispielcode ist auch ein guter Ort zum Starten und Lernen

Ich würde mich fragen, ob Sie eine Serviceschicht haben, die sich vom Web -Client unterscheidet, was die Webcontroller einfach aufrufen, um ihre Arbeit zu erledigen.

Wenn Sie dies tun, kann die Auswahl der Web -UI -Technologie vom hinteren Ende entkoppelt werden. Wenn es als Vertragserster Web -Service ausgesetzt ist, können Sie sie verschiedene Apps teilen lassen. Solange Ihre Kunden XML senden und empfangen können, können sie mit Ihren Diensten interagieren. Möchten Sie zu Flex wechseln? Keine Sorge - weisen Sie ihn auf den Dienst und rendern Sie die XML -Antwort.

Siehe meinen Vergleich von Wicket und Tapisserie 5: Unterschied zwischen Apache Tapestry und Apache Wicket.

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