-
地址
- 包含了通讯协议
-
绑定
- 定义协议
- 消息编码方式
- 安全策略
- 通信堆栈
-
契约
- 服务契约(ServiceContract) (说白了就是对WCF服务的对外接口作定义和声明。下面是一些关键字,只有加了关键字的方法才能被服务调用者访问。)
定义服务操作,对于某个Interface加上这个属性标签就会就定义了一个服务,客户端才可以看到这个服务。这个属性标签可以应用于接口或者类,建议应用于接口,第一,可以消除服务实现的耦合性,因为接口中不存在任何的业务逻辑相关的东西,第二,服务可能会实现多于一个契约,也就是说一个类同时实现多个服务,如果把标签定义在类上,就无法同时实现多个服务了。两个属性:
Name:指定暴露给客户端的服务名称。
Namespace:提供有意义的命名空间。
SessionMode
:是客户端代理与服务器之间的会话模式,同样也有三种类型:Allowed-允许会话、NotAllowed-不允许会话、Required-要求会话(需要有支持会话的Binding支持,WsHttpBinding、NetTcpBinding等)。
-
数据契约
- [DataContract]:它用来实现Schema与CLR类型之间的转换。
属性包括name=Client看到的名称、namespace=提供有意义的命名空间
- [DataMember]:明确成员是否参与序列化
属性包括:name
=Client看到的名称 、IsRequired的作用是,当服务段添加了一个新的DataMember但是客户端没有更新服务的引用时,如果IsRequired=true,就会报错
-
错误契约(FaultContract)
- 如果不适用错误契约,抛出异常将会导致传递消息的通道出现错误,当客户端继续调用该服务代理对象的服务操作时,会获得一个CommunicationObjectFaultedException异常,无法继续使用服务。
- 为了避免异常导致通道出现错误,通常不要将错误信息直接抛出
-
消息契约
- 能自定义消息头和消息体,还能实现加密和签名(貌似很深奥,等空闲了具体研究下)
-
终结点
- 三要素:地址、绑定、契约
-
元数据
- 服务所公开的元数据包括
XSD(文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值)和
WSDL
文档(用于描述服务的方法、参数、参数个数、顺序、返回值、返回值的类型等方法的相关信息)。.Disco文档(描述服务的协议、地址、命名空间等信息)
-
宿主
- WAS
- EXE
- WINDOWS服务
- com+
Wcf点滴积累,布布扣,bubuko.com
Wcf点滴积累
原文:http://www.cnblogs.com/wudaode/p/3612969.html