Frage

Mein Team ist mit einem Web-Frontend ein neues Service-orientierte Produkt zu entwickeln. In der Diskussion darüber, welche Technologien nutzen wir, wir haben über die Führung einen JBoss Application Servers angesiedelt, und Flex-Frontend (mit möglicher Desktop-Bereitstellung unter Verwendung von Adobe AIR) und Web Services Client und Server zu verbinden.

Wir haben in eine Sackgasse geraten, wenn es um die Server-Technologie kommt für unsere Business-Logik zu verwenden. Das große Argument ist zwischen EJB3 und Spring, mit unseren größten Sorgen sind, Skalierbarkeit und Leistung, und auch die Wartbarkeit der Code-Basis.

Hier sind meine Fragen:

  1. Was sind die Argumente für oder gegen EJB3 vs Spring?
    • Welche Fallen kann ich erwarten, mit jedem?
    • Wo finde ich gute Benchmark-Informationen?
War es hilfreich?

Lösung

Es wird nicht viel Unterschied zwischen EJB3 und Spring auf Leistung basieren. Wir entschieden uns für Frühling aus den folgenden Gründen (nicht in der Frage erwähnt):

  • Feder treibt die Architektur in eine Richtung, die mehr Komponententests ohne weiteres unterstützt. Zum Beispiel injiziert ein Mock DAO-Objekt-Einheit testen Sie Ihre Business-Schicht oder Spring MockHttpRequest Objekt Unit-Test ein Servlet verwenden. Wir pflegen eine separate Feder Config für Unit-Tests, die uns Tests auf die spezifischen Schichten isolieren können.
  • Ein übergeordneter Fahrer war Kompatibilität. Wenn Sie mehr als eine App Server unterstützen (oder wollen schließlich die Möglichkeit von JBoss zu bewegen, um Glasfischen, etc.), werden Sie im Wesentlichen Ihre Container tragen (Frühling) mit Ihnen, anstatt sich auf die Kompatibilität zwischen verschiedenen Implementierungen der EJB3-Spezifikation.
  • Frühling ermöglicht Technologie seiner Wahl für Persistenz, Objekt-Remoting, etc. Zum Beispiel, wir sind auch einen Flex-Frontend und werden mit dem hessischen Protokoll für die Kommunikation zwischen Flex und Frühling.

Andere Tipps

Die Lücke zwischen EJB3 und Spring ist viel kleiner, als es war, deutlich. Das heißt, einer der Nachteile zu EJB3 jetzt ist, dass Sie nur in eine Bohne injizieren, so dass Sie drehen Komponenten in Bohnen am Ende, dass seine nicht müssen.

Das Argument über Unit-Tests ist ziemlich irrelevant jetzt -. EJB3 ist übersichtlich gestaltet leichte Einheit überprüfbar sein

Die Kompatibilität Argument oben ist auch Art irrelevant: ob Sie EJB3 oder Frühling verwenden, sind Sie immer noch darauf angewiesen, 3rd-Party-bereitgestellt Implementierungen von Transaktionsmanager, JMS, etc

.

Was es für mich schwingen würde jedoch ist die Unterstützung durch die Gemeinschaft. Die Arbeit an einem EJB3-Projekt im vergangenen Jahr gab es nicht nur eine Menge Leute da draußen mit ihm und reden über ihre Probleme. Frühling, zu Recht oder zu Unrecht, ist extrem allgegenwärtig, particularlty im Unternehmen, und das macht es einfacher, jemanden zu finden, der das gleiche Problem bekommt ist man versucht zu lösen.

Was sind die Argumente für oder gegen EJB3 vs Spring? Der Frühling ist immer innovativ und erkennt reale Zwänge. Frühling angeboten Einfachheit und Eleganz für die Java 1.4-Anwendungsserver und nicht eine Version der J2EE-Spezifikation erfordert, dass niemand Zugang hatte im Jahr 2004 - 2006. An diesem Punkt wird es fast eine religiöse Debatte, die Sie saugte in bekommen - Frühling + Abstraktion + Open-Source im Vergleich zu Java Enterprise Edition (Java EE) 5.0 Spezifikationen.

Ich denke, Frühling ergänzt mehr als konkurriert mit den Java EE Spezifikationen. Da die Funktionen, die zum Frühjahr einmal einzigartig waren weiterhin in die Spezifikation erhalten gerollt, viele werden argumentieren, dass EJB 3 bietet ein ‚gut genug‘ Feature-Set für die meist internen Business-Anwendungen.

Welche Fallen kann ich mit jedem erwarten? Wenn Ihr dies als Persistenz Problem Behandlung (Spring + JPA) im Vergleich zu EJB3 Ihr wirklich nicht machen, dass große Wahl.

Wo finde ich gute Benchmark-Informationen? Ich habe nicht folgten die specj Benchmark-Ergebnisse für einige Zeit, aber sie waren beliebt für eine Weile. Es scheint, dass jeder Anbieter (IBM, JBOSS, Oracle und Sun) bekommt immer weniger daran interessiert, einen kompatiblen Server mit. Die Listen werden kürzer und kürzer von zertifizierten Anbietern wie Sie von 1.3 gehen, 1.4. 1.5 Java Enterprise Edition. Ich denke, die Tage eines riesigen Server, der vollständig kompatibel mit allen Spezifikationen ist, sind vorbei.

Ich würde auf jeden Fall EJB3 über Frühling empfehlen. Wir finden, dass es schlanker, schöner, Code in und besser unterstützt. Ich habe in der Vergangenheit verwendete Frühling und fand es sehr verwirrend zu sein, und nicht so gut wie EJB3 dokumentiert (oder PPV ich am Ende des Tages erraten)

  1. Ab EJB3 müssen Sie nicht mehr mit externen Konfigurationsdateien umgehen, und es gibt nur eine POJO, die Sie pro Datenbanktabelle mit Anmerkungen versehen. Diese POJO kann ohne Probleme auf Ihre Web-Tier weitergegeben werden. IDEs wie Netbeans können diese POJOs für Sie sogar automatisch generieren. Wir haben für etliche Anwendungen im großen Maßstab EJB3 jetzt als Backend verwendet und haben keine Performance-Probleme bemerkt. Ihre Session Beans kann ganz einfach als Web-Service ausgesetzt werden, die Sie zu Ihrem Flex-Frontend aussetzen könnten. Session Beans sind einfach entweder ein Verfahren oder eine Klassenstufe zu sperren, um Rollen und ähnliche zuweisen, wenn Sie müssen.

Das kann ich nicht viel über den Frühling sprechen, wie ich es nur versucht, für ein paar Wochen. Aber mein Gesamteindruck war sehr schlecht. Das bedeutet nicht, es ist schlecht Rahmen, aber unser Team hier hat EJB3 als die beste für die Persistenz / Business-Schicht gefunden.

Ich neige dazu, Frühling über EJB3 bevorzugen, aber meine Empfehlung wäre, je nachdem, was nähern Sie nehmen, versuchen zu schreiben POJOs zu bleiben und die Standard-Annotationen, wo möglich zu verwenden, wie die JSR Anmerkungen wie @PostConstruct, @PreDestroy und @Resource welcher Arbeit sowohl mit EJB3 oder Frühling so können Sie wählen, je nachdem, welcher Rahmen Sie es vorziehen.

z. Sie an einem Projekt entscheiden können Guice stattdessen für IoC zu verwenden.

Wenn Sie Injektion Vorbitte so verwenden, wie in einer Web-Anwendung finden Sie vielleicht Guice ist ein bisschen schneller für Dependency Injection als Frühling.

Session Bohnen meist auf Dependency Injection einkochen und Transaktionen; so EJB3 und Spring ist irgendwie ähnlich wirklich dafür. Wo Frühling hat, ist die Kante auf bessere Dependency Injection und schöner Abstraktionen für Dinge wie JMS

Ich habe eine sehr ähnliche Architektur in der Vergangenheit verwendet. Spring + Java 1.5 + Actionscript 2/3, wenn sie mit Flex Data Services kombiniert machte es sehr einfach (und Spaß!), Um Code. obwohl ein Flex Front-End bedeutet, dass Sie benötigen ausreichend leistungsfähigen Client-Maschinen.

In Bezug auf Ihre Frage:

  

Was sind die Argumente für oder gegen EJB3 vs Spring?

Ich schlage vor, das Lesen der Antwort von den Experten: Eine Antwort auf: EJB 3 und vergleichende Analyse SPRING von Mark Fisher . Lesen Sie die Kommentare Reza Rahman Bemerkungen (EJB 3.0) zu finden.

Eine andere Sache zugunsten des Frühlings ist, dass die meisten anderen Werkzeuge / Frameworks da draußen mit Feder eine bessere Unterstützung für die Integration, die meisten von ihnen Frühling verwenden sowohl intern als auch (zum Beispiel activemq, Kamel, CXF usw.).

Es ist auch reifer und es gibt viel mehr Ressourcen (Bücher, Artikel, Best Practices, etc.) und erfahrene Entwickler zur Verfügung als für EJB3.

Ich denke, EJB ist eine gute Komponententechnologie, aber keine guter framework.Spring ist der beste Rahmen als von today.So i Frühling als die beste Umsetzung von JEE im Sinne eines Rahmens in Betracht ziehen sollte, und meine Empfehlung ist, zu verwenden, Frühling in jedem Projekt, das uns die Flexibilität, mit jeder Komponenten-Technologie zu integrieren, gibt leicht.

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