2009-09-15 7 views
7

Ich habe mich vor kurzem hingesetzt, um eine einfache Rails-App zu portieren, die ich zu JSF habe (mit Seam), um ein Gefühl zu bekommen, für das ich produktiver sein würde. Die Rails-App ist RESTful, was ich mag. Als ich mit JSF anfing, war ich überrascht zu erfahren, dass JSF möglicherweise nur POSTs unterstützt, was es inhärent nicht RESTful macht.Ist RESTful JSF möglich?

Ich suchte ein wenig, aber kann keine befriedigende Antwort finden. JSF/Seam scheint sehr populär zu sein, aber es macht für mich keinen Sinn, dass es alle HTTP-Methoden verbieten würde, außer POST. Ist es wahr, dass JSF inhärent keine REST-konforme Architektur zulässt, oder liege ich falsch und RESTful JSF ist möglich (inhärent oder über ein Plug-in)?

Antwort

4

Hier ist ein blog post that works through this question, obwohl es keine festen Schlussfolgerungen erreicht.

In meiner persönlichen Erfahrung, JSF/Seam sind nicht wirklich sehr beliebt, zum großen Teil aufgrund dieser Art von Problemen. Es scheint sehr schwer zu sein, weg von der zugrunde liegenden Natur des Webs zu abstrahieren, und dann bricht Dinge wie GET. Das Update (für jedes Problem, das Sie haben) ist immer "in der nächsten Version" oder "nicht wirklich ein Problem, wenn Sie gute Werkzeuge haben." YMMV, aber ich würde wahrscheinlich einen anderen Stapel ansehen.

Ich habe gute Dinge über Restlet gehört, und ich sehe, dass Struts 2 eine REST plugin hat. Mit Spring 3 hat Spring MVC added support for REST. Ich habe mit Grails gearbeitet, und es machte RESTful Dinge ziemlich einfach. Es hat den zusätzlichen Bonus, dass es Ihnen sehr vertraut sein sollte, da Sie Erfahrung mit Rails haben.

+0

Dank. Dein Link hat einen Kommentar zu Seam, der REST unterstützt, also werde ich mir das auch ansehen. Rails scheint bisher die eleganteste zu sein, aber ich möchte sicherstellen, dass ich mir andere Hauptanwärter (einschließlich der Grails) ansehe. – SingleShot

+4

Dieser Artikel ist nicht genau über Seam und REST. Er vergleicht RoR Controller mit Seams Unterstützung für JAX-RS. Verschiedene Dinge. Ein genauerer Vergleich ist RoR Controllers to Seam Page Actions. – Damo

3

JSF mit Naht kann GET gut tun. Es hängt nur davon ab, was Sie damit machen wollen. JSF verwendet Post normalerweise, um Ihre Felddaten zum Backend zu bringen. Viele JSF-Sachen funktionieren mit Post. Aber Sie können sicherlich GET mit Seam Page-Parametern verwenden oder auch nur zum zugrundeliegenden HTTPRequest-Objekt gelangen.

Jetzt funktioniert die größere RESTful-Architektur, ja, nicht gut mit JSF. Fühlen Sie sich jedoch frei, JSF für Ihre Benutzerschnittstelle und JAX-RS für Ihre RESTful-API zu verwenden. Beide können glücklich nebeneinander leben.

2

Abhängig von Ihren genauen Anforderungen (REST als API oder mehr als Mittel zum Abrufen von URLs mit Lesezeichen) ist Seam weiter als weiter. Ein Artikel von den Seam-Entwicklern befindet sich unter , wo er die neuen REST-Funktionen demonstriert. Unter anderem, wie Sie den vollständigen Zugriff auf eine Entität über eine RESTful-API mit nur vier XML-Zeilen bereitstellen können.

Wenn Sie nur für bookmarkbar gehen, müssen Sie sorgfältig entwerfen, wie Sie Dinge (zusammen) in Ihren JSF-Seiten und -Flüssen verknüpfen, obwohl Seam 2.2 einige Funktionen hinzugefügt hat, um dies zu vereinfachen.