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

102

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

Например:

«Распространенной проблемой при разработке n-уровневого решения RIA является координация логики приложения между средним уровнем и уровнем представления».

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

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

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

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

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

Алиостад
источник
3
Это технология поверх WCF, которая использует генерацию кода и код как на стороне сервера, так и на стороне клиента. Он в основном ориентирован на перетасовку данных с сервера на клиент и обратно, с проверкой и другими вещами.
Rangoric
1
@Rangoric: Вы можете опубликовать это как ответ. Короткие ответы тоже могут быть хорошими ответами.
Хенк Холтерман,
7
Ах, лол, я неправильно понял это как RIAA , и сошел с ума.
Mateen Ulhaq
Полезно знать: RIA = Rich Internet Applications (тонкие клиенты, в том числе Silverlight), хорошо объяснено здесь . Службы WCF RIA - это службы RIA поверх WCF, связывающие тонкий клиент с сервером. « Службы WCF RIA извлекают данные из базы данных Microsoft Structured Query Language (SQL) Server и делают эти данные доступными для клиента Silverlight, где они представлены для редактирования и просмотра »
мин

Ответы:

109

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

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

Рональд Вильденберг
источник
Несомненно. Спасибо, что поделились этим. Я бы хотел, чтобы вы обновили сайт MSDN. Что, если я добавлю свойство к объекту домена? Обновился бы он сам?
Aliostad
Я добавил дополнительную информацию об обновлениях, вставках и удалениях.
Рональд Вильденберг,