聚焦WCF行为的扩展

WCF以其灵活的可扩展架构为开发者提供了方便,其中对行为的扩展或许是应 用中最为常见的。自定义对行为的扩展并不复杂,但仍有许多细节需要注意。在 服务端,一般是对DispatchRuntime和DispatchOperation进行扩展,扩展点包括 了对参数和消息的检查,以及操作调用程序,它们对应的接口分别为 IParameterInspector,IDispatchMessageInspector以及IOperationInvoker。而 在客户端,则是对ClientRuntime和ClientOperation进行扩展,扩展点包括对参 数和消息的检查,对应的接口分别为 IParameterInspector和 IClientMessageInspector。这些接口类型均被定义在 System.ServiceModel.Dispatcher命名空间下,其中IParameterInspector接口可 以同时作用在服务端和客户端。

对这些接口的实现,有点类似于AOP的实现,可以对方法调用前和调用后注入 一些额外的逻辑,所以通常会将这些扩展称为侦听器。例如IParameterInspector 接口,就定义了如下方法:

void AfterCall(string operationName, object[] 

outputs, object returnValue, object correlationState);        

        object BeforeCall(string operationName, object[] 

inputs);

在调用服务对象的目标方法前,会调用BeforeCall方法,而在调用后则会调用 AfterCall方法。例如我们可在方法调用前检验计算方法的参数是否小于0,如果 小于0则抛出异常:

public class CalculatorParameterInspector:IParameterInspector

{

    public void BeforeCall(string operationName, object[] inputs)

    {

        int x = inputs[0] as int;

        int y = inputs[1] as int;

        if (x <0 || y < 0)

        {

           throw new FaultException("The number can not be 

less than zero.");

        }

        return null;

    }

    public void AfterCall(string operationName, object[] outputs, 

object returnValue, object correlationState)

    {

        //empty;

    }

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索object
, 接口
, 方法
, 调用wcf接口
, 行为
行为扩展
wcf 行为、thinkphp行为扩展、该扩展存在恶意行为、扩展存在恶意行为、thinkphp5 行为扩展,以便于您获取更多的相关知识。

时间: 2024-08-03 22:12:31

聚焦WCF行为的扩展的相关文章

jquery聚焦文本框与扩展文本框聚焦方法_jquery

光标聚焦的位置在最前面 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title&g

在 WCF 中使用高效的 BinaryFormatter 序列化

本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置. 介绍 实现步骤 使用方法 效果   介绍 在 OEA 框架中,是使用 WCF 作为数据传输框架.但是使用 WCF 内部的二进制序列化,序列化后的数据大小,要比使用传统的 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类进行序列化后的数据大小要大得多.作

WCF简介

一.简介 WCF是Windows Communication Foundation缩写,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分.使用该框架,开发人员可以构建跨平台.安全.可靠和支持事务处理的企业级互联应用解决方案. 根据微软官方的解释,WCF(之前的版本名为"Indigo")是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的安全.可信赖.

WCF专题系列(8):深度通道编程模型Part 1—设计篇

引言 从本质上说,WCF是一个通信服务框架,它允许我们使用不同的传输 协议,使用不同的消息编码形式,跟不同的WS-*系列规范交互,而所有这些细节 都是由通道堆栈来处理的.为了简化这些处理,在WCF中提供了两种模型,一是 针对开发者的应用程序编程模型:二是用来通信的通道模型,这样对于开发者来 说,只要了解应用程序编程模型就足够了,而不会涉及到通道模型,然而,对于 通道模型进行必要的学习,可以让我们真正理解WCF中"通信"概念 ,了解WCF的 整个架构体系,从而构建出更加健壮的WCF服务或

.NET Framework 4.0和“Dublin”中的WCF和WF服务

本文基于 .NET Framework 4.0 和 "Dublin" 的预发布版本.所有信息均有可能发生变更. WF 活动程序库和设计器 .NET Framework 4.0 中的 WCF 改进 "Dublin" 扩展指南 使用 "Dublin" 构建和部署服务 本文使用了以下技术: .NET Framework 4.0."Dublin" 在 2008 年 10 月份召开的专业开发人员大会 (PDC) 上,Microsoft

一起谈.NET技术,技巧:使用可扩展对象模式扩展HttpApplication

概述 HttpApplication对象对于做ASP.NET开发的朋友,我想没有人不熟悉它.在ASP.NET开发中,经常避免不了要在HttpApplication中执行一些操作,如使用了ASP.NET MVC框架,就会在Application_Start 事件中避免不了这样的路由规则配置代码: protected void Application_Start(){RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); R

技巧:使用可扩展对象模式扩展HttpApplication

概述 HttpApplication对象对于做ASP.NET开发的朋友,我想没有人不熟悉它.在ASP.NET开发中,经常避免不了要在HttpApplication中执行一些操作,如使用了ASP.NET MVC框架,就会在Application_Start 事件中避免不了这样的路由规则配置代码: protected void Application_Start() { RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

面向服务架构(SOA)和企业服务总线(ESB)

学习和研究在企业中实施面向服务架构(SOA),简单回顾SOA和ESB,重点关注微软在SOA领域的相关指导和.NET社区的相关开源的解决方案,和大家一起来探讨如何在企业里实现SOA,期望有实施SOA经验的同学发表意见. 一.SOA的历史      1996年,Gartner最早提出SOA.2002年12月,Gartner提出SOA是"现代应用开发领域最重要的课题",SOA并不是一个新事物,IT组织已经成功建立并实施SOA应用软件很多年了,BEA.IBM.等厂商看到了它的价值,纷纷跟进.S

新型网路技术陆续登场,有望引爆新一波物联网市场热潮

物联网(IoT)应用范围广大,庞大商机逐渐涌现,已成为下世代的新战场,银弹充足的英特尔(Intel),Google.微软(Microsoft).三星电子(Samsung Electronics)与苹果(Apple)等早已启动购并布局大计.值得注意的是,近期各种新型网路技术陆续登场,包括英特尔与Ingenu分别计划推出窄频LTE(Narrow Band LTE)与低功耗网路,不仅因应物联网大量传输通讯需求,并可望加速引爆新一波物联网市场热潮. 目前有许多物联网装置仍使用即将功成身退的GSM网路技术