经过长时间学习WCF上网也总喜欢收集一些资料我认为WCF这门技术还是很值得我们去深入的研究探讨的本人归纳了一点关于WCF协定概念上的总结希望可以对大家起到作用服务操作是在服务的代码中定义的过程用于实现某种操作的功能 此操作作为一个 WCF 客户端上的方法向客户端公开 该方法可能返回一个值并可能采用数量可选的参数或是不采用任何参数且不返回任何响应例如一个实现简单的Hello的操作可以用作客户端存在通知并可以开始一系列操作 服务协定 服务协定将多个相关的操作联系在一起组成单个功能单元 WCF协定可以定义服务级设置如服务的命名空间对应的回调协定以及其他此类设置在大多数情况下协定是通过用您所选的编程语言创建一个接口并将 ServiceContractAttribute 属性应用于该接口来定义的通过实现该接口可生成实际的服务代码 操作协定 操作WCF协定定义参数并返回操作的类型 在创建定义服务协定的接口时可以通过将 OperationContractAttribute 属性应用于协定中包含的每个方法定义来表示一个操作协定可以将操作建模为采用单个消息作为参数并返回单个消息或者建模为采用一组类型作为参数并返回一个类型在后一种情况下系统将确定需要为该操作交换的消息的格式 消息协定 消息协定描述消息的格式 例如它会声明消息元素应包含在消息头中还是包含在消息正文中应该对消息的何种元素应用何种级别的安全等等 错误协定 可以将错误协定与服务操作进行关联以指示可能返回到调用方的错误 一个操作可能具有零个或更多个与其相关联的错误 这些错误是在编程模型中建模为异常的 SOAP 错误 数据协定 服务使用的数据类型必须在元数据中进行描述以使其他各方可以与该服务进行交互操作 数据类型的说明称为数据协定而这些类型可以在消息的任何部分使用(例如作为参数或返回类型) 如果服务仅使用简单类型则无需显式使用数据协定 宿主 服务必须承载于某个进程中 宿主是控制服务的生存期的应用程序 服务可以是自承载的也可以由现有的宿主进程进行管理 自承载服务 自承载服务是在开发人员创建的进程应用程序中运行的服务 开发人员控制服务的生存期设置服务的属性打开服务(这会将服务设置为侦听模式)以及关闭服务 宿主进程 宿主进程是专为承载服务而设计的应用程序 这些宿主进程包括 Internet 信息服务 (IIS)Windows 激活服务 (WAS) 和 Windows 服务 在这些宿主方案中由宿主控制服务的生存期 例如使用 IIS 可以设置包含服务程序集和配置文件的虚拟目录在收到消息时IIS 将启动服务并控制服务的生存期 实例化 服务具有一个实例化模型 有三种实例化模型单个在这种模型中由单个 CLR 对象为所有客户端提供服务每个调用在这种模型中将创建一个新的 CLR 对象来处理每个客户端调用每个会话在这种模型中将创建一组 CLR 对象并且为每个独立的会话使用一个对象 实例化模型的选择取决于应用程序要求和服务的预期使用模式 |