Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight:调用WCF服务(不是RIA)-异步模型、实体模型和数据注释?_Silverlight_Wcf_Wcf Ria Services - Fatal编程技术网

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

Silverlight:调用WCF服务(不是RIA)-异步模型、实体模型和数据注释?,silverlight,wcf,wcf-ria-services,Silverlight,Wcf,Wcf Ria Services,我一直在关注一些RIA服务的例子,虽然这是一个很好的概念,但我一直在使用WCF服务(而不是RIA),因为WPF和asp.net等其他客户端也在使用它 RIA的优点是服务的异步调用是隐藏的,但对于WCF,我认为情况并非如此,因此如何从silverlight调用WCF服务呢。添加服务引用?然后我想我得打个电话等回电话 有这方面的教程吗 这对我来说真是一个耻辱,因为我本想使用RIA服务 我想到的另一个疑问是实体模型和数据注释的使用。在ria中,这真的很容易,但是如果我使用标准wcf服务,那么我假设实体

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

RIA的优点是服务的异步调用是隐藏的,但对于WCF,我认为情况并非如此,因此如何从silverlight调用WCF服务呢。添加服务引用?然后我想我得打个电话等回电话

有这方面的教程吗

这对我来说真是一个耻辱,因为我本想使用RIA服务

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

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

因此,目前我认为我需要一个silverlight clietn应用程序和“否”ria服务,但我基本上会调用wcf服务

现在出现的问题是,我应该混合使用RIA和WCF服务吗?silverlight调用RIA,然后RIA调用WCF服务

我真的很感激任何反馈,因为我有点迷失了正确的方向。。。有了ria,事情就这么简单了:-)


提前感谢

当您向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);
        }
    }
}
使用DataServices.EmployeesService;
使用制度;
使用System.Data.Services.Client;
使用System.Windows.Controls;
命名空间数据服务
{
公共部分类主页面:UserControl
{
private AdventureWorksEntities上下文=新的AdventureWorksEntities(新Uri(“Services/EmployeesService.svc”,UriKind.Relative));
公共主页()
{
初始化组件();
DataServiceCollection数据=新的DataServiceCollection();
this.dataGrid.ItemsSource=数据;
data.LoadAsync(context.Employees);
}
}
}

我相信这可以让你开始。

你可以做到。我们刚刚(几个月前)将我们所有的WCF服务转换为RIA服务,所以我手头没有代码(加上我不在工作)向您展示一个示例。谢谢Chris,谢谢您的确认。。。是的,这对我来说仍然是一个灰色地带。我喜欢RIA服务,但我没有使用它们的选择。我的另一个想法,尽管可能是完全错误的:-)是创建一个本地(本地到silverlight webapp)wcf服务SVC,以便silverlight可以调用此服务,如果需要,我可以调用wcf服务获取数据等。我将使用本地wcf服务获取标准业务逻辑类型的内容,而不需要调用外部wcf服务。。这有意义吗?还是浪费资源?