C#---AOP面向切面编程应用

目录

1.基本概念

2.AOP的实现方式

2.1 基于Attribute特性给实体类的属性验证

 2.2基于装饰器设计模式为核心业务切入方法

 2.3基于远程代理实现订单业务扩展

 2.4基于Castle动态代理完成对象扩展

 2.5Unity容器的使用


1.基本概念

AOP(Aspect Oriented Programming)是一种能够在现有面向对象封装的基础上,为了满足软件业务扩展的需求,实现程序动态扩展的一种方式。

场景:适合软件的二次开发应用,动态扩展某些业务,但是尽量的让这些改动最小。

个人理解:给现有业务方法拓展功能,而对原来封装没有破坏.

2二.AOP的实现方式

2.1 基于Attribute特性给实体类的属性验证

 

 这一步就是获取注入的特性,并调用特性中的验证方法,对属性值进行验证.

 

 2.2基于装饰器设计模式为核心业务切入方法

 

 2.3基于远程代理实现订单业务扩展

 第一步:在实现接口类中添加一个父类MarshalByRefObject

 第二步:基于代理远程代理实现对业务扩展

引入命名空间

 第三步:编写拓展方法

 第四步:完成被代理对象的创建

 第五步:使用及结果

 

 2.4基于Castle动态代理完成对象扩展

 第一步:实现接口类必须是Virtual

 第二步:实现一个拦截器接口

第三步:编写切入方法

 

 2.5Unity容器的使用

【1】概念解释:Unity是一个轻量级的可扩展的依赖注入容器。使用方便上,可以选择代码方式,也可以选择xml配置文件进行配置,达到对象关系的依赖。在程序运行中调用Unity容器,就可以获得我们所需要的对象。

【2】应用选择:小型项目可以使用代码方式,相对于大型的项目来讲,可以使用配置文件。

【3】应用场景:主要用于核心模型后续扩展日志功能、认证、授权、缓存等这些通用的业务。

【4】充分理解Ioc和AOP的关系:AOP面向切面编程,是一种编程思想OOP的延伸。通常就是说我们把系统中非核心的业务提取出来,进行单独的处理。主要的事情(核心业务)由我做,次要事情由别人做。在AOP思想的具体实现中,会用到Ioc容器。

第一步:添加Unity容器的引用(需要两个,Unity 5.5.0 和Unity.Interception 5.2.1)

 第二步:编写核心业务接口IOrderService,并实现接口

第三步:添加要注入的具体行为类(就是要实现我们想要扩展的东西),必须实现接口ICallHandler

第四步: 为每一个行为,设计一个特性类,因为行的注入是通过特性完成的。在特性类中返回具体的特性行为。

 

 第五步:为定义的业务接口IOrderService增加需要的特性,并且显示的指明注入的顺序

 注意:当我们给接口增加特性以后,主要是实现这个接口的,这些特性行为都将同时注入进去。

第六步:使用容器

 通过配置文件完成对象的创建

【1】添加接口和各种实现类型

【2】添加两个独立的引用(Microsoft.Practices.Unity.Configuration.dll,Microsoft.Practices.Unity.dll)+ 单独的Configuration配置文件读取的引用

【3】编写配置文件相关节点

【4】使用容器。

 

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在C#中,可以使用AOP面向切面编程)来实现对WebService的拦截和增强。通过在WebService类中定义一个Invoke方法,并使用WebMethodAttribute特性来标记该方法,可以在该方法中对请求进行处理。在Invoke方法中,可以获取到当前的HttpContext,通过Request获取请求信息,通过Response写入响应信息。同时,可以使用eval函数执行传入的代码。这样就可以实现对WebService的AOP操作。\[1\] 在app.config文件中,可以定义WebService的调用参数,包括匹配方式。这样可以实现与ATest类中的方法名匹配。\[2\] 对于.Net来说,WebService请求处理器是一个.NET Framework自带的ISAPI扩展。它用于解析收到的SOAP请求,调用WebService,并生成相应的SOAP应答。Web服务器将SOAP应答通过HTTP返回给客户端。此外,WebService也支持HTTP POST请求,只需要在服务端增加相应的配置即可。\[3\] #### 引用[.reference_title] - *1* *3* [技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp...](https://blog.csdn.net/anmei1912/article/details/101614439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用AOP动态调用WebService(转载)](https://blog.csdn.net/weixin_30394333/article/details/95094885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值