Silverlight 4 - RIA Services - это хорошая практика кодирования? - PullRequest
4 голосов
/ 20 февраля 2011

Я довольно новичок в Silverlight.Я провел день, глядя на услуги РИА.Концепция кажется очень хорошей и позволяет сэкономить много времени на написании ориентированных на данные приложений Silverlight.Однако за время, проведенное с ним, у меня возникло ощущение, что многие могут почувствовать, что подход слишком «быстрый и грязный» и нарушит как минимум несколько лучших практик.

Например, по умолчаниювнутренний уровень обслуживания удваивается как уровень доступа к данным.И, похоже, существует тесная связь между объектами базы данных и пользовательским интерфейсом.

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

1 Ответ

2 голосов
/ 20 февраля 2011

Я думаю, что 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.

Там может быть тесная связь между бизнес-объектами и пользовательским интерфейсом, но это может быть сделано с любой технологией. Предоставление правильных данных, а затем создание пользовательского интерфейса на основе этого - это то, о чем вы должны думать независимо от технологии.

...