Difference between datacontract and messagecontract in wcf
在WCF中有两种契约各自是DataContract和MessageContract,这篇博客来讲一下两者的差别。先看一下两者定义契约实体的方式有和不同。
1.数据契约
<span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
namespace EmployeeService
{ [DataContract(Namespace="http://Employee/employee")] public class Employee
{
private int _id;
private string _name;
private string _gender;
private DateTime _dateOfBirth; [DataMember(Name="id",Order=1)]
public int ID
{
get { return _id; }
set { _id = value; }
} [DataMember(Name = "Name", Order = 2)]
public string Name
{
get { return _name; }
set { _name = value; }
} [DataMember(Name = "Gender", Order = 2)]
public string Gender
{
get { return _gender; }
set { _gender = value; }
} public DateTime DateOfBirth
{
set { _dateOfBirth = value; }
get { return _dateOfBirth; }
} }
}
</span></span>
2.消息契约
<span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.ServiceModel;
namespace EmployeeService
{ [MessageContract(IsWrapped=true,WrapperName="EmployeeInfoObject",WrapperNamespace="http://Employee")]
public class Employee
{
private int _id;
private string _name;
private string _gender;
private DateTime _dateOfBirth; [MessageBodyMember(Order=1,Namespace="http://Employee")]
public int ID
{
get { return _id; }
set { _id = value; }
} [MessageBodyMember(Order = 2, Namespace = "http://Employee")]
public string Name
{
get { return _name; }
set { _name = value; }
} [MessageBodyMember(Order = 3, Namespace = "http://Employee")]
public string Gender
{
get { return _gender; }
set { _gender = value; }
} [MessageBodyMember(Order = 4, Namespace = "http://Employee")]
public DateTime DateOfBirth
{
set { _dateOfBirth = value; }
get { return _dateOfBirth; }
} }
}
</span></span>
3.差别一:DataContract gives very limited control over the SOAP message.
我们在先前的博客中也提到过,通过採用数据契约的方式能够改变XML元素在主体部分中的位置。仅仅有这些,因此数据契约并没有太多的控制对SOAP协议。
4. MessagecContract gives full control.
与数据契约比較的话。消息契约能够做到全然的控制SOAP协议,比方生成的XML元素header和body部分。因此採用消息契约的话,能够全然控制SOAP协议。因此也能够对我们一些敏感的信息做一下保护。
Difference between datacontract and messagecontract in wcf的更多相关文章
- WCF中DataContract和MessageContract的区别
一.代码案例 首选建立2个WCF Service,它们分别使用不同的Contract,同时创建一个Console控制台项目,作为Client: 其中,WcfServiceWithDataContrac ...
- WCF入门(11)
前言 终于出太阳了. 可惜风太大,凉在阳台上的衣服全被吹到了地上,外加几双袜子被吹掉了,gone. 第11集 Difference between DataContract and MessageCo ...
- WCF初探-22:WCF中使用Message类(上)
前言 从我们学习WCF以来,就一直强调WCF是基于消息的通信机制.但是由于WCF给我们做了高级封装,以至于我们在使用WCF的时候很少了解到消息的内部机制.由于WCF的架构的可扩展性,针对一些特殊情况, ...
- WCF技术剖析(卷1)WCF全面解析文摘
第1章 wcf简介 soa体现的是一种对关注点进行分解的思想,与技术无关 soa的基本思想: a.服务自治 独立部署,不依赖其他 b.依赖于开放的标准 采用xml,xsd,及wsdl作为服务描述的 ...
- 理解WCF中的Contracts
WCF中的Contracts WCF通过Contract来说明服务和操作,一般包含五种类型的Contract:ServiceContract,OperationContract,FaultContra ...
- WCF 已知类型和泛型解析程序 KnownType
数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...
- C# DataContract DataMember
Windows Communication Foundation (WCF) uses a serialization engine called the Data Contract Serializ ...
- WCF分布式开发步步为赢(7):WCF数据契约与序列化
本节继续学习WCF分布式开发步步为赢(7):WCF数据契约与序列化.数据契约是WCF应用程序开发中一个重要的概念,毫无疑问实现客户端与服务端数据契约的传递中序列化是非常重要的步骤.那么序列化是什么?为 ...
- WCF入门(二)-----实战开发
在这个实战中我们将使用DataContract,ServiceContract来构建WCF服务,并使用VS2008内置的“WCFSVCHost”运行我们创建的WCF服务,并使用“WCF测试客户端”来测 ...
随机推荐
- 使用JDBC进行数据库的事务操作(1)
本篇讲述数据库中非常重要的事务概念和如何使用MySQL命令行窗口来进行数据库的事务操作.下一篇会讲述如何使用JDBC进行数据库的事务操作. 事务是指数据库中的一组逻辑操作,这个操作的特点就是在该组逻辑 ...
- redhat6.3 jfreechar中文乱码解决途径
最近使用到jfreechar的项目,在转移到linux上面时出现中文乱码(中文被显示为框框),网上查了一些资料,结合自身系统的特性,总结了一种安装字体的方式.在说字体安装之前首先上个测试的代码吧:we ...
- CABasicAnimation学习Demo 包含了一些经常使用的动画效果
个人写的一些样例: // // ViewController.m // CABasicAnimationDemo // // Created by haotian on 14-6-13. // Cop ...
- Linux系统基础命令
这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...
- 熬之滴水穿石:JSP--HTML中的JAVA代码(6)
39--JSTL 在JSP编码中需考虑的一种方法,因为这种方法可以 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(五)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(五) 话接上篇,继续来说权重对排序的影响.从上面的4个测试,只能说是有个直观的理解了.“哦,是!调整权重是能影响排序了,但是好像没办法来 ...
- Android中ProgressDialog的应用
下面通过实现点击按钮来显示加载框,2秒后自动消失. 1.首先在layout的xml中添加一个按钮: <Button android:id="@+id/button1" and ...
- Hongwei Xi
Hongwei Xi Hongwei Xi Hongwei Xi's Curriculum Vita Hongwei Xi
- 线程同步辅助类——Exchanger
下面是java6中文API对Exchanger的解释: 能够在对中对元素进行配对和交换的线程的同步点.每一个线程将条目上的某个方法呈现给 exchange 方法.与伙伴线程进行匹配,而且在返回时接收其 ...
- xcode5下一个ffmpeg静态库配置
1.若要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端运行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2.xco ...