Silverlight: вызов служб WCF (не RIA) - асинхронная модель, модели объектов и аннотации данных? - PullRequest
0 голосов
/ 08 января 2011

Я следил за некоторыми примерами служб RIA и, хотя это отличная концепция, я заблокирован с использованием службы WCF (не RIA), поскольку она также используется другими клиентами, такими как WPF и asp.net.

Хорошая вещь в RIA заключалась в том, что вызов службы ASYNC был скрыт, но с WCF я предполагаю, что это не тот случай, так как можно вызвать службу WCF из silverlight.Добавить сервис Ссылка?и затем я предполагаю, что мне нужно позвонить и дождаться обратного вызова?

Есть ли уроки по этому вопросу?

Это настоящий позор для меня, так как я хотел бы использовать услуги RIA.

Еще одно сомнение, которое у меня возникает, - это использование моделей сущностей и аннотаций данных.В риа это было действительно легко, но если я использую стандартные сервисы wcf, то я предполагаю, что классы сущностей (на самом деле я использую платформу ENtity) прибудут на клиента (silverlight), потому что я делаю Add Service Reference?Правильно ли я здесь?

С аннотациями данных ria автоматически отправляла классы сущностей с аннотациями данных с сервера (ria) клиенту (silverlight) - но как обстоят дела со стандартными сервисами WCF.

Так что в настоящее время я считаю, что мне нужно приложение silverlight clietn и «НЕТ» риа-сервисы, но я в основном хотел бы позвонить в сервисы wcf.

Вопрос, который возникает сейчас, должен ли я использовать сочетание служб RIA и WCF?silverlight вызывает RIA, а затем RIA вызывает WCF Service ...

Я был бы очень признателен за любые отзывы, так как я немного потерял правильное направление ... С РИА - это было так просто: -)

Заранее спасибо

1 Ответ

0 голосов
/ 10 января 2011

Когда вы добавляете сервисную ссылку в проект Silverlight, клиентский код будет автоматически сгенерирован для вас, т.е. вы получите класс вида:

public partial class AdventureWorksEntities : global::System.Data.Services.Client.DataServiceContext

С этого момента вы можете использовать класс DataServiceCollection для того, чтобы скрыть всю клиент-серверную логику под капотом. Например:

using DataServices.EmployeesService;
using System;
using System.Data.Services.Client;
using System.Windows.Controls;

namespace DataServices
{
    public partial class MainPage : UserControl
    {
        private AdventureWorksEntities context = new AdventureWorksEntities(new Uri("Services/EmployeesService.svc", UriKind.Relative));

        public MainPage()
        {
            InitializeComponent();

            DataServiceCollection<Employee> data = new DataServiceCollection<Employee>();
            this.dataGrid.ItemsSource = data;
            data.LoadAsync(context.Employees);
        }
    }
}

Я считаю, что эта статья Кодового проекта может помочь вам начать работу.

...