Silverlight:调用WCF服务(不是RIA)-异步模型、实体模型和数据注释?
我一直在关注一些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:调用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服务,那么我假设实体
提前感谢当您向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服务。。这有意义吗?还是浪费资源?