WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签
属性标签,成为定义协议的主要方式。先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则。
服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的一部分,以及传输对象的定义。如果已经有所了解,请直接PASS。
1、ServiceContract(服务协定)
全名:System.ServiceModel.ServiceContractAttribute
功能:指示接口或类在应用程序中定义服务协定。
简单一句话:标识此接口是否是服务协定,是否需要公开为服务。
详细:使用接口(或类)上的 ServiceContractAttribute 属性定义服务协定。然后使用一个或多个类(或接口)方法中的 OperationContractAttribute 属性定义协定的服务操作。实现服务协定后并将其与binding和 EndpointAddress 对象一起使用时,此服务协定将公开以供客户端使用。
使用规则:
ConfigurationName 属性指定要使用的配置文件中的服务元素的名称。
Name 和 Namespace 属性控制 WSDL <portType> 元素中的协定名称和命名空间。
SessionMode 属性指定协定是否需要支持会话的绑定。
CallbackContract 属性指定双向(双工)对话中的返回协定。
HasProtectionLevel 和 ProtectionLevel 属性指示是否所有支持协定的消息都具有一个显式 ProtectionLevel 值,如果有,处于什么级别。
案例:
- [ServiceContract(Namespace="http://wcf.yank.com",Name="Service1",ProtectionLevel=ProtectionLevel.EncryptAndSign)]
- public interface IService1
- {
- [OperationContract]
- string GetData(int value);
- [OperationContract]
- CompositeType GetDataUsingDataContract(CompositeType composite);
- // TODO: 在此添加您的服务操作
- }
深入了解:
http://msdn.microsoft.com/zh-cn/library/system.servicemodel.servicecontractattribute(v=vs.100).aspx
2、OperationContract(操作协定)
全名: System.ServiceModel.OperationContractAttribute
作用:指示方法定义一个操作,该操作是应用程序中服务协定的一部分。
简单一句话:标识哪些操作属于服务协定一部分。如果不设置该属性,使用者则看不到此方法。
使用 OperationContractAttribute 属性控制该操作的结构以及以元数据表示的值:
Action 属性指定唯一标识该操作的操作。 根据请求消息的操作将它们调度至方法。
AsyncPattern 属性指示使用 Begin/End 方法对可以实现或异步调用该操作。
HasProtectionLevel 属性指示是否已显式设置 ProtectionLevel 属性。
IsOneWay 属性指示该操作只包含单个输入消息。该操作没有关联的输出消息。
IsInitiating 属性指定该操作是否可以是会话中的初始操作。
IsTerminating 属性指定该操作完成后, 是否试图终止当前会话。
ProtectionLevel 属性指定运行时操作要求的消息级安全性。
ReplyAction 属性指定该操作答复消息的操作。
案例:
- [OperationContract]
- string GetData(int value);
如果需要深入了解,可以查看以下
3、DataContract(数据协定)
全名:System.Runtime.Serialization.DataContractAttribute
功能:指定该类型要定义或实现一个数据协定,并可由序列化程序(如 DataContractSerializer)进行序列化。若要使其类型可序列化,类型作者必须为其类型定义数据协定。
简单一句话:定义数据协定,用于数据传输。
案例:
- // 使用下面示例中说明的数据协定将复合类型添加到服务操作
- [DataContract]
- public class CompositeType
- {
- bool boolValue = true;
- string stringValue = "Hello ";
- [DataMember]
- public bool BoolValue
- {
- get { return boolValue; }
- set { boolValue = value; }
- }
- [DataMember]
- public string StringValue
- {
- get { return stringValue; }
- set { stringValue = value; }
- }
- }
序列化时,也应用到此标签,具体可见:
http://www.cnblogs.com/yank/p/3198082.html
深入了解:
4、DataMember(数据成员协定)
全名: System.Runtime.Serialization.DataMemberAttribute
功能:指定该成员是数据协定的一部分并可由 DataContractSerializer 进行序列化。
简单一句话:标识数据协定的成员
案例:
- [DataMember]
- public bool BoolValue
- {
- get { return boolValue; }
- set { boolValue = value; }
- }
如需深入了解:
WCF入门教程(三)定义服务协定--属性标签的更多相关文章
- WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- 无废话WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- 【转】WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- 无废话WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- 【转】WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- WCF入门教程(三)属性标签
属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的一部分,以及传输对象的定义.如果已经有所了解, ...
- WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]
WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...
- WCF入门教程(四)通过Host代码方式来承载服务
WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...
- WCF入门教程(二)如何创建WCF服务
WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...
随机推荐
- ASP.NET MVC 5 入门指南汇总
经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...
- windows下 安装Kali Linux到 U盘的方法
作者:玄魂工作室 \ 2016年10月20日 把Kali Linux安装到U盘好处很多,可以从U盘启动使用整个电脑的硬件资源, 可以随身携带,减少对自己电脑的影响. 今天要给大家讲的是如何在windo ...
- Linux RAID卡优化
200 ? "200px" : this.width)!important;} --> 介绍 我们的生产服务器经常会做raid存储,但是单单做了raid就能保证性能高效和数据 ...
- MySQL 子分区
200 ? "200px" : this.width)!important;} --> 介绍 子分区其实是对每个分区表的每个分区进行再次分隔,目前只有RANGE和LIST分区 ...
- PC使用网线上网的条件下,通过PC的Wifi共享提供手机上网教程
场景和目标 你有一个笔记本(或装有无线网卡的PC),可以通过网线上网,但是没有无线路由器.现在想要通过笔记本的无线网,让手机也能共享wifi上网. 环境 Win7 操作系统.带有无线网卡的PC或笔记本 ...
- 携程App的网络性能优化实践
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...
- fir.im Weekly - 除了新 MacBook Pro,近期值得关注的移动开发好资源
最近,最引人瞩目的莫过于 Apple 产品发布会,MacBook Pro 的更新可能是四年来变化最大的一版.除了更轻.更薄.性能更好.电力更足之外,最大的变化是加入了Touch Bar,被定义为 Ma ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
- SQL中Group By的使用
1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win ...