Я думаю, что RIA Services поощряет отличные шаблоны (возможно, за исключением DomainDataSource, который многие будут использовать для представления логики доступа к данным, но я знаю, что сотрудники RIA Services ищут способы сделать DDS более дружественным к MVVM) , Вот некоторые конкретные моменты, которые мне нравятся с точки зрения архитектуры:
- Логика проверки может быть задана один раз, но применима как на стороне клиента (хороший UX), так и на стороне сервера (безопасность и согласованность для не-SL клиентов службы).
- Запросы выполняются многоуровневыми, поэтому вы можете думать о том, что вам нужно / нужно на клиенте, формулировать запрос и знать, что он будет транслирован полностью в вашу базу данных без перегрузки. Вы можете делать все это, не задумываясь об оптимизации SQL-запросов и тому подобного, но получая массу труднодостижимых преимуществ.
- Делая все привязываемыми, становится намного проще использовать MVVM, чтобы ваши взгляды были простыми и глупыми. Привязка данных - ваш друг, и RIA Services делает это не таким раздражающим / утомительным для реализации
INotifyPropertyChanged
снова и снова, плюс к этому добавлено множество других замечательных сложных для реализации интерфейсов, таких как INotifyDataErrorInfo
(я думаю) и IEditableObject
и так далее, что многие контроллеры Silverlight уважают "из коробки", чтобы "делать правильные вещи".
Полагаю, я не понимаю, что вы подразумеваете под службой, удваивающейся как DAL - DAL - это ваша модель из LINQ-To-SQL или LINQ-To-Entities (или любого другого DAL, который вам нравится, NHibernate и т. Д.) ). Служба RIA - это скорее уровень бизнес-логики, который располагается поверх DAL, и предоставляет данные таким образом, чтобы обеспечить согласованность бизнес-логики среди потребителей. В случае Silverlight он также добавляет клиентский кодовый код для проверки на стороне клиента и т. Д., Но это всего лишь добавленная стоимость для Silverlight.
Там может быть тесная связь между бизнес-объектами и пользовательским интерфейсом, но это может быть сделано с любой технологией. Предоставление правильных данных, а затем создание пользовательского интерфейса на основе этого - это то, о чем вы должны думать независимо от технологии.