Услуги RIA и службы данных ADO.NET

В настоящее время я создаю приложение для управления данными Silverlight 3. Для доступа к базе данных используются 2 общих подхода: службы RIA и службы данных ADO.NET. Кто-нибудь имеет какие-либо указания о том, когда/почему выбирать каждый подход? Вот что я собрал из своих исследований/опыта. Любые мысли?

ADO.NET, по-видимому, полезен только для строгих вызовов базы данных. Если вам необходимо предоставить службы данных другим приложениям (игнорируя ограничение домена Silverlight 3), это хороший подход. Кроме того, если синтаксис URL/Query может быть полезен в вашем приложении, это еще одно преимущество

Услуги RIA, похоже, являются более гибкими, принятыми структурами. Кажется, это дает вам больше, чем строго доступ к базе данных. У этого есть ограничение, только используемое для приложения Silverlight/Web, поскольку оно не отображается через службу.

Мысли? Идеи? Комментарии?

Ответ 1

По кабелю службы данных ADO.NET и службы RIA очень похожи (они основаны на REST).

Однако с помощью служб данных ADO.NET и всех других служб REST вам не легко увидеть API в Visual Studio. Пример: вы не знаете, какие вызовы в базе данных доступны, а возвращаемые данные не сильно типизированы. Это делает очень совместимую систему данных, но с ней может быть больно работать.

С услугами RIA вы получаете лучшее из обоих миров, так как ваш проект RIA напрямую ссылается на проекты Silverlight, поэтому Visual Studio может знать, какие методы доступны, и все строго типизировано. Все остальные приложения могут использовать эту службу (dataservice.axd), но у них нет роскоши API.

EDIT: Исправление: службы данных ADO.NET генерируют метаданные (извините за плохую информацию) http://msdn.microsoft.com/en-us/library/cc716656.aspx

Ответ 2

Это очень старый вопрос, но хотелось бы добавить ответ для читателей.

Услуги Ria - это слой поверх служб данных ADO.net. Услуги Ria используют ADO.Net в качестве базовой структуры и добавляют уровень для удобного использования для библиотеки пользовательского интерфейса.

Таким образом, вопрос может быть при использовании служб RIA и при использовании служб данных ADO.Net

Ответ 3

Я сделал прототип системы с услугами Silverlight 2 и ADO.NET Data, и в настоящее время я продвигаюсь с реализацией MVVM с использованием Silverlight 3 и RIA-сервисов для приложения LOB.

У RIA есть модель безопасности, которая избавляет вас от необходимости создавать свой собственный WCF для использования Silverlight. Он основан на модели поставщика безопасности ASP.NET. Он имеет интересную и мощную модель проверки, которая позволяет вам легко вставлять свои собственные валидаторы клиентов.

Основные проблемы с RIA Services заключаются в том, что они очень новы, а не в окончательной форме, и имеют очень небольшую документацию с более чем упрощенным сценарием senario. Бета ожидается в PDC в ноябре и RTM с EF 4.0, С# 4.0 и VS2010.

Когда вы работаете с чем-то раньше, вы можете ожидать существенного рефакторинга с изменениями по мере выпуска релизов и некоторого разочарования небольшими изменениями, которые не так легко заметить.

В настоящее время мы работаем над ошибками в EF и RIA, и нам, возможно, придется использовать службы данных, чтобы сделать некоторые вещи, пока RIA не станет более стабильным.

Существует сильная типизация как с Data Services, так и с RIA. Intellisense работает с обоими. Resharper пока не поддерживает RIA, хотя ожидается в версии 5.0.