В чем разница между WCF и классом службы домена службы RIA?

Я просто представляю себе основные различия между Silverlight 3 и предшественником. Рассматривая класс службы домена в службах RIA, выполнение кажется довольно упрощенным. Может ли кто-нибудь объяснить основные различия между этим и Windows Communication Foundation?

Использует ли класс домена службы WCF или какую-либо другую инфраструктуру служб в фоновом режиме, или это новое с нуля?

Ответы

Ответ 1

Я рекомендую вам прочитать эту статью в блоге, в которой говорится, что:

Наше мышление о работе службы RIA действительно растет из проекта LINQ несколько лет назад. LINQ интегрирует семантику запроса в языки (С#, VB и т.д.), Обеспечивая общую абстракцию для работы с данными; являются ли эти данные объектами CLR в памяти, XML, реляционными данными или чем-либо еще. С RIA Services мы расширяем этот шаблон, предлагая предписывающую модель для выставления вашей логики домена по LINQ. Мы считаем, что логика домена является той частью вашего приложения, которая очень специфична для вашего домена - это конкретная бизнес-проблема, которую вы решаете.

Таким образом, для "логики домена" LINQ относится к данным, тогда как WCF по существу является поставщиком услуг.

В традиционном развитии N-уровня это означает, что:

... вы должны думать о сервисах RIA как о более проницательном слое поверх ADO.NET Data Services и WCF... Мы также ожидаем, что в конечном итоге обеспечим полный доступ ко всей мощности и гибкости от базовых служб WCF, таких как как высоко оптимизированная двоичная сериализация.

Или у вас также есть возможность использовать новый "шаблон службы RIA" для:

... легко создавать приложения ASP.NET, пользуясь всеми встроенными функциями служб RIA, такими как проверка данных, авторизация и т.д. В предпросмотре марта мы предлагаем элемент управления asp: DomainDataSource, который позволяет очень легко ASP.NET WebForms доступа к вашей логике домена. В основе этого лежит будущая версия динамических данных ASP.NET, которая позволяет легко создавать общий стандартный пользовательский интерфейс на основе логики вашего домена.

Это означает, что службы RIA могут:

  • Сядьте поверх WCF (по существу, обертывая WCF-сервисы для использования приложения-клиента).
  • Замените слой WCF службами RIA с использованием альтернативного источника данных (например, ADO.NET Entity Data Model/Entity Framework в соответствии с Building A Data-Driven Expense Приложение с Silverlight 3)

Также стоит проверить Mix09: создание замечательных бизнес-приложений с Silverlight 3 для другого примера.

Как я пишу это, я только что открыл Обзор Microsoft.NET RIA Services, который выглядит так, что он объясняет много рациональных за RIA Services (и, вероятно, немного яснее, чем некоторые из вышеперечисленных):

Ответ 2

Мы используем комбинацию обоих. WCF для громоздких данных, которые лучше работают с двоичной сериализацией и RIA для объектов CRUD, потому что код намного быстрее записывается и поддерживается. Если бы RIA поддерживал двоичный файл, мы использовали бы его вместо WCF, но я уверен, что он не находится в текущей версии.

Ответ 3

WCF имеет гораздо больше возможностей для отладки, чем в RIA. Доменный источник данных проще настроить, но сложнее определить ошибки. В большинстве случаев WCF будет использовать для создания коммуникационной системы взаимодействия, которая избавляет от старых WSDL с безопасностью заголовка WSSE.