Czy powinienem używać EJB3 lub Spring dla mojej warstwy biznesowej?

Mój zespół opracowuje nowy produkt zorientowany na usługi z webowym front-endem. W dyskusjach na temat technologii, z których będziemy korzystać, zdecydowaliśmy się na uruchomienie serwera aplikacji JBoss, Flex frontend (z możliwością wdrożenia desktopowego za pomocą Adobe AIR) oraz web services do interfejsu klienta i serwera.

Osiągnęliśmy impas, jeśli chodzi o to, którą technologię serwerową użyć do naszej logiki biznesowej. Wielki spór toczy się między EJB3 a Springiem, z naszymi największymi obawami jest skalowalność i wydajność, a także konserwowalność bazy kodu.

Oto moje pytania:

  1. jakie są argumenty za lub przeciw EJB3 vs Spring?
    • jakich pułapek mogę się spodziewać po każdej z nich?
    • Gdzie mogę znaleźć dobre informacje o benchmarku?
Author: Justin Standard, 2008-09-16

9 answers

Nie będzie dużej różnicy między EJB3 a Springiem w zależności od wydajności. Wybraliśmy wiosnę z następujących powodów (nie wymienionych w pytaniu):

  • Spring napędza architekturę w kierunku, który łatwiej obsługuje testy jednostkowe. Na przykład, wstrzyknij obiekt mock DAO do testowania jednostkowego warstwy biznesowej lub użyj obiektu Mockhttprequest Springa do testowania jednostkowego serwletu. Utrzymujemy osobny Spring config dla testów jednostkowych, który pozwala nam izolować testy do konkretne warstwy.
  • nadrzędnym sterownikiem była kompatybilność. Jeśli potrzebujesz obsługiwać więcej niż jeden serwer aplikacji (lub ewentualnie chcesz opcję przejścia z JBoss do Glassfish, itp.), będziesz zasadniczo nosić ze sobą kontener (sprężynę), zamiast polegać na kompatybilności między różnymi implementacjami specyfikacji EJB3.
  • Spring pozwala na wybór technologii dla trwałości, remotingu obiektów itp. Na przykład, używamy również Flex front end i są korzystanie z protokołu Hessian do komunikacji między Flex i Spring.
 72
Author: John Stauffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 12:07:55

Różnica między EJB3 a sprężyną jest znacznie mniejsza niż była, oczywiście. To powiedziawszy, jednym z minusów EJB3 jest teraz to, że możesz wstrzykiwać tylko do fasoli, więc możesz skończyć zamieniając komponenty w fasolę, która nie musi być.

Argument o testowaniu jednostkowym jest teraz dość nieistotny - EJB3 jest wyraźnie zaprojektowany tak, aby łatwiej było testować jednostkowo.

Powyższy argument zgodności jest również trochę nieistotny: niezależnie od tego, czy używasz EJB3, czy Springa, nadal polegasz na 3rd firmowe wdrożenia menedżerów transakcji, JMS itp.

To, co by mi pomogło, to jednak wsparcie ze strony społeczności. Pracując nad projektem EJB3 w zeszłym roku, nie było zbyt wielu ludzi, którzy używali go i rozmawiali o swoich problemach. Wiosna, słusznie czy niesłusznie, jest niezwykle wszechobecna, szczególnie w enterprise, a to ułatwia znalezienie kogoś, kto ma ten sam problem, który próbujesz rozwiązać.

 37
Author: fiddlesticks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-05 13:29:19

Jakie są argumenty za lub przeciw EJB3 vs Spring? Wiosna zawsze wprowadza innowacje i dostrzega rzeczywiste ograniczenia. Spring oferował prostotę i elegancję dla serwerów aplikacji Java 1.4 i nie wymagał wersji specyfikacji J2EE, do której nikt nie miał dostępu w latach 2004 - 2006. W tym momencie jest to prawie Religijna debata, w którą można się wciągnąć-Spring + abstraction + open-source versus Java Enterprise Edition (Java EE) 5.0 specifications.

Myślę, że Spring uzupełnia więcej niż konkuruje ze specyfikacją Java EE. Ponieważ funkcje, które kiedyś były unikalne dla Spring, nadal są wprowadzane do specyfikacji, wielu twierdzi, że EJB 3 oferuje "wystarczająco dobry" zestaw funkcji dla większości wewnętrznych aplikacji biznesowych.

Jakich pułapek mogę się spodziewać po każdej z nich? Jeśli traktujesz to jako problem trwałości (wiosna+JPA) w porównaniu do EJB3, naprawdę nie dokonujesz tak dużego wyboru.

Gdzie można Znajduję dobre informacje o benchmarku? Od jakiegoś czasu nie śledziłem wyników Spec benchmark, ale były one popularne przez jakiś czas. Wydaje się, że każdy dostawca (IBM, JBOSS, Oracle i Sun) coraz mniej interesuje się posiadaniem zgodnego serwera. Listy stają się coraz krótsze od certyfikowanych dostawców w miarę przechodzenia od 1.3, 1.4. 1.5 Java Enterprise Edition. Myślę, że czasy gigantycznego serwera, który jest w pełni zgodny ze wszystkimi specyfikacjami minęły.

 18
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 12:33:52

Zdecydowanie polecam EJB3 na wiosnę. Uważamy, że jest bardziej usprawniony, łatwiejszy w kodowaniu i lepiej wspierany. W przeszłości używałem Springa i uznałem go za bardzo mylący i nie tak dobrze udokumentowany jak EJB3 (lub JPA chyba na koniec dnia)

  1. od EJB3 nie musisz już zajmować się zewnętrznymi plikami konfiguracyjnymi, a jest tylko jedno POJO, które dodajesz w tabeli bazy danych. To POJO można przekazać do warstwy sieci Web bez żadnych problemów. IDE jak Netbeans może nawet automatycznie wygenerować te Pojo dla Ciebie. Użyliśmy EJB3 teraz jako zaplecza dla wielu aplikacji na dużą skalę i nie zauważyliśmy żadnych problemów z wydajnością. Fasolki sesji można łatwo wyeksponować jako usługi internetowe, które można wyeksponować na frontend Flex. Fasole sesji można łatwo zablokować na poziomie metody lub klasy, aby przypisać role i takie rzeczy, jeśli zajdzie taka potrzeba.

Nie mogę tak dużo mówić o wiośnie, ponieważ wypróbowywałam ją tylko przez kilka tygodni. Ale mój ogólne wrażenie było bardzo słabe. Nie oznacza to, że jest to zły framework, ale nasz zespół uznał EJB3 za najlepszy dla warstwy trwałości/biznesu.

 9
Author: rustyshelf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 12:34:33

Mam tendencję do woli Spring niż EJB3, ale moje zalecenie byłoby niezależnie od podejścia, spróbuj trzymać się pisania Pojo i używać standardowych adnotacji, gdzie to możliwe, jak adnotacje JSR, takie jak @PostConstruct, @ PreDestroy i @ Resource, które działają zarówno z EJB3 lub Spring, dzięki czemu można wybrać dowolny framework wolisz.

Np. możesz zdecydować się na jakiś projekt, aby użyć Guice zamiast IoC.

Jeśli chcesz użyć pre-request injection np. w sieci aplikacja może się okazać, że Guice jest nieco szybszy dla dependency injection niż Spring.

Session beans sprowadza się głównie do dependency injection i transakcji; więc EJB3 i Spring są do tego podobne. Gdzie Spring ma krawędź jest na lepszym wtrysku zależności i ładniejsze abstrakcje dla rzeczy takich jak JMS

 7
Author: James Strachan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 16:06:11

W przeszłości używałem bardzo podobnej architektury. Spring + Java 1.5 + Actionscript 2/3 w połączeniu z Flex Data Services sprawiły, że wszystko jest bardzo proste (i przyjemne!) do kodu. jednak Elastyczny front end oznacza, że potrzebujesz odpowiednio potężnych maszyn klienckich.

 2
Author: Soumitra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 05:27:56

Odnośnie Twojego pytania:

Jakie są argumenty za lub przeciw EJB3 vs Spring?

Proponuję przeczytać odpowiedź ekspertów: odpowiedź na: EJB 3 i wiosenna analiza porównawcza Marka Fishera . Przeczytaj komentarze, aby znaleźć uwagi Rezy Rahman (EJB 3.0).

 1
Author: krams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-04 02:07:05

Kolejną zaletą springa jest to, że większość innych narzędzi / frameworków ma lepsze wsparcie dla integracji ze springiem, większość z nich również używa springa wewnętrznie(np. activemq, camel, CXF itp.).

Jest również bardziej dojrzały i jest o wiele więcej zasobów (książek, artykułów, najlepszych praktyk itp.) i doświadczonych programistów niż dla EJB3.

 0
Author: kamal.gs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-05 14:32:12

Myślę, że EJB jest dobrą technologią komponentową, ale nie dobrym frameworkiem.Wiosna to najlepszy framework dostępny od today.So powinienem rozważyć Spring jako najlepsze wdrożenie JEE w sensie RAM i moim zaleceniem jest użycie spring w każdym projekcie, który daje nam elastyczność, aby łatwo zintegrować się z dowolną technologią komponentów .

 -3
Author: HARIKRISHNAN RAMAKRISHNA PILLA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-22 02:16:39