本文画出了 WCF 框架运行时的重点类之间的类关系图。
一个 Binding 由多个 BindingElement 组成。BindingElement 作为主要的扩展点。每一个 BindingElement 描述某个独立的行为。最终 Binding 使用一连串的 BindingElement 来生成Channel。
Description 表示服务的元数据,用于描述服务本身。一个服务包括多个终结点,一个终结点对应一个绑定、对应一个契约、多个操作。而服务、终结点、契约、操作,都可以附加多个行为来对其进行控制。
下面是四类行为用于控制的类型。
框架内部对于行为的调用顺序:
客户端运行时类型,用于控制客户端运行时行为。
服务端运行时类型。相对客户端的运行时,要复杂一些。
对运行时扩展时,一般使用 Behavior。如果想使用配置文件声明的方式,则应该封装到 BindingElementExtensionElement 或者 BehaviorExtensionElement 中。