Silverlight调用WCF服务
2012-12-20 10:12
375 查看
System.ServiceModel命名空间赋予了Silverlight对各种Web服务器的访问能力,这其中包括WebService和WCF,Silverlight通过.NET的Webservice和WCF服务可以完成很多Silverlight自身功能以外的事情。
我们常在Silverlight中调用WCF返回某类型数据集合或执行某种数据相关操作,这些集合的类型要求是WCF支持的可序列化的数据类型。
WCF几乎集合了由.NET Framework所提供的所有通信方法。通信双方的沟通方式由合约来订定。通信双方所遵循的通信方法,由协议来订定,通信期间的安全性,由双方约定的安全性层次来定义。
WCF的基本概念是以合约(Contract)来定义双方沟通的协议。
合约必须要以接口的方式来体现。而实际的服务代码必须由
这些合约接口派生并实现,合约分成了四种:
1.数据合约(Data Contract):订定双方沟通时的数据格式。
2.服务合约(Service Contract):订定服务的定义。
3.操作合约(Operation Contract):订定服务提供的方法。
4.消息合约(Message Contract):订定在通信期间改写消息内容的规范。
一个设置通信协议绑定的示例如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<!-- 设定服务系结的资讯 -->
<services>
<service name=" CalculatorService" >
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" />
</service>
</services>
<!-- 设定通讯协定系结的资讯 -->
<bindings>
<wsHttpBinding>
<binding name="Binding1">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
客户端
对于 WCF 的客户端来说,WCF 服务就像是一个 Web Service 一样,在 Visual Studio 2008 中,所有 WCF 服务的连接都是由客户端的 服务代理(WCF Service Proxy) 来运行,开发人员不用花费太多心思在通信上,而 WCF Service Proxy 在 Visual Studio 中被称为服务引用(Service Reference)。在 Visual Studio 中加入 WCF 的服务引用时,Visual Studio 会自动帮开发人员做掉一些必要工作(例如组态创建以及产生 Service Proxy 等),开发人员只需要在代码中取用 WCF Service Proxy 对象即可。
每一个 WCF 服务都会关系到地址(Address)、绑定(Binding)和契约(Contract),而 WCF 则通过 Endpoint 将 ABC 三个方面联系在一起。每一个 Endpoint 都必须包括 ABC 三个方面,缺一不可,而 host 进程会提供WCF Endpoint供客户端调用。每个 Endpoint 都对应一个唯一地址,但是多个 Endpoint 可以共享相同的绑定和契约,每个服务又可以提供多个 Endpoint 供客户端掉用。
我们常在Silverlight中调用WCF返回某类型数据集合或执行某种数据相关操作,这些集合的类型要求是WCF支持的可序列化的数据类型。
WCF几乎集合了由.NET Framework所提供的所有通信方法。通信双方的沟通方式由合约来订定。通信双方所遵循的通信方法,由协议来订定,通信期间的安全性,由双方约定的安全性层次来定义。
WCF的基本概念是以合约(Contract)来定义双方沟通的协议。
合约必须要以接口的方式来体现。而实际的服务代码必须由
这些合约接口派生并实现,合约分成了四种:
1.数据合约(Data Contract):订定双方沟通时的数据格式。
2.服务合约(Service Contract):订定服务的定义。
3.操作合约(Operation Contract):订定服务提供的方法。
4.消息合约(Message Contract):订定在通信期间改写消息内容的规范。
协议绑定 (Binding)
由于 WCF 支持了 HTTP,TCP,Named Pipe,MSMQ,Peer-To-Peer TCP 等协议,而 HTTP 又分为基本 HTTP 支持 (BasicHttpBinding) 以及 WS-HTTP 支持 (WsHttpBinding),而 TCP 亦支持 NetTcpBinding,NetPeerTcpBinding 等通信方式,因此,双方必须要统一通信的协议,并且也要在编码以及格式上要有所一致。一个设置通信协议绑定的示例如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<!-- 设定服务系结的资讯 -->
<services>
<service name=" CalculatorService" >
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" />
</service>
</services>
<!-- 设定通讯协定系结的资讯 -->
<bindings>
<wsHttpBinding>
<binding name="Binding1">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
客户端
对于 WCF 的客户端来说,WCF 服务就像是一个 Web Service 一样,在 Visual Studio 2008 中,所有 WCF 服务的连接都是由客户端的 服务代理(WCF Service Proxy) 来运行,开发人员不用花费太多心思在通信上,而 WCF Service Proxy 在 Visual Studio 中被称为服务引用(Service Reference)。在 Visual Studio 中加入 WCF 的服务引用时,Visual Studio 会自动帮开发人员做掉一些必要工作(例如组态创建以及产生 Service Proxy 等),开发人员只需要在代码中取用 WCF Service Proxy 对象即可。
每一个 WCF 服务都会关系到地址(Address)、绑定(Binding)和契约(Contract),而 WCF 则通过 Endpoint 将 ABC 三个方面联系在一起。每一个 Endpoint 都必须包括 ABC 三个方面,缺一不可,而 host 进程会提供WCF Endpoint供客户端调用。每个 Endpoint 都对应一个唯一地址,但是多个 Endpoint 可以共享相同的绑定和契约,每个服务又可以提供多个 Endpoint 供客户端掉用。
相关文章推荐
- Silverlight同步(Synchronous)调用WCF服务
- Silverlight同步(Synchronous)调用WCF服务
- Silverlight同步(Synchronous)调用WCF服务
- Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务
- Silverlight跨域调用WCF服务安全问题
- silverlight学习<三> 记录今天silverlight调用WCF服务出现的各种状况
- 稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密
- Silverlight同步(Synchronous)调用WCF服务
- Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务
- (转载)Silverlight同步(Synchronous)调用WCF服务
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- Silverlight同步(Synchronous)调用WCF服务(转)
- 稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密
- Silverlight同步(Synchronous)调用WCF服务
- Silverlight调用WCF服务,在添加WCF服务引用时,报错如下:
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- 稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密
- Silverlight同步(Synchro“.NET研究”nous)调用WCF服务
- Silverlight同步(Synchronous)调用WCF服务
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题