2011-07-15 12 views
9

Rozwijamy usługę dla naszego portalu/klienta internetowego opracowanego przy użyciu JSF. Moją radą było ujawnienie usługi jako REST, ale inny członek zespołu powiedział, że idzie z wdrożeniem RMI, ponieważ łatwiej jest zajmować się obiektem java z punktu widzenia rozwoju i testowania.RMI vs usługa REST

Moją argumentacją były wysiłki na rzecz rozwoju i testowania, które były prawie takie same, ale otrzymamy całą dobroć usług internetowych REST.

FYI: Mamy już ustawienie REST, więc nie ma żadnych dodatkowych kosztów w ramach obsługi ram. Usługi te są dostępne dla naszego klienta smartfonu, który używa interfejsu REST API.

Na koniec nasz menadżer zdecydował się na RMI, ale nadal uważam, że REST byłby mądrzejszy.

Jaki byłby Twój wybór REST lub RMI?

Uwaga: nic przeciwko członkom zespołu lub menedżerowi, którzy próbują się tutaj nauczyć.

+0

Nie ma wystarczających informacji, aby uzyskać ostateczną odpowiedź, ale jeśli masz już interfejs REST API, menedżer powinien mieć naprawdę dobry powód do dodania do miksu kolejnej opcji zdalnego wyboru. – SteveD

+0

RMI jest w porządku, jeśli pracujesz w domu. cokolwiek klient/serwer przez ogólny Internet powinien korzystać z nowoczesnego protokołu usługi sieciowej. – jtahlborn

Odpowiedz

4

Największym argumentem przeciwko RMI i REST/SOAP itp. Jest to, że klient nie musi być Java.

Jeśli twój front-end mógłby zmienić drogę od JSF do ASP, będziesz miał kłopoty.

Poza tym, RMI jest drogą do zrobienia. Jeszcze lepszym sposobem jest EJB (który jest warstwą na szczycie RMI) z dodatkowymi zaletami - wielu dostawców już implementuje specyfikację EJB, masz zalety łączenia obiektów, zarządzania transakcjami itp.

+6

Jeśli masz na myśli EJB Enterprise Java Beans, to nie zgadzam się, byłoby to ogromne obciążenie, aby zrobić wszystko związane z EJB, jeśli potrzebujesz tylko RMI. –

5

Jeśli istnieje są zaporami ogniowymi między twoim klientem i serwerem, jest prawdopodobne, że ruch RMI może być zablokowany. Ruch HTTP jest otwarty na większości firewalli, a REST nie powinien mieć problemu z przejściem.

+1

Może to stanowić duży problem, jeśli sprzedajesz swoje oprogramowanie firmom - nie lubią otwierać portów dla RMI, ale hej, pozwolą ci tunelować wszystko przez HTTP (S)! – SteveD

+3

Możesz także wykonać RMI przez HTTP. –

2

Jest klientem w Javie, użyj RMI. Ale to jest prosta myśl. Ponieważ jest to tylko protokół point to point.

REST jako paradygmat jest interesujący, jeśli masz np. wielu czyta i lubię używać technologii HTTP do buforowania itp. Następną rzeczą jest to, że najprawdopodobniej możesz łatwo zaimplementować "kursory stronicowania", więc wysyłasz dane jako małą stronę i dodajesz informacje, jak odzyskać następną stronę.

Twoje pytanie jest sformułowane tak, jakby było to pytanie technologiczne. Które jest niewłaściwe podejście. Nie powinieneś martwić się o technologię, ale o architekturę systemu. Cały system oprogramowania, jego możliwości, wydajność, skalowanie, konfiguracja i konserwacja są całkowicie różne w zależności od wykorzystania RMI lub REST.