2010-02-12 12 views
62

Ich habe Struts Framework in allen meinen früheren Anwendungen verwendet und für die neue Anwendung hat mein Client entweder Spring MVC oder JSF angefordert? Ich kenne diese beiden Rahmen nicht, aber unsere Zeitpläne sind streng. Also, ich bin mir nicht sicher, welchen Rahmen ich wählen werde, um die Anwendung zu erstellen.Spring MVC vs JSF

Kann mir bitte jemand vorschlagen, welcher Rahmen leicht in kürzester Zeit zu lernen sein wird?

Dank

+0

Verwenden Sie den Rest des Spring Stacks lange damit? – Drew

+0

Danke Experten für die Antworten. Ich denke auch jetzt an Spring MVC statt JSF. Unser Webdesigner hat uns die statischen htmls zur Verfügung gestellt und ich denke, es wäre schwierig, die statischen htmls in JSF-Seiten zu konvertieren (da es die UI-Komponente verwendet). Ich hoffe, Spring MVC bietet auch ähnliche Tags wie Struts Logik: iterieren .. – Yatish

+1

Ja, wenn Sie HTML-Seiten von einem Webdesigner haben, ist es viel einfacher, sie für Spring MVC Ansichten zu verwenden, als sie in JSF-Komponenten konvertieren. Wie für das Tag - ich glaube, ich habe normalerweise nur das JSTL c: forEach-Tag dafür verwendet. Die Spring Taglibs sind ziemlich klein - http://static.springsource.org/spring/docs/2.0.x/reference/spring.tld.html - aber JSTL Taglibs werden auch verwendet - weil Modellobjekte nur POJOs/JavaBeans JSTL sind fein. – Nate

Antwort

48

Natürlich ist es für jeden anders sein wird, aber ich würde vorschlagen, Spring MVC, wie es Frameworks wie Struts ein Wunsch-basiert. Natürlich wirst du etwas über grundlegende Spring-Sachen wie Inversion von Control/Dependency Injection lernen (aber ich würde das als ein Plus betrachten ...) und was immer du für den Datenbankzugriff verwenden willst (nur JDBC? Hibernate? iBatis? usw.).

JSF ist komponentenbasiert, was ein etwas anderes Paradigma als auf Anfrage basierende Frameworks ist. Wenn Sie planen, die JSF-Route zu gehen, würde ich vorschlagen, Seam von JBoss zu betrachten. Es ist eher ein Front-to-Back-Framework, das JSF als Web-/Präsentationsende und EJB als Backend verwendet. Und so ziemlich alle Leute, die es benutzt haben, behaupten, dass es JSF und EJB nützlicher macht als sie selbst.

Viel Glück auf der Technologie, die Sie wählen, obwohl. (Klingt wie Sie sie brauchen - strenge Fristen und einen Client, die Web-Frameworks ist verschreiben?)

+4

Nur ein FYI: JSF 2 hat einige nette Features, die Seam entwickelt hat (Conversation Scope, CDI), und verwendet statt XML stark Annotationen. Es scheint viel angenehmer zu sein als mit JSF 1.2 und früheren Versionen. –

22

ich SpringMVC vorschlagen würde, wegen des Zeitrahmen:

  • Sie etwas mit weniger steilen Lernkurve benötigen. SpringMVC ist mehr wie Struts als JSF
  • , um die Leistung von JSF verwenden Sie mit vielen „Tricks“ vertraut machen müssen, während SpringMVC mehr oder weniger einfach ist
8

Ich würde vorschlagen, JSF + Primefaces Komponente Bibliothek. Ich verwende diese Kombination, um die meisten unserer Projekte zu bauen. Soweit ich mich erinnere, verbrachte ich eine Woche damit, die Technologie zu lernen und beendete mein erstes Projekt in einem Monat. Die Entwicklungszeit ist mindestens 30% schneller als bei Struts.

SpringMVC ist keine schlechte Technologie und es ist sehr beliebt.

Wirklich hängt davon ab, welchen du am liebsten magst.

+4

Mein Team hatte ein paar Tage lang mit dieser Entscheidung zu kämpfen, bevor er erkannte, wie leistungsfähig Primefaces (und Primefaces Mobile) wirklich war. Wohlgemerkt, Primefaces ist nicht perfekt; Wir mussten von Zeit zu Zeit einige Javascript- und CSS-Hacks in unserer .xhtml schreiben, um Unterschiede im Browser-Rendering zu berücksichtigen. Primefaces hält es jedoch einfach und leistungsstark - RAD vom Feinsten. – fuzzyanalysis

5

Natürlich möchten Sie über Kern Frühling Sachen wie Inversion of Control/Dependency Injection lernen (aber ich, dass ein Plus betrachten würde ...)

JSF in der Tat auf basiert IoC, und viel einfacher als die Frühjahrskurve.

+0

Mmm könnten Sie ein Beispiel angeben, wo JSF IoC verwendet? –

+0

Ja, ich nehme an, es ist IoC. War nur eine Frage, da du es in der Antwort oben nicht geklärt hast ;-) Übrigens, obwohl ich ein JSF-Unterstützer bin, muss ich zugeben, dass die Lernkurve je nach deiner Erfahrung und deinem Wissen variieren kann, nicht wahr? –

+1

Beispiel: In JSF verwenden Sie Annotationen in einer Bean, um andere Beans zu injizieren: Angenommen, Bean1 ist eine Instanz von SomeBean1. Verwenden Sie in einer anderen Bean @ManagedProperty (Wert = "# {Bean1}"). Platziere das vor der Deklaration der Eigenschaft, die injected bean1 akzeptiert: private transient SomeBean1 refToBean1; Alternativ kann dies auch in faces-config für die Ziel-Bean verwendet werden: refTobean1 # {bean1}. –

4

JSF ist nur die Ansichtsebene des MVC und muss mit anderen Technologien wie Spring/Hibernate oder EJB für eine vollständige MVC verwendet werden.

Ich benutze die Spring MVC seit etwa 1 Monaten, während es wahrscheinlich nicht die letzte Version von SpringMVC ist Ich fand es ein wenig ärgerlich, dass wir so viel XML zu bewältigen haben. Alle verwalteten Beans und DAO verfügen über eine XML-Konfiguration. Auch scheint alles durch eine Methode namens onSubmit() gehen zu müssen.

JSF mit etwas wie EJB ist meiner Meinung nach viel einfacher ... Alles kann mit Annotationen gemacht werden, also benutze @ ManagedBean = theBean einfach in deinem Backing Bean und in deinem JSF put {thebean.param} und Sie haben Zugriff auf die Daten des Backing-Beans. Außerdem können Sie die Session-Beans Ihres EJB als Backing-Beans für JSF verwenden und dann direkten Zugriff auf die Entity-Bean DAO (Model-Layer) haben. Erneut einfach mit der @Entity-Annotation und der EntityManager-Klasse

Spring MVC ist ein Web-Framework innerhalb des Spring-Frameworks. Es bietet Funktionen wie die in JSF 2.0: Ajax-Unterstützung Validierung Abhängigkeit-Injektion etc Sie können jedoch Spring (nicht Spring MVC) zusammen mit JSF 2.0, mit Feder die Abhängigkeit-Injektion, AOP, Transaktionsmanagement Mechanismen und JSF zur Bereitstellung der Web-Schicht.

+8

"JSF mit etwas wie EJB ist viel einfacher ..." ist nicht wahr. Mit SpringMVC, seit 2.5, haben Anwendungen die Möglichkeit Annotations-gesteuert zu werden und alles kann mit Annotationen mit minimaler XML-Konfiguration gemacht werden. –

+3

"Ich benutze die Spring MVC jetzt seit ungefähr 1 Monaten" Wenn du gerade erst mit Spring beginnst, wie siehst du, dass du geschickt genug bist, Spring gegen JSF zu wiegen? –

+0

(sic) "Ich habe es ein wenig ärgerlich gefunden, dass wir so viel XML zu verarbeiten haben" ist definitiv kein gültiges Argument mehr. Sie können alle Ihre Komponenten im Frühjahr mit Annotationen deklarieren und haken (ab v3).Die Dualität ist sehr praktisch, da Sie "zentralisierte" XML-basierte Konfig-Metadaten mit im Code verteilten Annotationen mischen können, indem Sie die ersteren verwenden, um z. B. die Dev-/Test-/Qual/Prod-Profile an einer Stelle zu steuern, und das spätere Verwalten aller Bindungen, die nicht von einer Laufzeitumgebung abhängen, sondern von Ihrer intrinsischen Komponentenarchitektur abgeleitet sind. – berhauz