• Silverlight调用WCF服务


          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):订定在通信期间改写消息内容的规范。

    协议绑定 (Binding)

      由于 WCF 支持了 HTTPTCP,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 供客户端掉用。

  • 相关阅读:
    前端每周学习分享--第7期
    前端每周学习分享--第5期
    博客迁移声明
    使用Angular CLI创建Angular 2项目
    使用Gulp压缩CSS/JS
    [JS]继承方式总结
    [JS]算法总结
    圆梦之旅 – 日本(一)攻略篇
    新年畅想
    [CSS]三栏自适应布局
  • 原文地址:https://www.cnblogs.com/xuezhi/p/2825952.html
Copyright © 2020-2023  润新知