silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight客户端和WCF服务器端共享类库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

  在Silverlight企业级项目开发中,访问数据库是很常见的事情, 这里我不详谈Silverlight如何操作数据库,详细可以访问Silverlight访问数据库三种方法 和 SilverLight数据库访问示例 两篇文章,其中介绍的很详细。在Silverlight操作数据库的方法中,比较常用的是通过WCF服务进行存取数据库。 WCF为了给Silverlight客户端提供引用共享类型,我们必

 

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

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

1. 首先创建一个项目,“SilverLightchina.CodeSharing”@H_618_26@

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

@H_618_26@

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

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

@H_618_26@

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

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

@H_618_26@

 @H_618_26@

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

@H_618_26@

 @H_618_26@

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

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

 @H_618_26@

 @H_618_26@

1@H_618_26@ using@H_618_26@ System;
@H_618_26@ 2@H_618_26@ @H_618_26@using@H_618_26@ System.Net;
@H_618_26@ 3@H_618_26@ 
@H_618_26@ 4@H_618_26@ @H_618_26@namespace@H_618_26@ SilverLightchina.CodeSharing.Entities
@H_618_26@ 5@H_618_26@ {
@H_618_26@ 6@H_618_26@     @H_618_26@public@H_618_26@ @H_618_26@class@H_618_26@ student
@H_618_26@ 7@H_618_26@     {
@H_618_26@ 8@H_618_26@         @H_618_26@public@H_618_26@ @H_618_26@String@H_618_26@ NAME { @H_618_26@get@H_618_26@; @H_618_26@set@H_618_26@; }
@H_618_26@ 9@H_618_26@         @H_618_26@public@H_618_26@ @H_618_26@String@H_618_26@ EmailAddress { @H_618_26@get@H_618_26@; @H_618_26@set@H_618_26@; }
@H_618_26@10@H_618_26@     }
@H_618_26@11@H_618_26@ }
@H_618_26@12@H_618_26@ @H_618_26@@H_618_26@

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

@H_618_26@

 

 

 

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

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

 

 

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

 

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

 

 

 

 

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

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

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

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

 

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

 

 

2. 创建一个WCF函数返回类,这里和普通的WCF访问数据库返回数据是一样的方法,这里我们调用了SilverLightchina.CodeSharing.Server的契约成员属性

using @H_618_26@System;
using @H_618_26@System.Linq;
using @H_618_26@System.Runtime.serialization;
using @H_618_26@System.serviceModel;
using @H_618_26@System.serviceModel.Activation;
using @H_618_26@System.Collections.Generic;
using @H_618_26@System.Text;
using @H_618_26@SilverLightchina.CodeSharing.Entities;
namespace @H_618_26@SilverLightchina.CodeSharing.Web
{
[serviceContract@H_618_26@(Namespace = ""@H_618_26@)]
[AspNetCompatibilityrequirements@H_618_26@(requirementsMode = AspNetCompatibilityrequirementsMode@H_618_26@.Allowed)]
public class @H_618_26@studentservice
@H_618_26@{
[OperationContract@H_618_26@]
public @H_618_26@student @H_618_26@Getstudent()
{
return new @H_618_26@student@H_618_26@()
{
Name="Jv9"@H_618_26@,EmailAddress ="QQ34506@hotmail.com"
@H_618_26@};
}
}
}

 

3. 在Silverlight客户端使用契约成员,student。首先要添加一个服务引用,添加的时候,点击“Advanced”检查是否选中,重复使用所有类库。

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

 

 

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

 

 

 

4. 在客户端添加引用。

using SilverLightchina.CodeSharing.Entities;
using SilverLightchina.CodeSharing.services;

5. 在客户端调用WCF服务。
using @H_618_26@System;
using @H_618_26@System.Windows;
using @H_618_26@System.Windows.Controls;
using @H_618_26@SilverLightchina.CodeSharing.Entities;
using @H_618_26@SilverLightchina.CodeSharing.services;
namespace @H_618_26@SilverLightchina.CodeSharing
{
public partial class @H_618_26@@H_144_270@mainPage @H_618_26@: UserControl
@H_618_26@{
public @H_618_26@mainPage()
{
InitializeComponent();
Clienttest();
}
void @H_618_26@Clienttest()
{
var @H_618_26@client = new @H_618_26@studentserviceClient@H_618_26@();
client.GetstudentCompleted += (sender,ea) =>
{
tbName.Text = ea.Result.Name;
tbEmail.Text = ea.Result.EmailAddress;
};
client.GetstudentAsync();
}
}
}

6. 返回结果为:

@L_874_84@

 

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

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

首次投稿在 银光中国网  http://silverlightchina.net/html/tips/2009/1203/276.html

大佬总结

以上是大佬教程为你收集整理的Silverlight客户端和WCF服务器端共享类库全部内容,希望文章能够帮你解决Silverlight客户端和WCF服务器端共享类库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。