本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆

一、服务协定简介:

1、WCF所有的服务协定层里面的服务接口,都有一个ServiceContract的特性修饰,服务接口里面的操作方法都有OperationContract特性修饰,why?

(1)、服务契约的实现要靠ServiceContractAttribute 属性定义

(2)、服务契约方法的实现要靠 OperationContractAttribute 属性定义

2、如果一个协定(接口)需要向除其之外的客户端公开,那么该接口就应该加上[ServiceContract]特性修饰,那么其信息就由ServiceContractAttribute 属性表示,ServiceContractAttribute关联的接口与Web服务描述语言(WSDL)<portType>元素松散相关,所以服务协定也具备了以下两个功能:

(1)、可用于服务端以指定终结点(可以是配置文件,也可以是硬编码)的方式,来控制其向其他客户端暴露的内容

(2)、客户端可以通过它来于服务端进行通信

3、定义完了服务协定层(服务接口层),就可以实现当前协定层,实现服务协定层后并将其与WCF 绑定和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用。

4、WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:

(1)、服务做些什么——服务所提供的操作(方法)

(2)、如何访问服务——和服务交互的数据格式以及必要协议

(3)、服务位于何处——协议相关的地址,如URL

在WCF中,WSDL是元数据交换的一种数据格式,通过它的描述,WCF服务程序间就可以进行相应的数据交换,甚至是跨平台的应用间也可以进行数据交换。

二、服务协定ServiceContract属性:

1、服务契约加上ServiceContract特性修饰时,可以看到它有两个构造函数,一个是无参,一个有参。下面具体来说下,有参的和它的参数究竟是干嘛用的

(1)、Name:获取或设置Web服务描述语言(WSDL)中的<portType>元素的名称,设置此名称之后,默认生成的代理类就是该名称+Client

(2)、Namespace:获取或设置 Web 服务描述语言 (WSDL) 中的 <portType> 元素的命名空间

(3)、ConfigurationName:用于查找应用程序配置文件中的服务元素的名称。 默认值是服务实现类的名称。

(4)、ProtectionLevel:使用 ProtectionLevel 属性指定协定绑定对公开协定的终结点要求的加密和/或数字签名的程度。 在此设置的值是为包括错误在内的所有操作消息提供的默认值。

(5)、SessionMode:获取或设置是否允许、不允许或要求会话。使用 SessionMode 属性来要求在终结点之间支持会话的绑定。 会话就是将在两个或多个终结点之间交换的消息集相互关联的方式。 如果您的服务支持信道会话,则可以使用 InstanceContextMode 属性指定您的服务协定实现实例与信道会话实例之间的关系。 如果绑定不支持会话,则会引发异常。具体请参考:WCF系列教程之WCF中的会话.

(6)、CallbackContract:获取或设置当协定为双工协定时的回调协定类型。在 CallbackContract 属性中指定一个接口,该属性表示双向(双工)消息交换中所需的反向协定。 这使得客户端应用程序能够侦听入站操作调用,该调用可以由服务器端服务应用程序独立于客户端活动进行发送。 具有单向操作的回调协定表示从客户端可以处理的服务发出的调用。

WCF系列教程之WCF服务协定的更多相关文章

  1. WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...

  2. WCF系列教程之WCF服务配置工具

    本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft ...

  3. WCF系列教程之WCF客户端调用服务

    1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...

  4. WCF系列教程之WCF操作协定

    一.简介 1.在定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract ...

  5. WCF系列教程之WCF中的会话

    本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...

  6. WCF系列教程之WCF消息交换模式之单项模式

    1.使用WCF单项模式须知 (1).WCF服务端接受客户端的请求,但是不会对客户端进行回复 (2).使用单项模式的服务端接口,不能包含ref或者out类型的参数,至于为什么,请参考C# ref与out ...

  7. WCF系列教程之WCF实例化

    本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...

  8. WCF系列教程之WCF服务配置

    文本参考自:http://www.cnblogs.com/wangweimutou/p/4365260.html 简介:WCF作为分布式开发的基础框架,在定义服务以及消费服务的客户端时可以通过配置文件 ...

  9. WCF系列教程之WCF客户端异常处理

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4414393.html,纯属读书笔记,加深记忆 一.简介 当我们打开WCF基础客户通道,无论是显示打开还是通过 ...

随机推荐

  1. FCLK、HCLK、PCLK

    一,PLL    S3C2440 CPU主频可达400MHz,开发板上的外接晶振为12M,通过时钟控制逻辑的PLL(phase locked loop,锁相环电路)来倍频这个系统时钟.2440有两个P ...

  2. view是视图层+action是控制层+service是业务层+dao是数据访问层。

  3. CentOS 7.4 shell 不显示当前用户和路径的问题

    步骤如下:   vim ~/.bash_profile (不用管.bash_profile这个文件有几个,自己新建一个也是可以的)    在最后加上 export PS1='[\u@\h \W]\$' ...

  4. linux 常用命令,开发记住这些基本能够玩转linux

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  5. CheckBox使用记录

    页面显示 页面代码 <div> <div><input type="checkbox" value="" class=" ...

  6. Oracle数据泵导出导入(expdp/impdp)

    一.创建表空间 create tablespace atp logging datafile 'D:\oracle\oradata\orcl\atp.dbf' size 50m autoextend ...

  7. C# GetHashCode、Equals函数和键值对集合的关系

    C# GetHashCode.Equals函数和键值对集合的关系 说明 HashCode:Hash码.特性:两个值,相同的的值生成的Hash肯定相同,Hash不同的值肯定不同. 下面一张图中,只有和“ ...

  8. Android 色差(尤其白色)的解决办法

    Android 中有时出现色差,我碰到的情况是 Galaxy ACE4 中的白色和系统白色不同,所以显示时候颜色不同,很难看. 我发现的问题是 Color.white, android.R.color ...

  9. Android - Telephony API 1.5

    TelephonyManager: 1. public String getDeviceSoftwareVersion() : software version number, ex: IMEI/SV ...

  10. 牛客OI赛制测试赛1 题解

    A 斐波那契 数竞生:这不是送分的常识吗? 这里引入一个叫卡西尼恒等式的玩意. 公式表达就是 设$fib[i]$为斐波那契数列的第$i$项$(i>0,i \in N_+)$ 则有 $fib[i+ ...