2010-09-09 8 views
11

Cóż, mamy teraz sytuację do podjęcia decyzji. Myślałem, że stackoverflow jest najlepszym miejscem do dyskusji.EJB Vs WebService? Punkt widzenia wydajności

Tło:

Mamy 2 Serwer JVM Enterprise Application i jedna aplikacja rozmieszczone na każdym z nich. musimy włączyć wywołanie funkcji biznesowej z jednego komputera na inny. Załóżmy, że jeden to klient, a drugi to serwer.

Teraz z punktu widzenia wydajności, które podejście jest lepsze do zaprojektowania aplikacji serwera.

przy zachowaniu następujących rzeczach:

mam 2 opcje:

  1. Czysta aplikacji EJB oznacza klient EJB i komponent serwera EJB

  2. WebService podejście Plain Java (nie usługa ponad EJB, coz to po prostu bałagan)

Moje wskaźniki skuteczności: szybkość: która metoda projektowania przyspieszy rozpatrzenie żądania. Moja aplikacja biznesowa zostanie na pewno wdrożona na maszynie 32-bitowej!

Należy również pamiętać, że nie ma 2 JVM, jedna jest 32-bitowy i 64-bitowy (uniknięcie takiej sytuacji jest nieuniknione teraz)

Proszę podać swoją opinię

Pozdrowienia

Chetan

+0

Dodałem tag java do Twojego pytania. –

+0

Jakie problemy występują w usługach sieci Web wspieranych przez EJB? –

+0

@BlaiseDoughan przepraszam za offtopic, ale dobrą praktyką jest tworzenie usług internetowych wspieranych przez EJB? – MyTitle

Odpowiedz

8

Jeśli przez "Usługi internetowe" masz na myśli usługi sieciowe SOAP, EJB powinny być szybsze bez względu na to, jak to robisz.

Plusy:

  • serializacji Java jest szybciej niż XML Web Services
  • szeregowania i analizowania XML wykorzystuje więcej pamięci niż prostej serializacji, EJB zaoszczędzić pamięć
  • EJB są wyrażone w prostych interfejsów Java i przedmiotów o wartości . W przypadku usług WWW konieczne może być dodanie warstwy odwzorowania, takiej jak XmlBeans lub JAXB.
  • Większość protokołów EJB umożliwia łatwe ponowne połączenia TCP/IP między połączeniami

Wady:

  • robi odpowiedniej konstrukcji definicji wiadomość pierwszy XML będzie oddzielenie klientem a serwerem
  • To jest łatwiej zmienić formaty wiadomości, ponieważ dodatkowa warstwa dwukierunkowych implementacji EJB była historycznie ogromna i powolna, jak w większych stosach usług sieci Web (ale nowsze implementacje EJB takie jak Apac on OpenEJB są małe, lekkie i możliwe do wbudowania)

Ale jeśli nie potrzebujesz obsługi transakcji rozproszonych, po prostu użyj RMI.Ma zalety, ale żadna z wad EJB. Jest już od wieków, ale wciąż działa po prostu dandys.

+0

bardzo dziękuję za szczegóły ... Szukam szybszego sposobu komunikacji między 2 JVM. EJB to ten, który czuję. szczególnie w mojej aplikacji nie chcę stracić wydajności z powodu parsowania XML na obu końcach. – Chetan

1

To nie musi być jedna z nich. Można mieć całą logikę biznesową w komponentach EJB, a także zapewniać fasadę usługi WWW, aby uzyskać dostęp do komponentu EJB. Pamiętaj też, że istnieją różne rodzaje architektury usług internetowych. SOAP jest tym, o czym większość ludzi myśli, gdy słyszy "usługę sieciową", ale możesz również chcieć spojrzeć na JAX-RS.

Wysyłanie danych w formacie XML przez HTTP jest wyjątkowo nieefektywne. Z drugiej strony, zapewnia ona większą elastyczność po stronie klienta. Usługi internetowe mogą być pobierane z dowolnej platformy lub języka programowania.

+0

dzięki mike. Jeśli wziąłbym SOAP ponad EJB, przetwarzanie XML bardzo utrudniałoby moją wydajność. coz mój ładunek xml będzie wynosił około 60 do 100KB. – Chetan

+0

Mike sugeruje JAX-RS, który wysyła wiadomości XML, a nie SOAP. Zobacz przykład: http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-45.html –