Wcf点滴积累

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

你可能感兴趣的:(WCF)