wsdl 文件
配置<message/> -> service的输入消息和输出消息
<porttype/> -> web service 服务 包含 operation 定义(具体的服务方法)
<binding/>
WCF默认序列化器是DataContractSerializer,如何希望使用Xml序列化器,需要在接口上[XmlSerializerForma]
OperationContract(Action="*")
那么这个operation用以处理那些这个contract的别的operation不能处理的message,这个方法输入参数必须是message,输出参数可以是message或者void
Action属性是用以作message dispatch的,所以每个operation必须唯一
IsInitiating/IsTermination 用以控制会话,这个有个疑问,WCF 在会话上是怎么做的,在MSDN上有http://msdn.microsoft.com/en-us/library/ms733040.aspx 可以有时间看一下
DataContract 属性
IsReferenceUse the IsReference property to instruct the DataContractSerializer to insert XML constructs that preserve object reference information.
DataMember 属性
Order 控制序列化,反序列化的顺序
KnownType 用以解决派生类问题,在基类上面加上所有在通信中要用到的派生类,就可以了。
IExtensibleDataObject 用以作数据兼容性,防止数据丢失。
DataContract 与 MessageContract 在一个operation的所有参数中不能混用,使用messageContract的目的在于希望可以控制soap消息本身 [MessageHeader ] [MessageBodyMember]