WCF为了给Silverlight客户端提供引用共享类型,我们必须定义相关DataContract和DataMember契约属性,通过这些属性来制定一个类的数据结构。Silverlight客户端可以通过添加引用和服务器端进行通讯。在实际项目中,这样的定义局限性太多,微软当前已经推出.Net RIA Services 来解决这个问题,但是,当前.Net RIA仍旧是测试版本,不能被运用于正式项目。针对这个问题,我看了相关Prism框架资料,Prism设计出一个WPF和Silverlight的共享代码方案,参考这个概念,我考虑将Silverlight项目中的数据契约独立提取出一个类,然后将该类共享与Silverlight和WCF之间。这样,我们可以在这个独立契约类中做一些复杂的功能同时供客户端和服务器端共享调用。但是,由于Silverlight客户端和服务器端有着不同的CLR,所以,不得不在创建项目的同时,删除一些相关有冲突的引用。详细步骤请看演示:
1. 首先创建一个项目,“SilverlightChina.CodeSharing”
2. 建立新的契约类项目,该类项目将保存DataContract和DataMember,首先创建一个Silverlight类项目,SilverlightChina.CodeSharing.Client,然后创建.Net类项目SilverlightChina.CodeSharing.Server,对于新创建类,本身都会有Class1.cs文件,在这次演示中不需要该文件,删除即可。
3. 统一命名一个命名空间,这样做是为了能够同步共享信息。分别进入两个新建类项目的属性页面,添加默认的命名空间, SilverlightChina.CodeSharing.
4. 建立一个类,创建契约成员,这个类文件可以在客户端创建,也可以在服务器端创建,这里我选择在SilverlightChina.CodeSharing.Client客户端创建。
我创建了一个新的类Student,该类描述学生信息。由于服务器端CLR不支持System.Windows类库,所以,我们需要删除其引用。
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightChina.CodeSharing.Entities
{
public class Student
{
public string Name { get; set; }
public string EmailAddress { get; set; }
}
}
5. 添加一个“链接类”到SilverlightChina.CodeSharing.Server, 通过链接类进行共享契约成员。
选择"Add Link".
这样,已经共享契约类已经建立完成,下面来演示如何使用该类.
1. 首先在Web项目中,添加SilverlightChina.CodeSharing.Server引用, 然后建立WCF服务,
2. 创建一个WCF函数返回类,这里和普通的WCF访问数据库返回数据是一样的方法, 这里我们调用了SilverlightChina.CodeSharing.Server的契约成员属性。
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
using System.Text;
using SilverlightChina.CodeSharing.Entities;
namespace SilverlightChina.CodeSharing.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class StudentService
{
[OperationContract]
public Student GetStudent()
{
return new Student()
{
Name="Jv9",
EmailAddress ="QQ34506@hotmail.com"
};
}
}
}
3. 在Silverlight客户端使用契约成员,Student。首先要添加一个服务引用,添加的时候,点击“Advanced”检查是否选中,重复使用所有类库。
4. 在客户端添加引用。
using SilverlightChina.CodeSharing.Entities;
using SilverlightChina.CodeSharing.Services;
5. 在客户端调用WCF服务。
using System;
using System.Windows;
using System.Windows.Controls;
using SilverlightChina.CodeSharing.Entities;
using SilverlightChina.CodeSharing.Services;
namespace SilverlightChina.CodeSharing
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
ClientTest();
}
void ClientTest()
{
var client = new StudentServiceClient();
client.GetStudentCompleted += (sender, ea) =>
{
tbName.Text = ea.Result.Name;
tbEmail.Text = ea.Result.EmailAddress;
};
client.GetStudentAsync();
}
}
}
6. 返回结果为:
这样已经实现了共享契约成员的功能,在上面ClientTest中,可以添加任意的方法进行数据绑定。
分享到:
相关推荐
首先,为了在Silverlight中引用WCF服务,我们需要在服务器端创建一个WCF服务。这涉及到定义服务接口、实现服务合同以及配置服务主机。例如,在`WcfServiceLib`这个文件夹中,可能包含了一个名为`IWcfService.svc.cs`...
WCF RIA服务是.NET Framework的一部分,它简化了服务器和客户端之间的数据交换。这种服务允许我们在服务器端编写业务逻辑,然后通过简单的数据绑定在客户端呈现。它的核心优点在于可以自动生成客户端代理类,使得...
WCF RIA服务是微软提供的一种技术,它允许开发者构建跨越服务器和客户端的数据驱动应用程序,而Silverlight则是一种强大的富客户端平台,用于创建具有交互性、动画效果和多媒体功能的Web应用。 首先,让我们理解WCF...
通过以上步骤,你可以理解并实现WCF服务器端和客户端的基本交互。在实际开发中,还可以根据需求调整服务配置,实现更复杂的功能,如异步调用、队列通信、WSDL导出等。记住,实践是掌握WCF的关键,尝试创建自己的服务...
WCF RIA服务是一种专门设计用于创建分布式应用程序的技术,它结合了服务器端的强大功能与Silverlight客户端的交互性和用户体验优势。 首先,让我们了解WCF RIA服务的基本概念。它允许开发者在服务器端定义业务逻辑...
Silverlight WCF RIA服务是微软提供的一种技术,它允许开发人员在客户端(通常为Silverlight应用)与服务器端之间无缝地交换数据和服务操作。 首先,RIA服务的核心目标是简化分布式应用程序的开发,尤其是对于那些...
在常规的Web应用中,Silverlight作为客户端运行在用户的浏览器中,而WCF服务则作为服务器端运行,提供数据和功能接口。为了使两者能够通信,开发者通常会配置WCF服务来支持Silverlight的跨域策略文件,允许来自不...
3. **客户端数据服务引用**:在Silverlight项目中,会自动生成一个服务引用,如"ExampleSilverlightApp.Web.ServiceReferences",它包含了与服务器端DomainService交互的代理类。这些类使得在客户端操作数据就像操作...
通过以上步骤,我们可以有效地在Silverlight客户端和WCF服务之间实现数据压缩,从而提升应用程序的性能和用户体验。然而,具体实现细节可能会根据所使用的库、WCF配置以及应用需求有所不同,需要根据实际情况进行...
1. **创建WCF服务**:在服务器端,你需要创建一个WCF服务接口和实现。这个服务将公开一系列操作合同,供Silverlight客户端调用。记得设置服务的绑定和行为,使其适应Silverlight客户端的需求。 2. **添加服务引用**...
在本实例"**wcf聊天客户端服务器端实例**"中,我们将会深入探讨如何使用WCF来创建一个聊天工具,该工具具备**点对点**和**多对多**的通信能力。这个实例对于学习和理解WCF的通信机制,以及如何实现实时在线聊天功能...
WCF服务器端是实现服务发布和处理客户端请求的核心部分。 在WCF中,服务器端的主要任务是定义服务契约(Service Contract),这是服务与客户端交互的规范,包含了服务提供的操作(Methods)及其输入和输出数据类型...
7. **数据序列化**:WCF服务和Silverlight客户端之间的数据交换依赖于数据契约和数据序列化。数据契约定义了数据结构,而数据序列化则将这些结构转换为可以在网络上传输的格式。 在提供的“WCFTest”项目中,可能...
4. **配置WCF服务**:在服务的配置文件(web.config或app.config)中,设置服务行为、绑定和终结点,确保Silverlight客户端能正确访问。 5. **处理服务调用**:在Silverlight的登录按钮事件处理程序中,调用服务...
5. **服务接口**:服务器端的WCF RIA服务定义了可供客户端调用的方法。这些接口在`DomainService`类中定义,然后由RIA服务自动生成客户端的代理代码。 在Silverlight客户端5源代码中,我们可以通过以下步骤处理服务...
这个"Silverlight使用WCF服务上传文件Demo"是一个实用示例,它展示了如何在客户端(Silverlight应用)与服务器端(WCF服务)之间有效地进行文件传输。 **Silverlight简介** Silverlight是微软开发的一个插件,用于...
WCF客户端动态设置WCF服务器主机的地址是一项重要能力,它允许客户端程序根据需要灵活地连接到不同的服务器,而无需每次更改配置文件。这种功能在多服务器环境或者需要动态负载均衡的应用中非常有用。 在给定的代码...
总结,"Silverlight+wcf n维拼图游戏"是一个集成了前端富用户体验和后端强大服务功能的项目,展示了Silverlight和WCF在游戏开发中的潜力。通过深入了解这些技术,开发者可以构建出更加复杂、有趣且具有挑战性的网络...
综上所述,创建一个WCF文件上传服务器端代码涉及到服务合同定义、数据序列化、网络通信配置、文件处理逻辑、错误处理、安全性措施以及部署和测试等多个环节。理解并掌握这些知识点,对于构建高效、安全的文件上传...
在这个示例中,我们将探讨如何使用C#语言来实现WCF服务器和客户端的交互。 一、WCF服务端创建 1. 创建服务接口:首先定义一个服务接口,该接口将包含服务要暴露的操作。例如,我们可以创建一个名为`IService`的...