Silverlight:调用WCF服务(不是RIA) - 异步模型,实体模型和数据注释?

时间:2011-01-08 17:43:46

标签: silverlight wcf wcf-ria-services

我一直在关注RIA服务的一些例子,虽然这是一个很棒的概念,但是我被锁定使用WCF服务(不是RIA),因为它也被WPF和asp.net等其他客户使用。

关于RIA的好处是,ASYNC调用该服务是隐藏的,但是对于WCF,我认为情况并非如此,那么如何从silverlight调用WCF服务呢?添加服务参考?然后我认为我必须打电话并等待回电?

有关此的任何教程吗?

这对我来说真是一种耻辱,因为我本来希望使用RIA服务。

我想到的另一个疑问是使用实体模型和数据注释。在ria这真的很容易,但如果我使用标准的wcf服务,那么我认为实体类(实际上我使用的是ENtity框架)将到达客户端(silverlight)因为我添加服务参考?我在这里纠正吗?

通过数据注释,ria自动将带有数据注释的实体类从服务器(ria)发送到客户端(silverlight) - 但标准WCF服务的情况如何。

所以目前我相信我需要一个silverlight clietn app和“NO”ria服务,但我基本上会打电话给wcf服务。

现在提出的问题是我应该使用RIA和WCF服务的组合吗? silverlight呼叫RIA然后RIA呼叫WCF服务......

我真的会反馈任何反馈,因为我有点迷失正确的方向......有了ria - 它很简单: - )

提前致谢

1 个答案:

答案 0 :(得分:0)

当您向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);
        }
    }
}

我相信this Code Project article可以让你开始。