Называют еще один WCF-сервис данных от WCF РИА услуг с использованием фреймворка лица


Я хотел бы использовать службы WCF RIA для доступа к данным из моего приложения Silverlight. Однако данные предоставляются не из локального хранилища данных, а из другой службы данных WCF (я обращаюсь к внешней CRM-системе). Я не хочу напрямую обращаться к внешнему сервису, потому что мне нужно собрать данные из нескольких источников данных в моем сервисе RIA.

Возможно ли это и каков был бы самый простой способ достичь этого? Некоторый исходный код в C# был бы оцененный.

Править: Главная проблема заключается в том, как легко заполнить сущность из внешнего сервиса. Естьсвязанный с этим вопрос , но ответ не решает мою проблему.

1 4

1 ответ:

Я думаю, что ваша путаница может заключаться в том, что мастер Visual Studio для добавления службы RIA предполагает, что вы будете использовать EntityFramework для своих данных. Я не думаю, что вы хотите создать модель EF из данных второй службы WCF. Вместо этого, создать свой РИА сервис, чтобы непосредственно вытекают из DomainService и переопределить методы, которые вам нужны. В каждом методе запрос, просто запрос к удаленной службе, и вернуть результат для клиента Silverlight. Для заказа услуг РИА магический код генерация для работы вам нужно будет определить набор объектов DTO в вашем приложении, которые переносят результаты из удаленной службы WCF.

Вот краткий пример. Примечание-Я просто придумал это, чтобы проиллюстрировать, что я имею в виду. Вам нужно будет ввести вызовы к фактической службе, которую вы используете, и построить обработку ошибок, проверку ввода и т. д.

namespace YourApp.Web 
{ 
    [EnableClientAccess] 
    public class WcfRelayDomainService : DomainService 
    { 
        public IQueryable<Restaurant> GetRestaurants() 
        { 
            // You should create a method that wraps your WCF call
            // and returns the result as IQueryable;
            IQueryable<MyDto> mydtos = RemoteWCF.QueryMethod().ToQueryable();
            return mydtos; 
        } 
        public void UpdateDTO(MyDto dto) 
        { 
            // For update or delete, wrap the calls to the remote
            // service in your RIA services like this.
            RemoteWCF.UpdateMethod(dto);
        }
    }
}

Надеюсь, что это поможет вам! Смотрите Как настроить службы RIA с Silverlight 4.0 и без EF для получения дополнительных советов.