2010-01-30 6 views
15

JAX-RS has some MVC support, ale zastanawiam się, czy JAX-RS to naprawdę dobry wybór do tworzenia aplikacji internetowych do użytku przez ludzi.Czy JAX-RS nadaje się jako szkielet MVC?

Jeśli użytkownik wprowadzi błędne lub niekompletne informacje w formularzu, powinien zostać wyświetlony ponownie, tak jak w przypadku Grails lub Wicket. Czy jest wygodny sposób na zrobienie tego z JAX-RS?

O ile mi wiadomo mapowanie identyfikatorów URI nie działa poprawnie, jeśli nie podano wszystkich wymaganych parametrów lub występują problemy z konwersją typu (na przykład Data). Czy to jest poprawne?

Czy istnieje wsparcie dla szablonów umiędzynarodowionych?

Oto example for a simple JAX-RS based GUI application. Ale to naprawdę proste i takie rzeczy jak i18n i walidacja nie są omawiane.

Odpowiedz

2

JAX-RS to platforma Java EE RESTful. JavaServer Faces (JSF) to środowisko Java EE MVC. Obsługuje to wszystko, o czym wspomniałeś w swoim pytaniu: odświeżenie do tego samego formularza w przypadku błędu, i8n/l10n i dużo więcej niż. Aby dowiedzieć się więcej o JSF, przejdź przez Java EE 6 tutorial part II chapters 4-9.

Możesz zrobić trochę MVC z JAX-RS, ale nie jest to pełnoprawna struktura MVC. Ta sama historia toczy się dalej, że możesz zrobić trochę RESTful z JSF, ale to nie jest pełna RESTful framework.

Jeśli chcesz najlepszego z obu światów, naprawdę powinieneś udać się na Ruby on Rails lub Groovy on Rails.

+0

Dzięki. Znam JSF, ale szukam czegoś RESTful do budowania aplikacji GUI. – deamon

+0

Znajdź Ruby lub Groovy na Railsach. – BalusC

+0

Grails jest zainspirowany stylem Ruby on Rails, ale nie jest klonem. Moje dwa centy, BalusC :) – oligofren

1

Jest wiele pytań w tej sprawie, przedstawię dwa z nich.

"Zastanawiam się, czy JAX-RS to naprawdę dobry wybór do tworzenia aplikacji internetowych do użytku przez ludzi."

Usługi internetowe są zwykle używane do interakcji maszyn, chociaż uważam, że zwykle ludzie muszą programować interakcje - należy to porównać z protokołem SOAP, w którym obecnie jest znacznie więcej możliwości generowania maszyny kod z WSDL.

„Jeśli użytkownik wpisze nieprawidłowe lub niepełne informacje w postaci”

  • następnie w usłudze internetowej relaksującego HTTP który akceptuje reprezentacji formularza HTML, należy zwrócić błąd HTTP 400, ponieważ klient dostarczył oświadczenie, że nie jest zgodny z reprezentacją, której oczekuje twoja usługa - od klienta zależy, jak poradzi sobie z tym błędem.
+1

Zgadzam się na zwrot statusu 400, gdy wysyłam nieprawidłowe dane. Ale to samo nie byłoby pomocne, gdy dane zostały wprowadzone w formularzu. Znacznie lepiej byłoby wyróżnić pola formularzy. – deamon

+0

jeez, jak myślisz, co dzieje się za kulisami w szynach? masz wiele razy stwierdził, że chcesz RESTful sposób robić rzeczy. Myślę, że musisz przeczytać, co to oznacza: http://en.wikipedia.org/wiki/Representational_State_Transfer#Guiding_principles_of_the_interface – oligofren

5

Tak można, ale trzeba wyczyścić głowę starego modelu strona post i zacząć myśleć o swojej aplikacji jako odłączonym UI który komunikuje się z RESTful SOA. Gdy dane formularza są wprowadzane, wysyłane do punktu końcowego usługi, jeśli dane nie są poprawne, odpowiadasz ponownie z błędem i uchwytami użytkownika obsługującymi ten błąd. Nie publikujesz formularzy na serwerze w tradycyjnym modelu strony, ale raczej wywołujesz wywołania RPC w systemie zaplecza.Twój widok zostaje całkowicie odłączony od reszty stosu MVC. To sprawia, że ​​zastąpienie widoku niestandardowym telefonem lub systemem IVR jest niezwykle proste.

Jeśli użytkownik wprowadzi błędne lub niekompletne informacje w formularzu, powinien zostać wyświetlony ponownie, tak jak w przypadku Grails lub Wicket. Czy jest wygodny sposób na zrobienie tego z JAX-RS?

Dzięki bogatej aplikacji internetowej nie trzeba ponownie gromadzić danych, ponieważ użytkownik nigdy nie opuścił strony, wywołanie XHR jest wywoływane na serwerze, a sukces 200 jest wysyłany z powrotem lub błąd. Interfejs użytkownika decyduje wtedy, co należy zrobić na podstawie tej odpowiedzi, ale strona pozostaje nienaruszona, ponieważ wywołanie było poza zasięgiem głównego wątku interfejsu użytkownika.

+1

To sugeruje użycie JavaScriptu do prawie całej komunikacji z serwerem, prawda? – deamon

+0

Tak, to jedna z podstawowych koncepcji, serwer składa się z dwóch części, serwera WWW, który dostarcza statyczny kod HTML i serwer aplikacji, który jest serią punktów końcowych REST dla danych i logiki biznesowej. Z przeglądarki wywołujesz XHR w celu uzyskania danych i przetwarzania formularzy, logiki biznesowej. Fajną częścią jest to, że daje to bardzo precyzyjną kontrolę. Na przykład możesz chcieć sprawdzić poprawność formularza po wprowadzeniu wszystkich informacji, ale możesz również sprawdzić, czy nazwa użytkownika została wprowadzona w momencie, w którym została wprowadzona. Wykonując oba połączenia XHR/JAX-RS, masz wspólną architekturę. – kls

+0

Aby wyjaśnić, że nawet serwer składa się z dwóch części, fizycznie może być tym samym serwerem, który pomaga wizualizować je jako dwie odrębne jednostki. Jak dobrze, osobiście używam CMS, który może eksportować statyczny HTML do serwera WWW. Zapewnia to tworzenie szablonów bez zależności w czasie wykonywania. Nie korzystam z JSP, ale raczej buduję interfejs z czystym HTML, CSS i JavaScript. – kls

1

Spójrz na ReXSL - to framework MVC, na szczycie JAX-RS. Tak więc odpowiedź brzmi - tak, JAX-RS doskonale nadaje się do projektowania MVC.

0

Krótka odpowiedź: TAK.

To służy jako podstawa do wykonania MVC (MVC 1.0 - JSR 371) do JAVA EE 8. Controller będzie fasoli JAX-Rs @Controller adnotacji (na klasy i metody).

uzyskać informacje mor patrz: MVC 1.0 (JSR 371)

Jeśli wziął tę ścieżkę w swoim czasie zrobiłeś naprawdę dobrą decyzję, powinno ułatwić Ci uaktualnić i korzystać z nowej Java EE 8 MVC architektury.