Web Services vs EJB vs RMI, zalety i wady?

Mój serwer WWW zostałby szybko przeciążony, gdyby cała praca została tam wykonana. Postawię za nim drugi serwer do przetwarzania danych.

Jaka jest przewaga EJB nad RMI, czy odwrotnie?

A co z usługami sieciowymi (SOAP, REST)?

Author: Dean J , 2010-01-06

3 answers

EJB zbudowane są na bazie RMI. Zarówno klientów Java jak i beans. Jeśli twój Klient musi być napisany w czymś innym (np.) go z usługami sieciowymi lub czymś innym, co mówi protokołem przewodowym, np. HTTP lub XML przez HTTP lub SOAP.

Jeśli wybierzesz RMI, nie potrzebujesz serwera aplikacji Java EE EJB. Musisz zachować synchronizację jvms klienta i serwera; nie możesz uaktualnić klienta bez aktualizacji serwera. Musisz napisać wszystkie usługi, które Serwer aplikacji EJB zapewnia dla Ciebie (np. łączenie połączeń, nazywanie i usługi katalogowe, łączenie, kolejkowanie żądań, transakcje itp.).

RMI jest dość niski poziom, jeśli się nad tym zastanowić. Dlaczego miałbyś wracać do Corby?

Lepszym wyborem jest EJB 3.0 kontra Spring. To zależy od tego, czy lubisz rozwój POJO, chcesz mieć wybór technologii relacyjnych oprócz ORM i JPA, między innymi.

Możesz zapłacić za serwer aplikacji Java EE (np. WebLogic, WebSphere) lub użyć open source (JBOSS, Glassfish oraz OpenEJB i ActiveMQ), lub można trzymać się Springa i wdrożyć na Tomcat, Jetty, Resin lub innym silniku servlet/JSP.

Spring oferuje duży wybór, będąc agnostykiem technologii: persistence (Hibernate, iBatis, JDBC, JDO, JPA, TopLink), remoting (HTTP, Hessian, Burlap, RMI, SOAP web service), itp.

EJB 3.0 jest specyfikacją wielu dostawców; sprężyna może być dostępna tylko ze źródła sprężyny.

Polecam Wiosna . Jest bardzo solidny, ma dużą przyczepność, nigdzie się nie wybiera. To pozostawia wszystkie opcje otwarte.

Usługi internetowe są świetne w teorii, ale są pewne Gotcha, na które należy uważać:

  1. opóźnienie. Pierwsze prawo Fowlera dotyczące rozproszonych obiektów: "Nie!"Architektura składająca się z wielu drobnoziarnistych usług mydła będzie elegancka, piękna i powolna jak melasa. Zastanów się dokładnie przed dystrybucją.
  2. od XML do obiektów i z powrotem zużywa cykle procesora, które nie zapewniają żadnej wartości biznesowej poza pozwalaniem klientom mówić protokołem niezależnym od platformy.
  3. SOAP jest standardem, który staje się coraz bardziej nadęty i złożony każdego dnia, ale ma wiele wsparcia narzędzi. Sprzedawcy to lubią, ponieważ pomaga zwiększyć sprzedaż ESB. Odpoczynek jest prosty, ale nie tak dobrze rozumiany. Nie jest obsługiwany przez narzędzia.

Moduł Web service Springa jest bardzo dobry, ale należy uważać na decydując się na wdrożenie w ten sposób. Napisz w kategoriach interfejsy serwisu POJO. Pozwoli to uzyskać pożądaną izolację koncepcyjną, odroczyć wybór wdrożenia do ostatniej chwili i pozwoli zmienić zdanie, Jeśli pierwsza myśl nie zadziała dobrze.

 115
Author: duffymo,
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
2015-11-28 19:09:22

Pomiędzy EJB i RMI, EJB z pewnością byłby lepszy - ma wszystko, co ma RMI i wiele więcej za pośrednictwem kontenera (pooling obiektów, zarządzanie transakcjami itp.)

Pomiędzy EJB a usługami sieciowymi, usługi sieciowe dadzą ci większą przenośność, jeśli chcesz w przyszłości korzystać z nich z aplikacji innych niż java. EJB ponownie oferuje takie rzeczy, jak zarządzanie transakcjami i łączenie, które mogą nie być "wyjęte z pudełka" z usługami sieciowymi.

Osobiście, gdybym to robił, zrobiłbym prawdopodobnie używa EJB lub podobnego frameworka remote object (na myśl przychodzi również remoting spring). Jeśli potrzebujesz możliwości wywoływania obiektów z aplikacji innej niż java, zawsze możesz przesłać EJB za pomocą prostych serwerów proxy usług internetowych.

 10
Author: Eric Petroelje,
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
2010-01-06 15:11:50

[0] Re: serwisy www( SOAP, REST) Jeśli twoje serwery zaplecza nie zostaną publicznie ujawnione, nie uzyskasz żadnych korzyści z korzystania z niezależnych od platformy interfejsów usług internetowych, takich jak SOAP/REST.
W rzeczywistości będziesz ponieść karę z wszystkich napowietrznych dodawanych przez znaczniki XML zawijania danych w całym zdalnym wywołaniu, nie wspominając o trafienie będziesz wziąć z rozrząd i unmarshalling XML do obiektów java.
Chociaż każde rozproszone połączenie będzie wymagało pewnych poziom serializacji-nawet RMI / EJB, ale cena jest większa przy serializacji do czytelnego dla człowieka XML.

Być może nie trzeba w ogóle kodować połączeń zdalnych w Javie, można uruchomić usługę za pomocą zwykłej instancji Apache httpd, która jest skonfigurowana do ładowania balansu między wieloma serwerami java za pomocą mod_jklub mod_proxy.
Moduły te mogą być używane do równoważenia obciążenia kontenerów serwletów, takich jak tomcat / jetty, lub kontenerów ejb, takich jak jboss/glassfish.

 4
Author: crowne,
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
2010-02-19 07:25:27