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