`
gstarwd
  • 浏览: 1527131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Silverlight客户端和WCF服务器端共享类库

阅读更多

在Silverlight企业级项目开发中,访问数据库是很常见的事情, 这里我不详谈Silverlight如何操作数据库,详细可以访问Silverlight访问数据库三种方法SilverLight数据库访问示例 两篇文章,其中介绍的很详细。在Silverlight操作数据库的方法中,比较常用的是通过WCF服务进行存取数据库。

WCF为了给Silverlight客户端提供引用共享类型,我们必须定义相关DataContract和DataMember契约属性,通过这些 属性来制定一个类的数据结构。Silverlight客户端可以通过添加引用和服务器端进行通讯。在实际项目中,这样的定义局限性太多,微软当前已经推出.Net RIA Services 来解决这个问题,但是,当前.Net RIA仍旧是测试版本,不能被运用于正式项目。针对这个问题,我看了相关Prism框架资料,Prism设计出一个WPF和Silverlight的共享 代码方案,参考这个概念,我考虑将Silverlight项目中的数据契约独立提取出一个类,然后将该类共享与Silverlight和WCF之间。这 样,我们可以在这个独立契约类中做一些复杂的功能同时供客户端和服务器端共享调用。但是,由于Silverlight客户端和服务器端有着不同的CLR, 所以,不得不在创建项目的同时,删除一些相关有冲突的引用。详细步骤请看演示:

1. 首先创建一个项目,“SilverlightChina.CodeSharing”

Image00002

2. 建立新的契约类项目,该类项目将保存DataContract和DataMember,首先创建一个Silverlight类项 目,SilverlightChina.CodeSharing.Client,然后创建.Net类项目 SilverlightChina.CodeSharing.Server,对于新创建类,本身都会有Class1.cs文件,在这次演示中不需要该文 件,删除即可。

Image00003

3. 统一命名一个命名空间,这样做是为了能够同步共享信息。分别进入两个新建类项目的属性页面,添加默认的命名空间, SilverlightChina.CodeSharing.

Image00006

 

Image00007

 

4. 建立一个类,创建契约成员,这个类文件可以在客户端创建,也可以在服务器端创建,这里我选择在SilverlightChina.CodeSharing.Client客户端创建。

我创建了一个新的类Student,该类描述学生信息。由于服务器端CLR不支持System.Windows类库,所以,我们需要删除其引用。

 

 

<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 1  using  System;
 2  using  System.Net;
 3  
 4  namespace  SilverlightChina.CodeSharing.Entities
 5  {
 6       public   class  Student
 7      {
 8           public   string  Name {  get set ; }
 9           public   string  EmailAddress {  get set ; }
10      }
11  }
12  

 

 

 

5. 添加一个“链接类”到SilverlightChina.CodeSharing.Server, 通过链接类进行共享契约成员。

Image00008  

 

Image00010

 

Image00011

 

 

 

 

这样,已经共享契约类已经建立完成,下面来演示如何使用该类.

1. 首先在Web项目中,添加SilverlightChina.CodeSharing.Server引用, 然后建立WCF服务,

Image00014

Image00012

 

Image00013

 

 

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”检查是否选中,重复使用所有类库。

Image00015

 

 

Image00017

 

 

 

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. 返回结果为:

Image00018

 

这样已经实现了共享契约成员的功能,在上面ClientTest中,可以添加任意的方法进行数据绑定。

源代码下载:http://silverlightchina.net/uploads/soft/091203/1-0912031A139.zip

分享到:
评论

相关推荐

    silverlight与wcf互相通讯

    首先,为了在Silverlight中引用WCF服务,我们需要在服务器端创建一个WCF服务。这涉及到定义服务接口、实现服务合同以及配置服务主机。例如,在`WcfServiceLib`这个文件夹中,可能包含了一个名为`IWcfService.svc.cs`...

    WCF RIA 服务 (二十五)-- Silverlight 客户端 6 源代码

    WCF RIA服务是.NET Framework的一部分,它简化了服务器和客户端之间的数据交换。这种服务允许我们在服务器端编写业务逻辑,然后通过简单的数据绑定在客户端呈现。它的核心优点在于可以自动生成客户端代理类,使得...

    WCF RIA 服务 (二十七)-- Silverlight 客户端 8 源代码

    WCF RIA服务是微软提供的一种技术,它允许开发者构建跨越服务器和客户端的数据驱动应用程序,而Silverlight则是一种强大的富客户端平台,用于创建具有交互性、动画效果和多媒体功能的Web应用。 首先,让我们理解WCF...

    WCF服务器端与客户端的操作实例

    通过以上步骤,你可以理解并实现WCF服务器端和客户端的基本交互。在实际开发中,还可以根据需求调整服务配置,实现更复杂的功能,如异步调用、队列通信、WSDL导出等。记住,实践是掌握WCF的关键,尝试创建自己的服务...

    WCF RIA 服务 (二十六)-- Silverlight 客户端 7 源代码

    WCF RIA服务是一种专门设计用于创建分布式应用程序的技术,它结合了服务器端的强大功能与Silverlight客户端的交互性和用户体验优势。 首先,让我们了解WCF RIA服务的基本概念。它允许开发者在服务器端定义业务逻辑...

    Silverlight WCF RIA服务(六)创建RIA Services 类库 源代码

    Silverlight WCF RIA服务是微软提供的一种技术,它允许开发人员在客户端(通常为Silverlight应用)与服务器端之间无缝地交换数据和服务操作。 首先,RIA服务的核心目标是简化分布式应用程序的开发,尤其是对于那些...

    问题代码 Silverlight调用控制台宿主WCF Demo

    在常规的Web应用中,Silverlight作为客户端运行在用户的浏览器中,而WCF服务则作为服务器端运行,提供数据和功能接口。为了使两者能够通信,开发者通常会配置WCF服务来支持Silverlight的跨域策略文件,允许来自不...

    Silverlight WCF RIA服务(二十二)Silverlight 客户端 3 源代码

    3. **客户端数据服务引用**:在Silverlight项目中,会自动生成一个服务引用,如"ExampleSilverlightApp.Web.ServiceReferences",它包含了与服务器端DomainService交互的代理类。这些类使得在客户端操作数据就像操作...

    Silverlight + WCF 数据压缩

    通过以上步骤,我们可以有效地在Silverlight客户端和WCF服务之间实现数据压缩,从而提升应用程序的性能和用户体验。然而,具体实现细节可能会根据所使用的库、WCF配置以及应用需求有所不同,需要根据实际情况进行...

    SilverLight和WCF配合异步调用修改xap文件内的配置

    1. **创建WCF服务**:在服务器端,你需要创建一个WCF服务接口和实现。这个服务将公开一系列操作合同,供Silverlight客户端调用。记得设置服务的绑定和行为,使其适应Silverlight客户端的需求。 2. **添加服务引用**...

    wcf聊天客户端服务器端实例

    在本实例"**wcf聊天客户端服务器端实例**"中,我们将会深入探讨如何使用WCF来创建一个聊天工具,该工具具备**点对点**和**多对多**的通信能力。这个实例对于学习和理解WCF的通信机制,以及如何实现实时在线聊天功能...

    WCF服务器端

    WCF服务器端是实现服务发布和处理客户端请求的核心部分。 在WCF中,服务器端的主要任务是定义服务契约(Service Contract),这是服务与客户端交互的规范,包含了服务提供的操作(Methods)及其输入和输出数据类型...

    silverlight与WCF通信简单例子

    7. **数据序列化**:WCF服务和Silverlight客户端之间的数据交换依赖于数据契约和数据序列化。数据契约定义了数据结构,而数据序列化则将这些结构转换为可以在网络上传输的格式。 在提供的“WCFTest”项目中,可能...

    silverlight+Wcf实现登录

    4. **配置WCF服务**:在服务的配置文件(web.config或app.config)中,设置服务行为、绑定和终结点,确保Silverlight客户端能正确访问。 5. **处理服务调用**:在Silverlight的登录按钮事件处理程序中,调用服务...

    WCF RIA 服务 (二十四)-- Silverlight 客户端 5 源代码

    5. **服务接口**:服务器端的WCF RIA服务定义了可供客户端调用的方法。这些接口在`DomainService`类中定义,然后由RIA服务自动生成客户端的代理代码。 在Silverlight客户端5源代码中,我们可以通过以下步骤处理服务...

    Silverlight使用WCF服务上传文件Demo

    这个"Silverlight使用WCF服务上传文件Demo"是一个实用示例,它展示了如何在客户端(Silverlight应用)与服务器端(WCF服务)之间有效地进行文件传输。 **Silverlight简介** Silverlight是微软开发的一个插件,用于...

    WCF客户端动态设置WCF服务器主机[文].pdf

    WCF客户端动态设置WCF服务器主机的地址是一项重要能力,它允许客户端程序根据需要灵活地连接到不同的服务器,而无需每次更改配置文件。这种功能在多服务器环境或者需要动态负载均衡的应用中非常有用。 在给定的代码...

    silverlight+wcf n维拼图游戏

    总结,"Silverlight+wcf n维拼图游戏"是一个集成了前端富用户体验和后端强大服务功能的项目,展示了Silverlight和WCF在游戏开发中的潜力。通过深入了解这些技术,开发者可以构建出更加复杂、有趣且具有挑战性的网络...

    wcf文件上传服务器端代码

    综上所述,创建一个WCF文件上传服务器端代码涉及到服务合同定义、数据序列化、网络通信配置、文件处理逻辑、错误处理、安全性措施以及部署和测试等多个环节。理解并掌握这些知识点,对于构建高效、安全的文件上传...

    wcf c# 服务器 客户端 示例

    在这个示例中,我们将探讨如何使用C#语言来实现WCF服务器和客户端的交互。 一、WCF服务端创建 1. 创建服务接口:首先定义一个服务接口,该接口将包含服务要暴露的操作。例如,我们可以创建一个名为`IService`的...

Global site tag (gtag.js) - Google Analytics