最近正在开发一个项目,需要应用到Silverlight以及数据库。在正式开工之前需要掌握将数据从服务端送到客户端的技术,我们采用建立WCF服务的方法。
“做中学”是最好的学习方法,真正实践之后学习者将会有更多的自信和把握,这种感觉将激励他更好的走下去,这也就是“Hello World”的意义之一。
本文讲述如何一步一步搭建,完成借助WCF建立起Silverlight客户端和服务端的信息传输通道。
这里的解决方案使用Visual Studio 10,.Net Framework 4.0, Silverlight 4.0
1.建立名为DataHighway的Silverlight Application
下图中,Project DataHighway是客户端,Project DataHighway.Web是服务端。
2、新建两个项目。
创建名为DataHighway.Client的Silverlight Class Library,它是配合用户端的。
创建名为DataHighway.Server的Class Library,它是配合服务端的。
为两个新建项目设置统一的命名空间
3、我们设计在客户端和服务端可以传输一个类,里面装着一个人的基本信息。
在DataHighway.Client增加一个类,名为Person,在DataHighway.Client中生成Person.cs文件。
这个类要由客户端和服务端共享,而服务端并不支持System.Windows类库,所以在Person.cs中删除其System.Windows系列的引用。创建Person 类如下
复制
usingSystem; usingSystem.Net; namespaceDataHighway.Classes { publicclassPerson { publicstringName { get;set;} publicintAge; publicstringSchool { get;set;} publicstringMajor { get;set;} } }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
4、在DataHighway.Server项目中,添加Person.cs类的链接
右键DataHighway.Server项目,选择Add-> Existing Item,找到DataHighway.Client文件夹中的Person.cs文件,选择Add As Link
5、在服务端添加WCF服务
在DataHighway.Web项目中添加名为PersonService.svc的Silverlight-enabled WCF Service
如下图
#p#
6.在项目DataHighway.Web中添加到DataHighway.Server的引用(Add Reference)
如下图所示
7. 创建WCF函数,返回Person类
在PersonService.svc.cs中修改代码
首先添加引用命名空间
usingDataHighway.Classes;
然后修改PersonService.svc.cs代码如下:
复制
usingSystem; usingSystem.Linq; usingSystem.Runtime.Serialization; usingSystem.ServiceModel; usingSystem.ServiceModel.Activation; usingDataHighway.Classes; namespaceDataHighway.Web9{ [ServiceContract(Namespace ="")] [SilverlightFaultBehavior] [AspNetCompatibilityRequirements(RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed)] publicclassPersonService { [OperationContract] publicPerson GetPerson() { returnnewPerson() { Name ="Jun Tang", Age =20, School ="University of Science and Technology of China", Major ="Computer Science" }; } } }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
8.在客户端添加WCF服务引用
将PersonService.svc设置为Start Page,按F5进入Debug模式,记下PersonService.svc的地址
右键DataHighway工程,添加服务引用(Add Service Reference),将刚才保存的地址复制进去
单击Advanced,确认Reuse types in all referenced assemblies,如下图
9.设计UI界面
使之能够明了的现实Person的各个属性
10.在客户端使用WCF服务
在客户端中添加引用(Add Reference)
在MainPage.xaml.cs中添加引用
usingDataHighway.Classes;usingDataHighway.PersonServices;
然后在MainPage.xaml.cs修改代码
复制
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Net; usingSystem.Windows; usingSystem.Windows.Controls; usingSystem.Windows.Documents; usingSystem.Windows.Input; usingSystem.Windows.Media; usingSystem.Windows.Media.Animation; usingSystem.Windows.Shapes; usingDataHighway.Classes; usingDataHighway.PersonServices; namespaceDataHighway { publicpartialclassMainPage : UserControl { publicMainPage() { InitializeComponent(); ClientTest(); } voidClientTest() { var client =newPersonServiceClient(); client.GetPersonCompleted +=(sender, ea) => { textBoxName.Text =ea.Result.Name; textBoxAge.Text =ea.Result.Age.ToString(); textBoxSchool.Text =ea.Result.School; textBoxMajor.Text =ea.Result.Major; }; client.GetPersonAsync(); } } }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
11、将DataHighwayTestPage.html设置为Start Page,运行程序
上图中是在客户端显示,而Jun Tang同学的个人信息却是从服务端通过WCF服务传过来的。
目标圆满达成!
原文链接:http://www.cnblogs.com/rosting/archive/2011/09/08/2171867.html
【编辑推荐】