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


102

Я ненавиджу сайт MSDN за послуги WCF RIA. Це не говорить про те, що це таке, воно говорить лише те, що робить. У ній сказано, чого можна досягти, але не сказано, навіщо мені це потрібно.

Наприклад:

"Загальною проблемою при розробці n-ярусного рішення RIA є узгодження логіки програми між середнім рівнем та рівнем презентації".

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

"RIA Services вирішує цю проблему, надаючи компоненти фреймворку, інструменти та сервіси, які роблять логіку програми на сервері доступною для клієнта RIA, не вимагаючи дублювати цю логіку програмування вручну. Ви можете створити клієнта RIA, який обізнаний з правилами бізнесу і знайте, що клієнт автоматично оновлюється за допомогою останньої логіки середнього рівня щоразу, коли рішення перекомпілюється. "

Так це завантажує DLL з сервера? Це метадані, що описують правила для даних?

Так що це? Це просто надбудова VS 2010 для RAD? Або це технологія поверх WCF або під ним, чи що? Де воно живе? З даними, із сервером, що?

Я вдячний, якщо ви можете мені підсумувати це, будь ласка.


3
Це техніка на вершині WCF, яка використовує генерацію коду та код сторони сервера та клієнта. Основна увага зосереджується на переміщенні даних із сервера на клієнта і знову, з валідацією та іншими речами.
Rangoric

1
@Rangoric: Ви можете опублікувати це як відповідь. Короткі відповіді теж можуть бути хорошими відповідями.
Хенк Холтерман

7
Ах, хаха, я неправильно це прочитав як RIAA , і пішов психологічно.
Mateen Ulhaq

Добре знати: RIA = Різноманітні Інтернет-програми (тонкі клієнти, з яких Silverlight), тут добре пояснено . Послуги WCF RIA - це послуги RIA через WCF, пов'язуючи тонкого клієнта з сервером. " WCF RIA Services отримує дані з бази даних Microsoft Structured Query Language (SQL) сервера та робить ці дані доступними для клієнта 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. Тепер, що робити, якщо я додаю властивість до свого об’єкта домену? Чи оновилось би це саме?
Аліостад

Я додав додаткову інформацію про оновлення, вставки та видалення.
Рональд Вілденберг

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.