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