Grails vs. JAX-RS для приложения RESTful API / MVC - PullRequest
9 голосов
/ 04 марта 2011

Я знаю, что название может выглядеть как яблоки и апельсины, но выслушайте меня ...:)

Я строю архитектуру приложения MVC и обдумываю, что использоватьдля ядра контроллера / сервисов.Этот стек также будет служить RESTful API, который будет так же важен, как и пользовательский интерфейс.

Я сужаю свой стек, чтобы его можно было собирать либо с помощью Grails, либо с помощью JAX-RS (на данный момент я правилдругие варианты, и я не очень заинтересован в расширении этого списка).В любом случае я буду использовать Groovy, и мой выбор модели и представлений практически не будет затронут этим выбором, так что это еще больше уравнивает некоторые различия между ними.Вот плюсы / минусы, о которых я размышлял, и мне было интересно, есть ли у кого-нибудь еще какие-либо комментарии или предостережения.

Grails

  • Я не собираюсь использовать тоннувстроенные функции Grails (GSP / SiteMesh, Hibernate, почти все плагины), поэтому я обеспокоен тем, что Grails может быть немного тяжелым для моих целей
  • Я обеспокоен тем, что мне не хватитконтроль над моей способностью обрабатывать REST API, поскольку он очень ориентирован на просмотр
  • Я видел несоответствия в качестве плагинов до такой степени, что я не уверен, что считаю их во многом «про»
  • Мне нравится соглашение о переконфигурировании, редактировании и обновлении до такой степени, что я, вероятно, захочу подключить нечто подобное, если я пойду с JAX-RS
  • Мне нравитсякомандная строка grails для всего, что она оптимизирует, но я обеспокоен тем, что это может помешать мне, так как я не использую столько стека
  • Мне нравятся строительные леса, но я не использую Hibernateили GSP / SiteMesh это можетне очень хорошо

JAX-RS

  • JAX-RS сделан для ОТДЫХА.Это сделает мой RESTful API действительно легким для реализации, так как у меня полный контроль
  • Groovy - важная часть того, что делает Grails сияющим, поэтому я выиграю от этого даже в JAX-RS
  • Мне нравится, что JAX-RS автоматически не задействует кучу других вещей, поэтому я могу лучше контролировать, какие компоненты входят / выходят
  • , к сожалению, так как он не тянет во всем остальном, что яв конечном итоге, потребуется больше работы, в то время как Grails может иметь плагин
  • , командная строка grails и леса будут пропущены;возможно, Maven может заполнить некоторые пробелы

Кажется, что возможности каждого для создания действий и маршрутизации очень похожи (хотя стили реализации различны).На самом деле есть другие вопросы SO, которые хотят затронуть этот , так что я не слишком обеспокоен.

Ответы [ 2 ]

7 голосов
/ 04 марта 2011

В прошлом году я написал небольшой прототип сервиса REST в нескольких средах (а именно: Grails, Play !, Spring MVC, Jersey, Restlet).В связи с этим у меня возникло ощущение, что Grails поддерживает архитектуру в стиле REST, но на самом деле она не предназначена для этого.Я не хочу быть религиозным здесь, так что если вы хотите отобразить ресурсы только на URL-адреса и HTTP-глаголы, но если вы хотите углубиться в REST с жестким контролем кодов возврата, заголовков местоположений и т. Д., Вы все равно можетебыть в состоянии сделать это с Grails, но, вероятно, лучше поддерживается в чистой среде REST.

Grails также имеет много зависимостей, которые могут не быть проблемой, если вы начинаете на зеленом поле, но может вызвать проблемы, когда вам придется интегрировать его с существующими устаревшими компонентами или средами.

Из двух используемых сред REST мне больше понравился Jersey, поскольку он просто работал в моем случае, и документация была хорошей (хотя документация была хорошей (хотянемного сосредоточены на Maven и Netbeans).

1 голос
/ 04 марта 2011

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

Лично я бы взял более легкий подход и оставил бы Grails, используя любые автономные библиотеки или создавая собственный код, обеспечивающий нужные вам функции. На сайте Groovy есть несколько контейнерных проектов , возможно, Spring или одна из альтернатив добавят некоторую ценность вашей архитектуре.

...