本章节主要目的:了解[ServiceContract]特性

如前几章的进度,相信已经可以自己编写服务契约以及如何在客户端调用配置好的服务了。

本片主要讲解一下SerivceContract中的几个重要特性。

1.先看一下SerivceContract特性的成员列表

参数                     说明

CallbackContract         当契约是双工时,读取或设置回调契约的类型

ConfigurationName        获取或设置服务在应用程序配置文件中的名称

HasProtectionLevel       读取一个值,表示此成员是否有一个保护级别

Name                     获取或设置WSDL文档中<portType>元素的名称

Namespace                获取或设置WSDL文档中<portType>元素的名称空间

ProtectionLevel          设置对契约的绑定是否支持ProtectionLevel属性的值

SessionMode              获取或设置会话是否允许,以及是否得到了请求

好了,ServiceContract特性是指定附加上的类或接口做为服务的契约。显示的使接口定义为CLR接口,并且使它能够执行WCF的操作,且每一个[ServiceContract]属性都会映射到等价的WDL portType声明中。

CallbackContract

此参数用于获取或设置当前契约在双工模式通信时回调的契约。它包涵了回调契约的类型。示例代码:

namespace CallbackContractDemo
{[ServiceContract(CallbackContract = typeof(IDemoCallbackContract))]public interface IDemo{[OperationContract]int Add(int a, int b);}public interface IDemoCallbackContract{int GetResult(int c);}
}

大家可以看到CallbackContract = typeof(IDemoCallbackContract),那IDemoCallbackContract的内容由调用的客户端去实现。

ConfigurationName

ConfigurationName用于获取或设置配置文件中的元素名称。示例代码:

[ServiceContract(ConfigurationName="Service")]
public interface IDemo
{[OperationContract]int Add(int a, int b);
}

下面是配置文件的内容

<configuration><system.servicemodel><services><service name="Demo"></service></services></system.servicemodel>
</configuration>

HasProtectionLevel

这个就不多说了,就读取一个值,表示此成员是否有一个保护级别。

Name

Name参数是用来设置或获得在WSDL中<portType>元素的名称。

当然也可以用于不想将函数名称以实名暴露在外面。

 

Namespace

Namespace参数用来设置或获取WSDL中<portType>元素的命名空间。默认为http://tempuri.org

使用命名空间可以防止接口或类的命名冲突。当然也可以用于不想将函数名称以实名暴露在外面。

ProtectionLevel

设定保护绑定的要求,每个端点的加密以及数字签名等。

ProtectionLevel的参数的值来自System.Net.SecurityLevel.ProtectionLevel枚举,也可以用下面的值:

EncryptAndSign:签名和加密来保证传输数据的机密性和完成性。

None:只验证。

Sign:签名能够保证传输数据的完整性,不进行加密。

SessionMode

此属性指定会话的类型。

也是一个枚举SessionMode。

Allowed:如果进入的连接支持可靠会话,则契约支持可靠会话。

NotAllowed:指定的契约不支持可靠的会话。

Required:指定需要可靠会话的契约。

要考虑的可靠会话的情况:

  • 希望提供HTTP会话
  • 在端点之间有间断连接
  • 存在代理媒介或传输桥
  • 在端点之间有SOAP媒介

由于时间问题 待续中....见谅

转载于:https://www.cnblogs.com/wujiang/archive/2012/01/06/2314978.html

(2) 第二章 WCF服务与数据契约 服务契约详解(三)- [ServiceContract]特性相关推荐

  1. 在列表前方插入一个数据_Python基础知识详解(三):数据结构篇

    作者 | CDA数据分析师 1.列表的概念 列表(list)是用来存储一组有序数据元素的数据结构,元素之间用都好分隔.列表中的数据元素应该包括在方括号中,而且列表是可变的数据类型,一旦创建了一个列表, ...

  2. 第二章 物理层 2,3 数据通信基础知识 [计算机网络笔记]

    第二章 物理层 2,3 数据通信基础知识 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: (了解即可) 通信方式:单工/半双工/全双工 传输方式:并行/串行 ...

  3. WCF服务端运行时架构体系详解[下篇]

    作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象.站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象.如果站在WCF服务端运行时框架来说,终结点实际上指 ...

  4. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. 一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图)值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话:"八小时内谋生活,八小时外谋发展. ...

  6. Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解

    本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 L ...

  7. 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解...

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...

  8. Android实战:CoolWeather酷欧天气(加强版数据接口)代码详解(上)

    -----------------------------------该文章代码已停更,可参考浩比天气(更新于2019/6/25)----------------------------------- ...

  9. kettle工具下载、安装、数据迁移、定时任务详解

    kettle工具下载.安装.数据迁移.定时任务详解 篇幅有点长,将这五个内容放在了一篇文章里,其中最主要的是数据迁移和定时任务 目录 目录 一.简单介绍 二.下载 三.安装 四.数据迁移:包括单表整体 ...

  10. python接入excel_使用python将excel数据导入数据库过程详解

    因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...

最新文章

  1. 简单明了!OLTP场景下的数据分布式设计原则
  2. 如何扩展Dojo tree成chekbox tree
  3. ZOJ 3822 Known Notation(2014牡丹江Regional K题)
  4. 云计算简介+云计算建站平台
  5. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
  6. (转) 淘淘商城系列——Redis五种数据类型介绍
  7. Chrome 开发工具 Workspace 使用
  8. RedisUtil - Redis功能介绍,五种数据类型的使用,Spring和Redis的集成
  9. 系统变量之System.getenv()和System.getProperty()
  10. 开关电源模块并联供电系统_你了解UWE/F_S-1/3WR3系列小功率模块电源吗?
  11. Visual Studio 常用快捷键(一)
  12. git remote: User permission denied
  13. FA:萤火虫算法的改进及Python实现
  14. 数据库笔试题 (3)
  15. 计算机二级考试vb内容,计算机二级VB考试考什么内容?(一)
  16. Scan Reorder Formal
  17. [虎符CTF 2021]Internal System
  18. 【只推荐一位】木东居士,数据挖掘的大神!
  19. 获两个千亿IPO投资人王刚:要逼自己在质上进取,不是在量上贪婪
  20. Excel-数据透视表快捷操作--数值占比汇总

热门文章

  1. birt脚本for循环语句_如何使用 for 循环语句嵌套方法!
  2. Qt笔记-QSslSocket双向认证
  3. Qt工作笔记-主界面往模式对话框emit信号,有注意的问题
  4. 图像滤波与滤波器基础知识
  5. 同省异地社保卡要换吗_攀枝花社保卡在成都住院可直接结算吗,要办理异地就医备案才行...
  6. python编辑程序模型_python并发编程之IO模型
  7. android AVB2.0学习总结
  8. 二分法python上机实验报告_二分查找-Python刷题笔记
  9. gitlab修改管理员密码流程
  10. Ubuntu 20.04 linux系统安装docker