Зачем использовать ссылку на службы RIA вместо конечной точки OData?

Перед чтением, пожалуйста, знайте, что я прочитал все другие сообщения о различиях между ванильным WCF, WCF Data Services и RIA Services. Мой вопрос конкретно о том, почему службы RIA рассматриваются как особый вид источника данных специально для Silverlight, когда кажется, что имеет больше смысла просто заставить его выполнять одну задачу: служить слоем бизнес-логики за интерфейсом REST.

Похоже, что с выпуском VS2010 службы RIA утвердили свою позицию в качестве уровня бизнес-логики, который находится за службой доступа к данным REST - это, похоже, подтверждается новой опцией «Expose OData Endpoint» в шаблоне класса службы домена в Visual Studio, которая, насколько я могу судить, по существу делает для вашей службы RIA именно то, что WCFDS делает для произвольного источника данных (я полагаю, вы могли сделать это раньше, но добавление этого флажка дает понять, что служба RIA может быть рассматривается как уровень, содержащий бизнес-логику, используемую для улучшения конечной точки данных REST и / или ограничения ее заданным набором запросов, а не обязательно конечной точкой как таковой).

Итак, если у меня есть служба RIA с бизнес-логикой, предоставляемая через OData, я могу добавить ссылку на службу OData из клиентского приложения WCF. На клиенте я получаю производную DataServiceContext, которая позволяет мне выполнять работу в стиле единицы работы на клиенте. Я могу сделать то же самое в приложении Silverlight и получить то же самое - производную от DataServiceContext.

Если вместо добавления ссылки на службу я использую «ссылку на службу RIA» в моем приложении Silverlight, чтобы напрямую связать приложение со службой RIA, я получаю код, сгенерированный Visual Studio, который, по-видимому, поддерживает почти те же шаблоны работы, но используя другой стиль API.

В таком случае:

  • Каковы преимущества «ссылки на службы RIA», когда приложение Silverlight напрямую привязано к службе RIA, в отличие от простого добавления ссылки на службу в конечную точку OData, которая может использоваться любым клиентом без жесткой связи? Мне сказали, что магия RIA заключается в генерации кода, поэтому я предполагаю, что пытаюсь понять, чем генерация кода RIA так сильно отличается от генерации кода «добавить ссылку на сервис».
  • Если есть преимущества, почему они доступны именно для Silverlight, а не для клиентских приложений WCF? Продажа сервисов RIA исключительно в качестве слоя за конечной точкой OData кажется, что это поможет стандартизировать и продвинуть OData еще дальше с точки зрения того, чтобы стать универсальным типом конечной точки для любого типа клиента - «потреблять из ASP, потреблять из Silverlight, потреблять из WCF ... вы получите практически такой же опыт, и он отличный ». Вместо этого у нас Silverlight напрямую привязан к RIA со специальным набором функций и ко всем другим клиентам, использующим открытый протокол.

person nlawalker    schedule 28.06.2010    source источник


Ответы (2)


Службы RIA не предназначены для использования в качестве «доменной логики, лежащей в основе oData», как раз наоборот. Назначение служб RIA - абстрагироваться от механики доступа к данным через Интернет, чтобы обеспечить быструю разработку приложений в Silverlight. Думайте о службах RIA как о WCF, как о VB для C ++.

Ключевые преимущества RIA Services:

Прозрачный доступ к данным - вам не нужно возиться с файлами SVC и т. д. Вы создаете модель структуры сущности, оборачиваете ее в службу домена, и все готово. Что еще более важно, изменения распространяются автоматически. Разработчику не нужно воссоздавать ссылку на Сервис каждый раз, когда изменяется модель или запрос, генерация кода делает это за вас.

Фреймворк аутентификации из коробки. Он присутствует, когда вы создаете бизнес-приложение, это шаблон в VS, способ интеграции с существующей аутентификацией ASP.NET без необходимости выполнять тяжелую работу.

Шаблоны источников данных и проверка = вероятно, одна из самых упускаемых из виду, но все же одна из самых важных функций. Вы открыли окно "источники данных"? Службы RIA создают настраиваемые пользователем элементы управления DataContext, привязанные к основному / подробному описанию, которые поддерживают аннотации проверки на стороне сервера. Функциональное приложение с привязкой к данным можно легко перетащить. Обдумайте ценность этого для тех, кто больше ориентирован на дизайн / смешивание.

Короче говоря, службы RIA созданы для того, чтобы разработчик мог перейти от модели данных edmx к безопасному функциональному Silverlight за считанные часы. Это потрясающий материал, если использовать его в контексте.

В качестве примечания, я провел довольно много исследований по службам RIA и службам данных, и они удовлетворяют разные потребности. Мы используем RIA Services для всех наших приложений, заменяющих настольные компьютеры, но мы используем Data Services для SaaS.

Я не думаю, что вы далеки от долгосрочного намерения услуг RIA. Я думаю, что в будущих версиях мы увидим, что сервисы oData и RIA станут намного ближе.

person Doobi    schedule 29.06.2010

Конечная точка OData, предоставляемая службами WCF RIA, не поддерживает операции запросов и возвращает данные как есть. Это означает отсутствие пользы от IQueryable, сортировки, параметров и т. Д. Он просто предоставит доступ к вашим методам; конец истории. Однако ходят слухи, что это изменится в следующем выпуске. Однако то, что RIA Services предоставляет с точки зрения IQueryable для вызовов служб, автоматического распространения бизнес-правил со среднего уровня на пользовательский интерфейс и INotifyDataErrorInfo для передачи ошибок проверки клиенту Silverlight, является выдающимся, если вы решите их использовать.

person Keith Adler    schedule 29.03.2011