代码改变世界

WCF 第五章 行为 总结

2010-12-13 18:50 by DanielWise, 880 阅读, 1 推荐, 收藏, 编辑
摘要:行为是WCF架构中一个重要的扩展点。它们在客户端或者服务端运行时(runtime)被构造时以及每个服务调用时使用。当运行时启动时,它通过检测传递给ClientChannel的类型结构或者ServiceHost来寻找行为,然后在配置文件中寻找。行为也可以在代码中和在打开ServiceHost之前添加到ServiceDescription 对象中定义,或者通过在代码中使用属性,或者在配置文件中。 行为实现检测器-检测提供给它们的对象的代码。在消息层有消息检测器运行,在操作参数上有参数检测器运行。在操作层,行为主要负责为一个给定的SOAP输入消息选择调用哪个方法运行并再次调用那个方法。 行为控制服务 阅读全文

WCF 第五章 行为 安全行为

2010-12-13 18:21 by DanielWise, 431 阅读, 0 推荐, 收藏, 编辑
摘要:有一些重要的用来处理安全的行为。这些会在第八章”安全”中讲述,但是理解他们作为行为的作用是很值得的。 ServiceCredentials 行为是一个用来确定一个服务的认证的服务行为。这个类对访问客户端安全信息是有用的,比如用户的Windows验证设置和客户端证书。它以一个行为的形式实现以便于它可以按照它们的安全信息检测进入的消息。 一个操作行为的Impersionation属性用来客户端到服务端的角色扮演。当允许(或需要)角色扮演时,在信道中传输的客户端证书被WCF运行时用来在整个服务操作中扮演客户端角色。 ServiceAuthorization行为,作用范围是服务层或者操作层,用来验证调 阅读全文

WCF 第五章 行为 通过配置文件暴露一个服务行为

2010-12-13 17:59 by DanielWise, 656 阅读, 0 推荐, 收藏, 编辑
摘要:列表5.25 实现了对在服务端配置中安装的软件授权码的一个验证行为。如果它不存在或者它不合法,服务将不会启动。它显示了服务运行时创建的用来验证配置信息的一个终结点行为。它也显示了当服务运行时创建时调用的一个行为扩展和扩展是如何将行为加入到服务运行时的。结果就是一个自定义行为在配置文件中(app.config 或者web.config)使用并被添加到服务运行时中以便于配置信息可以在服务启动时被验证。 类myServiceBehavior实现了IServiceBehavior接口。类有两个属性,_EvaluationKey和_EvaluationType.myEndpointBehavior将这些 阅读全文

WCF 第五章 行为 以属性为服务操作行为暴露一个参数检测器

2010-12-13 17:08 by DanielWise, 558 阅读, 0 推荐, 收藏, 编辑
摘要:列表5.24实现一个使用正则表达式验证参数的行为。它可以应用到任何操作上并允许开发人员定义一个正则表达式和当参数不合法时用来返回错误信息的消息。 代码显示了从一个操作行为调用的一个参数检测器并显示了实现一个属性的操作行为。它也显示了如何通过在服务定义中引用属性来讲操作行为添加到服务描述中。 类myParameterInspector实现了IParemeterInspector接口。类存储了两个本地属性,_pattern和_message,用来在BeforeCall方法中验证参数。在那个方法中,使用正则表达式来匹配参数值和参数pattern.如果值与pattern不符合,会抛出一个错误。 类my 阅读全文

WCF 第五章 行为 为服务终结点行为实现一个消息检测器

2010-12-13 14:57 by DanielWise, 718 阅读, 0 推荐, 收藏, 编辑
摘要:列表5.23通过将一个终结点发送的和接收的每条消息打印出来来实现一个日志功能。代码显示了从一个终结点行为调用的消息检测器。这也是自定义寄宿服务如何将终结点行为手动添加到服务描述中去。提示 为跟踪实现自定义行为实际应用时,如果你需要为诊断的目的实现一个消息检测器,请查看第十章”异常处理”以获得跟踪技术。 myMessageInspector 类实现了IDispatchMessageInspector接口。在它的BeforeSendRequest和AfterReceiveReply方法中它把消息打印到控制台。类myEndpointBehavior实现了IEndpointBehavior接口。在它的 阅读全文

WCF 第五章 行为 实现自定义行为

2010-12-12 19:09 by DanielWise, 1111 阅读, 0 推荐, 收藏, 编辑
摘要:自定义行为可以在WCF创建运行时和消息处理管道时让你在重要的地方插入代码。行为可以添加到代码中,通过属性或配置文件手动实现服务描述。在所有的情况中,代码可以做一些辅助动作,比如在一个目录中寻找信息或者为了审计的目的记录数据。 图片5.14显示了在客户端创建自定义行为的接口 图片5.15显示了在服务端创建并插入自定义行为的接口 实现自定义行为需要三步第一步 创建一个类并实现Inspector, Selector, Formatter或者Invoker接口。这一般情况下取决于你的行为的作用。比如,为了记录所有的请求一个服务的消息(就像在第九章"诊断"中使用system.diag 阅读全文

静观己心,厚积薄发

2010-12-11 23:31 by DanielWise, 467 阅读, 0 推荐, 收藏, 编辑
摘要:我不知道当我写下这篇日志的时候,你正在做什么?大多数情况你没有注意到时间已经要到了23点,还在酣畅的玩着游戏,看着电影抑或与他人在高谈阔论... 写这些文章的初衷就是要把Essential WCF 的文章翻译出来,不仅仅是要学习英语,学习WCF,更重要的是要砥砺自己要完整的做完并做好一件事情,并在这个过程中帮助他人。 我从来没有想过有一天你能从这里学到一些有用的东西,更没有想过我会写这样一篇文章... 关于学习,这里说学习不是课堂的范畴,课堂的学习属于固定的,因为固定和规矩化所以接受程度不高,或者说非心之所向。学习是必须发自内心的渴望,比如对知识的渴望,对未知事物的好奇心,以及最重要的实践。知 阅读全文

WCF 第五章 行为 事务之事务服务行为

2010-12-11 16:39 by DanielWise, 595 阅读, 0 推荐, 收藏, 编辑
摘要:定义在操作层的行为TransactionScopeRequired和TransactionAutoComplete在这一章的先前部分描述了。在服务层,有两个额外的行为需要考虑: TransactionIsolationLevel和TransactionTimeout. TransactionIsolationLevel属性,正如名字所暗示的,影响事务的隔离级别。隔离是指ACID中的I并指导事务如何与其周围环境隔离。有很多隔离级别。Serializable,默认情况下,提供最高级别的隔离并阻止其他部分在事务完成前更新数据。例如,如果事务中包含了一条“select count(*) from or 阅读全文

WCF 第五章 行为 事务之选择一个事务协议-OleTx 或者WS-AT

2010-12-11 16:19 by DanielWise, 687 阅读, 0 推荐, 收藏, 编辑
摘要:事务管理器负责协调多个部分间的工作并通过资源管理器提交工作。资源管理器负责处理可信赖,持续存储。取决于使用的资源和服务或应用跨越的边界,WCF将使用三个事务管理器中的一个来完成事务处理。轻量级事务管理器(LTM)用来在一个应用程序域中管理资源。核心事务管理器(KTM),仅仅存在于Vista 和Windows Server 2008 系统中,用来管理文件系统和注册表资源的事务。分布式事务管理器(DTC)用来管理跨程序,进程或者机器边界的事务。应用程序不控制具体使用哪一个事务管理器;WCF将会选择最合适的事务管理器并在没有应用程序干预的情况下按需要逐步扩大。 当通信在跨应用,进程或者机器边界中转换 阅读全文

WCF 第五章 行为 事务-跨操作事务流

2010-12-10 18:36 by DanielWise, 1575 阅读, 0 推荐, 收藏, 编辑
摘要:当在分布式系统中工作时,事务有时必须要跨越服务边界。例如,如果一个服务管理客户信息而另一个服务管理订单,一个客户提交一个订单并想产品可以发送到一个新的地址,系统将需要调用每个服务上的操作。如果事务完成,用户将会期待两个系统上的信息都被合适的更新。 如果基础架构支持一个原子事务协议,服务可以像刚才描述的那样被组合到一个复合事务中。WS-AT(网络服务原子事务)提供在参与的服务间共享信息的平台来实现ACID事务必须的两步语义提交。在WCF中,在服务边界间的流事务信息被称作事务流。 为了在服务边界间十万事务流转的语义,下面的5步必须实现: 1. (服务契约) SessionMode.Required 阅读全文