本文的主要结构为:1)WCF数据契约的概述2)数据契约特性 3)实现代码分析及运行结果4)源码下载5)下一篇计划6)参考说明
(1)WCF数据契约的概述(What)
1.1数据契约是服务支持的契约职责的一部分,就像服务契约是组成契约的一部分一样。数据契约发布于服务元数据中,服务元数据允许客户端将与平台、技术无关的数据类型表示形式转换为客户端本地的表示形式。
1.2WCF3.5支持Json以后,提供了一种新序列化器:DataContractJsonSerializer.
现在一共是4种:
1.XmlSerializer
2.DataContratSerializer
3.NetDataContractSerializer
4.DataContractJsonSerializer
在WCF服务编程中我们知道,服务契约定义了远程访问对象和可供调用的服务操作方法,数据契约则是定义服务端和客户端之间要传送的自定义数据类型。在WCF项目中,声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送。类只有声明为DataContract,该类型的对象才可以被传送,且只有类的属性会被传送,需要在属性生命前加DataMember声明,这样该属性就可以被序列化传送。默认情况属性是不可传递的。类的方法不会被传送。WCF对定义的数据契约的类型可以进行更加细节的控制,可以把一个成员属性排除在序列化范围以外,客户端程序不会获得被排除在外的成员属性的任何信息,包括定义和数据。
(2)数据契约特性
2.1为WCF提供新的面向服务特性,这些特性中的首要特性就是定义在System.Runtime.Serialization命名空间中的DataContractAttribute特性:
[AttributeUsage(AttributeTargets.Enum |
AttributeTargets.Struct|
AttributeTargets.Class,
Inherited = false,
AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute
{
public string Name
{get;set;}
public string Namespace
{get;set;}
}
2.2如果只是在类或结构类型上应用DataContract特性,WCF不会序列化类型的成员:
[DataContract]
struct Contact
{
//不会成为数据契约的一部分
public string FirstName;
public string LastName;
}
2.3DataContract特性只能够做到将类型参与到数据契约中,以指示类型可以被按值编组(Marshal)。如果要序列化类型的成员,必须应用DataMemberAttribute特性。
[AttributeUsage(AttributeTargets.Field|AttributeTargets.Property,
Inherited = false,AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{
public bool IsRequired
{get;set;}
public string Name
{get;set;}
public int Order
{get;set;}
}
2.4可以直接将DataMember特性应用到字段上:
[DataContract]
struct Contact
{
[DataMember]
public string FirstName;
[DataMember]
public string LastName;
}
或者应用到属性上(可以是显式属性,提供了属性的实现;也可以是自动属性,编译器自动生成内部成员以及访问实现):
[DataContract]
struct Contact
{
string m_FirstName;
[DataMember]
public string FirstName
{
get
{
return m_FirstName;
}
set
{
m_FirstName = value;
}
}
[DataMember]
public string LastName
{get;set;}
}
2.5与服务契约相似,数据成员或数据契约的访问限定与WCF之间并没有因果关系。数据契约的类型与成员均区分大小写。数据契约完全可以包含私有数据成员等内部类型:
[DataContract]
struct Contact
{
[DataMember]
string m_FirstName;
[DataMember]
string m_LastName;
}
(3)实现代码分析及运行结果
3.1WCFService服务器端代码如下:
3.2WCFHost宿主(托管进程)代码如下:
3.3WCFClient客户端代码如下:
(4)源码下载
http://download.csdn.net/source/3003843
(5)下一篇计划
下一篇主要介绍实例管理的相关知识。
(6)参考说明
1.《programming in WCF》
2.http://www.cnblogs.com/frank_xl/archive/2009/04/14/1433712.html
分享到:
相关推荐
让我们深入探讨一下“WCF按部就班学习系列7:WCF事务概述”中的核心知识点。 1. **WCF事务属性**:在WCF服务中,可以通过配置或编程方式启用事务。服务行为`ServiceBehavior`可以设置`TransactionEnabled`属性为`...
**限流概述**是WCF并发管理中的另一个重要概念。限流是控制服务处理速率的一种机制,可以防止过多的并发请求导致系统资源耗尽。WCF通过设置服务的行为配置,可以限制并发请求数、最大接收消息数等,以达到服务级别的...
在本文中,我们将深入探讨WCF(Windows Communication Foundation)服务契约这一核心概念,以及如何通过实例来理解并实现它的重载。WCF是.NET Framework中一个强大的服务导向架构,用于构建分布式应用程序,允许不同...
在“WCF按部就班学习系列1”中,我们将深入探讨WCF的基础知识,包括服务契约、宿主定义等关键概念。 **服务契约** 服务契约是WCF中的核心概念,它定义了服务提供的操作及其交互方式。服务契约通过接口(Interface...
本篇文章将深入探讨WCF错误的概述,包括错误契约、错误处理、调试错误以及错误处理扩展,并通过Logbook服务实例来阐述具体实现。 **错误契约** 错误契约(FaultContract)在WCF中定义了服务可能抛出的错误类型。它...
WCF实例管理的概述,WCF服务实例激活类型三种方式概述和单例服务的完整代码。
在WCF中,实现回调操作需要定义一个回调契约,并在服务契约中声明。 例如: ```csharp [CallbackContract] public interface ICallback { void OnDataReceived(DataObject data); } [ServiceContract...
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
【标签】"WCF_idesign_1WCF_idesign_1WCF_idesign_1WCF_idesign_1" 同样强调了WCF的设计层面,可能涉及到服务接口设计、数据契约、绑定配置、行为调整等。在设计WCF服务时,理解服务接口(Service Contract)、数据...
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
标题中的“wcf.rar_wcf_wcf C#”暗示了这是一个关于Windows Communication Foundation(WCF)的项目,其中包含了C#语言的实现。WCF是微软.NET Framework的一部分,用于构建可互操作的分布式系统,允许服务提供者和...
C#WCF 服务并发管理,编程源代码,包括线程池的例子。
3. 使用`ChannelFactory`创建服务代理:提供服务契约接口类型和绑定对象,`ChannelFactory`将返回一个实现了该接口的实例。 4. 调用服务方法:通过服务代理对象,像调用本地对象一样调用服务方法。 5. 关闭通道和...
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
当前pdf总共有7个部分: WCF服务编程中文版_1 WCF服务编程中文版_2 WCF服务编程中文版_3 WCF服务编程中文版_4 WCF服务编程中文版_5 WCF服务编程part1 WCF服务编程part2
本教程“Pro_WCF_Practical_Microsoft_SOA_Implementation-3297”专注于实践性学习,帮助开发者深入理解WCF的核心概念和技术,以及如何在实际项目中有效应用。通过一系列示例,你将学习到如何创建、配置和服务的调试...
在“WCF.rar_wcf_whalewpf”压缩包中,包含的文件主要涉及WCF服务的创建、调用以及不同宿主方式的实现。** 1. **WCFClient**: 这个文件夹很可能包含了WCF服务的客户端应用程序,用于调用WCF服务。在WCF中,客户端...
WCF文件上传服务允许用户在不完整的网络连接情况下继续文件传输,提高了用户体验并降低了数据丢失的风险。 首先,我们需要理解WCF的基本概念。WCF是一种面向服务的架构,它提供了统一的编程模型来创建、发布、发现...