Зачем использовать «RIA Services Link» вместо просто конечной точки OData? - PullRequest
4 голосов
/ 29 июня 2010

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

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

Итак, если яПолучил услугу RIA с буЛогика Siness, предоставляемая через 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 со специальным набором функций, а все остальные клиенты используют открытый протокол.

Ответы [ 2 ]

5 голосов
/ 29 июня 2010

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

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

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

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

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

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

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

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

0 голосов
/ 29 марта 2011

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

...