首语
本人在学习Silverlight 和 WCF的时候,各种问题层出不穷,在园子里面查阅大量的资料,尤其是Artech和Frank xu Lei 的WCF博文给我很大的帮助,在此衷心感谢两位。本人不才,特写下几个Silverlight和WCF通信的例子与大家分享和交流,希望初学者少走些弯路,而专心于系统的业务层的开发,高手请绕行,但欢迎拍砖!:)
本系列是面向Silverlight和WCF交互初学者的,主要包括:
Silverlight 通过httpBinding方式访问IIS 宿主WCF
Silverlight通过netTcpBinding方式访问IIS 宿主WCF
Silverlight通过netTcpBinding方式访问IIS 宿主WCF(全双工)
Silverlight通过httpBinding方式访问控制台宿主WCF
Silverlight通过netTcpBinding方式访问控制台宿主WCF
Silverlight通过httpBiding方式访问IIS宿主WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最多的,我们用个很简单的例子进行演示。
项目结构:
项目目结构简单说明:
程序集名称 | 需添加的引用 | 简要说明 |
LxContracts | System.Runtime.Serialization System.ServiceModel | 用于存放操作契约与数据契约 |
LxServices | LxContracts[项目] | 服务,操作契约的实现 |
WcfHost.web | LxContracts[项目] 和LxServices[项目] | 利用Svc文件发布服务的站点 |
SilverlightDemo | Silverlight程序,调用WCF服务 |
注意:建立Silverlight程序的时候,不需要承载网站,建立一个单一的Silverlight程序即可,这样做的原因是,把Silverlight和WCF服务不放到同一个站点下面,是为了演示跨域的问题。
代码实现:
类库LxContracts:(包括数据契约Student.cs和操作契约IStudent.cs)
using System; System.Collections.Generic; System.Linq; System.Text; System.ServiceModel; System.Runtime.Serialization; namespace LxContracts { [DataContract] public class Student { /// <summary> /// 学生编号 </summary> [DataMember] int StuId { get; set; } 学生姓名 string StuName { 所在班级 string ClassName { 联系电话 string TelPhoneNum { ; } } }