Веб-сервисы AJAX - расширения веб-уровня или уровня бизнеса? - PullRequest
0 голосов
/ 23 сентября 2008

Мой вопрос, возможно, тонкий:

Веб-сервисы - это расширения уровня представления / веб-уровня? ..или ли они расширения уровня бизнеса / данных?

Это может показаться глупым вопросом. Услуги Web являются расширением уровня web . Я не так уверен, хотя. Я создаю довольно стандартную веб-форму с некоторыми функциями AJAX-y, и мне кажется, что я мог бы создать веб-службы одним из двух способов:

  1. они могут получить данные для меня (расширение бизнеса / уровня данных).
    пример: GetUserData(userEmail)
    где веб-форма имеет JavaScript, который знает, как использовать пользовательские данные и вносить изменения в разметку
  2. они могут вернуть полностью визуализированные пользовательские элементы управления (html; расширение веб-слоя)
    пример: RenderUserProfileControl(userEmail)
    где веб-форма имеет простой / тупой JS, который только копирует и вставляет HTML веб-службы в форму

Я мог видеть, как это работает в любом сценарии, но меня интересуют разные точки зрения ... Мысли?

Ответы [ 4 ]

2 голосов
/ 23 сентября 2008

На мой взгляд, веб-сервис имеет 2 характеристики:

  1. он предоставляет данные внешним источникам, то есть другим источникам, кроме приложения, в котором они находятся. В этом смысле я согласен с @ Pete в том, что вы не разрабатываете веб-сервис; Вы разрабатываете вспомогательный класс, который отвечает на запросы, как веб-сервис. Возможно, это семантическое различие, но оно оказалось полезным для меня.
  2. возвращает данные (и только данные) в формате, который может использоваться несколькими потребителями. Для меня это ответ на ваш вопрос «почему бы не № 2» - если вы возвращаете структуры, подобные веб-элементам управления, тогда вы ограничиваете полезность веб-службы для других потенциальных абонентов. Они должны представлять данные так, как вы их возвращаете, и не могут представлять их по-другому, что сводит к минимуму полезность (и повторную полезность) службы в целом.

Все это говорит о том, что если вы действительно смотрите на вспомогательный класс, который отвечает как веб-сервис, и вы только когда-либо намереваетесь использовать его в этом одном случае, тогда вы можете делать все, что захотите, и ваш случай # 2 будет работать . Однако, с моей точки зрения, это нарушает разделение обязанностей; Вы комбинируете функции доступа к данным и рендеринга в одном классе. Я подозреваю, что даже если вы не заботитесь о шаблонах MVC, вариант № 2 затруднит поддержку ваших классов, и вы, безусловно, ограничите их будущую полезность для вас; если вы когда-либо хотели получить доступ к одним и тем же данным, но отображать их по-другому, вам необходимо провести рефакторинг.

0 голосов
/ 23 сентября 2008

Даже в сценарии 1 этот сервис представляет данные, доступные на уровне данных, и не является частью самого уровня данных, он просто представляет данные в другом формате, чем формат пользовательского интерфейса (т. Е. JSON , xml и т. д.)

Что касается сценария, который я бы использовал, я бы выбрал сценарий № 1, поскольку этот сервис можно использовать повторно в других веб-формах и других сценариях.

0 голосов
/ 23 сентября 2008

Хотя # 1 (по умолчанию не # 2), как правило, правильный подход (предоставьте только данные, необходимые для слоя представления и обработайте всю разметку там), будьте осторожны с частью web сервис в вашем дизайне.

Данные должны предоставляться только как веб-служба (SOAP / WSDL, REST), если они предназначены для удаленного использования (некоторые архитекторы SOA могут с этим поспорить, но я думаю, что это выходит за рамки на этот вопрос), в противном случае вы, вероятно, делаете слишком много и чрезмерно проектируете свой формат запроса и ответа. Используйте то, что имеет смысл для вашего приложения - платформа Ajax, которая облегчает взаимодействие клиент / сервер и абстрагирует основной формат связи, может быть большой помощью. Важная вещь заключается в том, чтобы красиво инкапсулировать код, который извлекает данные, которые вы хотите (вы можете назвать это сервисом, но, скорее всего, это будет просто хорошо написанный класс помощника), чтобы его можно было повторно использовать, а затем выставлять эти данные в любом месте. способ имеет наибольшее значение для данного приложения.

0 голосов
/ 23 сентября 2008

Я бы сказал, что определенно не № 2, но № 1 действителен.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...