WCF学习笔记1(体系架构和行为扩展)

引用《WCF服务编程》里的一段话:“以WCF为基础框架搭建面向服务的企业级应用程序,以WF工作流引擎支撑企业应用中业务流程的传递与控制,以Cardspace和WCF固有的安全测罗保证企业信息的安全,最后以ASP.NET AJAX,WPF和SILVERLIGHT技术丰富客户端界面的绚丽表现,从而改善企业客户对应用程序的体验,这就是微软实现企业级应用的霸业宏图”,当然对技术的兴趣和对WCF本身是否值得去学是最重要原因了。

 1:WCF体系架构:

服务模型层和信道层,服务模型层建立在信道层之上,提供了一个统一的可扩展的编程模型,信道层则通过绑定创建的信道栈为消息通信提供了一个传输,处理的通道;从客户端发送请求到服务端处理请求基于通道链的设计,有点那个职责链设计思想的运用的意思(不由得联想起asp.net处理模型也是基于通道链设计),直接上图,更为直观易理解:

图 1:WCF运行时体系架构图

 2:重要概念理解

什么是服务:服务是和技术无关的,WCF只是作为其中一种实现服务的技术框架。

什么是终结点:WCF中将服务的位置(Address),服务通信的方式(Binding),服务的内容(Contact)统称为终结点(简称为服务的ABC),所以从逻辑上讲,终结点相当于服务的接口,WCF中:客户端要访问某个服务,必须通过终结点。

什么是契约:描述服务功能的标准方式,契约与平台无关。

服务,终结点,契约之间的关系:每个服务至少必须公开一个业务终结点,每个终结点有且只能拥有一个契约,服务上的所有终结点都包含了唯一的地址,而一个单独的服务中则可以公开多个终结点。这些终结点可以使用相同或不同的绑定,公开相同或不同的契约。

3:WCF扩展

个人对WCF最感兴趣的一块,也很佩服WCF的设计师们。这个通信基础框架提供了很多扩展点,主要包括2处:信道层的扩展点和服务模型层的扩展点,信道层的扩展主要通过对绑定的扩展实现,具体来说就是自定义绑定元素以及相关的信道管理器,信道来来改变对消息的处理和传输方式;服务模型层的扩展主要体现在对服务端和客户端运行时框架的定制;WCF 在信道层的顶部还提供了一个高级运行时,主要是针对应用程序开发人员。在 WCF 文档中,它常被称为服务模型层。该高级运行时主要由一个称作调度程序(在服务主机上下文中)的组件和一个称作代理(在客户端上下文中)的组件组成。调度程序/代理组合的主要作用是在 WCF 消息对象和 Microsoft® .NET Framework 方法调用间进行转换(请参见图 1)。这些组件按照一系列明确定义的步骤来执行此过程,并在此过程的每个步骤中都提供了可供插入的扩展点。您可以使用这些扩展点来实现各种自定义行为,包括消息或参数验证、消息日志记录、消息转换、自定义序列化/反序列化格式、输出缓存、对象共用、错误处理和授权等。

4:服务模型层扩展点,直接上图
 
图 2 服务模型层中的代理组件(客户端)扩展点
 
 
图 3 服务模型层中的调度组件(服务端)扩展点

阶段侦听器接口说明
参数检查IParameterInspector在调用前后调用,以检查和修改参数值。
消息格式化IDispatchMessageFormatter IClientFormatter调用以执行序列化和反序列化。
消息检查IDispatchMessageInspector IClientMessageInspector发送前或收到后调用,以检查和替换消息内容。
操作选择IDispatchOperationSelector IClientOperationSelector调用以选择要为给定的消息调用的操作。
操作调用程序IOperationInvoker调用以调用操作
  图 4 调度程序/代理扩展摘要

 

   
作用域接口潜在影响
  服务终结点约定操作
服务IServiceBehavior
终结点IEndpointBehavior 
约定IContractBehavior  
操作IOperationBehavior   
图 5 WCF四大行为接口(服务行为,契约行为,终结点行为,操作行为)
说明:
1)如果你只希望某个指定的Operation才具有这个扩展,你就只需要实现IOperationBehavior接口创建一个Attribute,并将此Attribute应用到对应的操作方法上;
2)如果你希望某个Service类型的所有操作都均有这个扩展,你可以实现IServiceBehavior接口;
3)如果你希望将相应的扩展特性应用到某个Contract接口上,让所有实现了该接口的Service的所有方法都具有这个扩展,你就实现IContractBehavior
4)如果你只希望某个Endpoint应用该扩展,则实现IEndpointBehavior接口

 
方法说明
验证仅在构建运行时前调用 — 允许您对服务说明执行自定义验证。
AddBindingParameters在构建运行时的第一步时,且在构造底层通道前调用 — 允许添加参数,以影响底层通道堆栈。
ApplyClientBehavior允许行为插入代理(客户端)扩展。请注意,IServiceBehavior 中不存在该方法。
ApplyDispatchBehavior允许行为插入调度程序扩展。
 

4:自定义扩展
要在WCF的服务模型层中实现一个自定义的扩展,主要分解为以下几步:
1)实现 调度程序/代理扩展 接口自定义扩展组件
2)实现  行为接口 将自定义扩展应用到行为上
3)通过编程方式或者自定义特性或者配置文件方式将行为添加到运行时
 
附:下篇通过实用的例子巩固下

转载于:https://www.cnblogs.com/syf/archive/2012/04/18/2455703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值