2014-02-16 4 views
0

Что касается наилучшего способа разработки системы с использованием функций spring-mvc (REST) ​​и jQuery. Я думаю, существуют следующие подходы.REST весенние услуги и передовые методы интеграции веб-интеграции JQUERY

  1. Одна война файл, в котором у вас есть пружинные услуги и Jquery вещь, при таком подходе мы имеем все домена объекты доступны для использования с пружинным MVC, мы можем создать начальные Jsp страниц, а затем обновить некоторые элементы, используя JQuery звонки на наши услуги.
  2. Два военных файла, один из которых имеет службы пружины, а другой содержит материал spring-mvc и jquery, в этом случае создание страниц может выполняться страницами jsp, а также обновлять элементы с помощью jquery-вызовов для наших служб, но это возможно, мы должны иметь общую библиотеку объектов домена, которые будут использоваться во второй войне, также внутренне использовать restTemplate в некоторых контроллерах, которые необходимо создать (это похоже на дублированный код).
  3. Имейте один файл войны, в котором запущены службы REST и другой «пакет», без jQuery или java-материала, но это означает, что все запросы вызова и информации должны быть выполнены с использованием jquery, создание начальных jsp-страниц не может быть выполнено с помощью этого вариант, и весь контент получен через службы REST. (нет необходимости использовать внутренние контроллеры для вызова услуг по java)

Думаю, что я понял, что один и второй имеют следующие недостатки.

  • Службы и веб-материалы в том же файле войны звучат как плохая идея, думающая в SOA, движение этой войны приведет к перемещению ненужных jquery и веб-материалов.
  • Смешанные jsp и jquery не звучат как хорошая идея, но я думаю, что это обычная практика (интересно, почему?), Используя это, я думаю, нам нужно создать некоторые контроллеры во второй войне, чтобы сначала создать веб-страницы, перейдите с помощью restTemplate, чтобы получить исходную информацию, а затем обновите или обновите, используя вызовы jquery. Он чувствует, что есть контроллер только для извлечения данных к службам, почему не идут непосредственно ...

Я просто хочу, чтобы реализовать третий подход, но вопрос: есть какие-либо недостатки, которые я» m не видя или не знаю, что мне следует знать перед использованием этого подхода? Также есть предложения по работе с такими системами, и вам будет интересно услышать что-то от вас, исходя из разработчиков java и jQuery

+0

Мне кажется, что вы смотрите на два разных идеала: приложение Spring, в котором размещается ваш API, и приложение для интерфейса, которое можно разместить где угодно ... Я бы написал приложение JQuery и разместил его. .. что угодно, включите xsite в своем приложении java и просто позвоните своим остальным URL-адресам. Если вы хотите использовать весну для создания приложения на передней панели. Это прекрасно, но если вы хотите, чтобы весна принимала отдых ... у вас есть отдых. – AnthonyJClink

ответ

2

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

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

  • Версия 1: Загрузите страницу в начальный вызов контроллера и используйте jquery для последующих вызовов службы. Весь код существует в одном пакете.

    Недостатком является герметичное соединение. Теперь вы ограничены языком вашего api и больше не предоставляете сервисный подход к вашим данным и услугам.

    Я видел эту версию, применяемую в большинстве случаев, когда разработчик приложения больше заботится об асинхронных внешних вызовах, чем язык на основе SOA.

  • Версия 2: Имейте войну, содержащую службы Spring, и войну за JS.

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

    Использование банки, содержащей весь код для попадания в базы данных и создания объектов домена, отдельно от кода, который используются контроллерами для сериализации и ответа на веб-запросы, создает очень чистый способ управления вашим api, однако это создает сложность и дополнительный компонент, которого можно избежать с помощью версии 3. Он также дает такое же странное поведение, которое вы видите в версии 1.

    Я видел этот подход, принятый командами, разрабатывающими приложения с чистым api. Я не видел, чтобы это делалось в командах, которым также нужен компонент переднего конца. В этих случаях использовался метод один или три.

  • Версия 3: Создайте приложение, использующее только ответственность переднего плана. Создайте приложение, которое отвечает за ответственность на стороне сервера.

В обеих версиях 2 и версии 3 отделите свои служебные вызовы от своих http-звонков. Сделайте их разными, потому что они позволяют модульность.

Например, мы должны ответить на HTTP-запросах

@Controller 
class MyController{ 
    @Autowired 
    private MyService service; 
    @GET 
    public String getData(String dataId){ 
     return service.getData(dataId); 
    } 
} 

и мы должны реагировать на активные квадратные метр просят

Message m = queueReceiver.receive(); 
if (m instanceof DataRequest) { 
    DataRequest message = (DataRequest) request; 
    queueSender.send(service.getData(request.getDataId())); //service call 
} else { 
    // Handle error 
} 

Кроме того, это дает вам возможность управлять, что вам нужно обрабатывать на стороне http, отличной от вашей стороны обслуживания.

@GET 
public String getData(HttpRequest request, String dataId){ 
    if(!this.handleAuth(request)){ 
     throw new 403(); 
    } 
    try{ 
     return service.getData(dataId); 
    catch(Exception e){ 
     throw new WrappedErrorInProperHttpException(e); 
    } 
} 

Это позволяет вашему сервисному слою обрабатывать задачи, имеющие значение только для этих сервисов, без необходимости обрабатывать все Хруст http. И позволяет вам иметь дело со всем глаголом HTTP отдельно от вашего уровня обслуживания.

+0

Я думаю, что вы понимаете часть моей точки зрения, но совсем нет, и я согласен с вами в том, что службы REST могут запускаться на сервере, и ничего больше там, и я могу назвать эти службы, используя jquery в другом интерфейсе. Но почему некоторые приложения используют функцию spring-mvc + jquery для выполнения этого процесса, достаточно использовать только чистую jquery для этого, основываясь на тех преимуществах или недостатках, которые мы могли бы иметь в двух подходах. Это должно быть любой причиной для выхода второго подхода. (mix spring-mvc и jquery), чтобы вызвать rest api – Koitoer

+0

Я не вижу причин использовать оба ... В моем опыте (который ограничен) мне еще предстоит это сделать. RestTemplate создается для клиентских вызовов на сервере ... Если RestTemplate используется для совершения вызовов внутренней ави внутри существующего контроллера ... Я был бы очень смущен, почему это было сделано. Если JQuery присутствует, в jsp .. это имеет смысл, потому что браузер загрузит все данные и сделает http-вызовы на сервере после загрузки данных. Что будет иметь смысл ... но чтобы связать их ... JQuery ---> Controller -> rest call -> controller -> JQuery, это не имеет смысла. – AnthonyJClink

+0

Я вижу ваш вопрос сейчас ... Извините. Позвольте мне пояснить свой ответ. – AnthonyJClink

Смежные вопросы