Является ли JAX-RS для служб RESTful в Java лучше, чем инфраструктура MVC, такая как Swing, Grails или Play? - PullRequest
8 голосов
/ 01 июля 2011

Например, Play-framework поддерживает RESTful-сервисы, такие как: RESTful на Play!framework

Как это можно сравнить с реализацией Jax-RS Jersey?Бегает ли вокруг Джерси фреймворк, такой как Play, из-за того, что это крутые навороты, а также и REST?

Производительность разработчика важна, но и правильная реализация.Возможно, использование инфраструктуры MVC для служб только REST является «неправильным»?

Обратите внимание, только службы RESTful, вообще никаких компонентов пользовательского интерфейса.

Ответы [ 3 ]

11 голосов
/ 11 июля 2011

Несмотря на то, что не является «неправильным» использование инфраструктуры MVC для служб RESTful, есть некоторые плюсы и минусы по сравнению с использованием реализации JAX-RS.

(Отказ от ответственности: я использовал только Jersey и Play!для удовольствия, а не для систем производственного уровня, поэтому я адаптировал свои комментарии в более широком смысле к MVC против JAX-RS. Имейте в виду, что это широкие обобщения.)

MVC - по крайней мере,те, которые считаются дружественными для разработчика и «ловкими» - обычно избавляют вас от необходимости создавать постоянный слой (часть модель ).Большинство также упрощают «маршрутизацию» запросов, используя скаффолдинг через соглашение или некоторую форму конфигурации.Недостатком является то, что вы должны соответствовать некоторым соглашениям для ваших контроллеров и обычно должны писать представление для каждого ресурса (или создавать уровни абстракций, чтобы избежать переписывания одного и того же кода).

JAX-RS выделяется при определениимаршрутизация (с использованием аннотаций Java), а также устранение любых ограничений на класс обслуживания.По моему опыту, это значительно сократило объем стандартного кода и накладных расходов разработчика.Jersey и Apache CXF также обрабатывают сериализацию XML или JSON с использованием аннотаций JAXB, что устраняет необходимость выяснения представления в контексте MVC.Недостатком здесь является то, что вы должны выяснить свой собственный ORM или уровень персистентности, который может быть хорошим или плохим, в зависимости от того, строите ли вы поверх существующих данных или создаете новую систему (или используете что-то отличное от JPA / RDBMS).например, хранилище данных NoSQL).

Мой личный комментарий: Play!Это действительно классная среда, но я бы выбрал CXF (или Джерси) вместо среды MVC в любой день для создания службы RESTful.По моему опыту, это позволяет разработчику сосредоточиться на логике, необходимой для службы, и открывает возможности для различных подходов к базам данных.Правильный инструмент для правильной работы.

6 голосов
/ 27 апреля 2014

Как правило: для Scala используйте Play.Для Java используйте Джерси.

Вы можете использовать Джерси / Scala и Play / Java;Я сделал оба.Оно работает.Это не плохоНо если у вас нет особой причины для этого, я бы не стал смешивать экосистемы.Java и Scala совместимы, но имеют разные экосистемы. Я бы не стал добавлять Java-измы, если вы используете Scala или Scala-измы, и зависимости, если вы используете прямую Java.

Джерси и Play обычно близки для RESTСервисы.Ни один из них на самом деле не имеет каких-либо дополнительных функций.

Джерси определяет сопоставления URL-адресов в аннотациях, Play определяет их в файле маршрута для широкой службы.И они объединяют или имеют различное качество интеграции с различными библиотеками для таких вещей, как XML, JSON, базы данных, тестирование, макетирование, библиотеки внедрения зависимостей и развертывание сервера приложений.

В мире Java есть JMS, Spring, JUnit, jdbi/ Спящий режим / JPA, Причал / Гризли.В мире Scala есть Akka, specs2 / ScalaTest, Anorm / Slick.Джерси лучше подходит для первого мира, Скала для второго.Вы можете определенно пересечь это, но это будет немного менее изящно и могло бы потребовать больше кодирования клея.

1 голос
/ 02 июля 2011

JAX-RS является стандартом, и реализации могут быть созданы различными поставщиками. Джерси является одной из таких реализаций. Другие платформы могут использовать JAX-RS, но не являются стандартами. Так что это не сравнение один к одному.

Я никогда не слышал о Play раньше, но это выглядит интересно, больше похоже на Rails и Django, чем на Джерси. Что мне нравится в Джерси, так это то, что его можно интегрировать в существующие веб-приложения Java, просто добавив JAR-файлы и объявив некоторые вещи в файле web.xml. Что меня смущает в Джерси и JAX-RS, так это маршрутизация.

Игра облегчает маршрутизацию, однако, поправьте меня, если я ошибаюсь, кажется, что это фреймворк типа "все или ничего" и его нельзя использовать вместе с другими сервлетами в том же веб-приложении.

...