Что такое услуги WCF RIA?

Я ненавижу сайт MSDN для служб WCF RIA. Он не говорит, что это такое, он только говорит, что он делает. В нем говорится, что он может достичь, но не говорит, зачем мне это нужно.

Например:

"Общей проблемой при разработке n-ярусное решение RIA координирует логика приложения между средними уровень и уровень представления".

Ну, это не значит для меня много.

"RIA Services решает эту проблему предоставление компонентов инфраструктуры, инструментов, и услуги, которые делают заявку логики на сервере, доступной для Клиент RIA, не требуя от вас вручную дублировать это программирование логика. Вы можете создать клиент RIA который знает о правилах ведения бизнеса и знайте, что клиент автоматически обновляется с последней логикой среднего уровня каждый раз, когда решение перекомпилировано".

Так загружает ли DLL с сервера? Это метаданные, описывающие правила для данных?

Так что это? Это просто дополнение VS 2010 для RAD? Или это технология поверх WCF или под ней или что? Где оно живет? С данными, с сервером, что?

Я ценю, если вы можете суммировать это для меня, пожалуйста.

Ответ 1

Услуги RIA - это серверная технология, которая автоматически генерирует объекты на стороне клиента (Silverlight), которые заботятся о связи с сервером для вас и обеспечивают проверку на стороне клиента.

Основным объектом внутри службы RIA является DomainService, обычно LinqToEntitiesDomainService, который подключен к модели LinqToEntities.

Ключевым моментом, который следует помнить в службах RIA, является то, что это в основном сложный трюк сборки. При создании службы домена и компиляции вашего решения создается клиентское представление вашей службы домена. Это клиентское представление имеет тот же интерфейс. Предположим, вы создали серверную службу домена CustomerService с помощью метода IQueryable<Customer> GetCustomersByCountry. Когда вы строите свое решение, класс создается в вашем проекте Silverlight под названием CustomerContext, который имеет метод GetCustomersByCountryQuery. Теперь вы можете использовать этот метод на клиенте, как если бы вы вызывали его на сервере.

Обновления, вставки и удаления следуют другому шаблону. При создании службы домена вы можете указать, хотите ли вы включить редактирование. Соответствующие методы для обновления/вставки/удаления затем генерируются в службе домена на стороне сервера. Однако на стороне клиента эти методы отсутствуют. То, что у вас есть на вашем CustomerContext, - это метод под названием SubmitChanges. Итак, как это работает:

  • Для обновлений вы просто обновляете свойства существующих клиентов (которые вы получили через GetCustomersByCountryQuery).
  • Для вставок вы используете CustomerContext.Customers.Add(new Customer(...) {...}).
  • Для удаления используется CustomerContext.Customers.Remove(someCustomer).

Когда вы закончите редактирование, вы вызываете CustomerContext.SubmitChanges().

Что касается проверки, вы можете украсить свои серверные объекты атрибутами проверки из пространства имен System.ComponentModel.DataAnnotations. Опять же, когда вы строите проект, код подтверждения теперь автоматически создается для соответствующих объектов на стороне клиента.

Надеюсь, это объяснение поможет вам немного дальше.