当前位置: 首页 > wzjs >正文

网站发帖做业务网站下载免费软件

网站发帖做业务,网站下载免费软件,国家骨干高职院校建设网站,网页设计代码html个人简介AOP(面向切片编程的概念我这里就不介绍了,这里先介绍一下C#中的AOP编程框架。 1.AOP的分类 .net下支持AOP的框架很多,搜了一下有:PostSharp、AspectInjector、Fody 、Castle Windsor、Spring.NET、Ninject、Unity等,实现的方式主要…

        AOP(面向切片编程的概念我这里就不介绍了,这里先介绍一下C#中的AOP编程框架。

1.AOP的分类

        .net下支持AOP的框架很多,搜了一下有:PostSharp、AspectInjector、FodyCastle Windsor、Spring.NET、Ninject、Unity等,实现的方式主要氛围两大类:

  • 编译时织入:通常在运行时性能较好,但编译时间可能增加。上面的红色框架
  • 动态代理:通常在高频调用时会有额外的性能开销。上面的蓝色框架。

1.编译时织入举例

        PostSharp是非开源的,这里以AspectInjector为例:

using AspectInjector.Broker;Console.WriteLine("Hello, World!");
MyClass myClass = new MyClass();
myClass.MyMethod();[Aspect(Scope.Global)]
[Injection(typeof(LogAttribute))]
public class LogAttribute : Attribute
{[Advice(Kind.Before)]public void Before([Argument(Source.Name)]string name){Console.WriteLine($"Entering method: {name}");}[Advice(Kind.After)]public void After([Argument(Source.Name)] string name){Console.WriteLine($"Exiting method: {name}");}
}public class MyClass
{[Log]public void MyMethod(){Console.WriteLine("Executing MyMethod");}
}

运行结果如下:

Hello, World!
Entering method: MyMethod
Executing MyMethod
Exiting method: MyMethod

想了解更多可以参考AspectInjector的官方文档

2.动态代理举例

        单纯的动态代理其实需要手动编写的代码较多,一般是结合依赖注入容器来使用。这个以比较常用的Autofac 依赖注入容器为例:

  • 首先,通过 NuGet 安装 Autofac 和动态代理支持:
Install-Package Autofac
Install-Package Autofac.Extras.DynamicProxy
  •  创建接口和实现类

定义一个接口和它的实现类:

public interface IMessageService
{void SendMessage(string message);
}public class EmailService : IMessageService
{public void SendMessage(string message){Console.WriteLine($"Email sent: {message}");}
}
  • 3. 创建拦截器

定义一个拦截器类,用于实现 AOP 功能:

using Castle.DynamicProxy;
using System;public class LoggingInterceptor : IInterceptor
{public void Intercept(IInvocation invocation){Console.WriteLine($"Entering method: {invocation.Method.Name}");invocation.Proceed(); // 调用原方法Console.WriteLine($"Exiting method: {invocation.Method.Name}");}
}
  • 设置 Autofac 容器

在 Autofac 容器中注册服务和拦截器:

using Autofac;public class Program
{static void Main(string[] args){var builder = new ContainerBuilder();builder.RegisterType<EmailService>().As<IMessageService>().EnableInterfaceInterceptors().InterceptedBy(typeof(LoggingInterceptor));builder.RegisterType<LoggingInterceptor>();var container = builder.Build();var messageService = container.Resolve<IMessageService>();messageService.SendMessage("Hello, Autofac with AOP!");}
}

运行结果:

Entering method: SendMessage
Email sent: Hello, Autofac with AOP!
Exiting method: SendMessage

可以看到我们成功的实现了在原函数前后插入执行代码。动态代理在web服务使用较多。

http://www.dtcms.com/wzjs/383855.html

相关文章:

  • 手机网站开发书籍微信小程序开发
  • 淄博张店网站建设子域名大全查询
  • 北京威凯建设发展招聘网站青岛网站制作推广
  • 做网站设计赚钱吗软文投稿平台有哪些
  • 小程序商店怎么接入视频号seo同行网站
  • 北京金创网站建设某个网站seo分析实例
  • 临桂区建设局网站黑科技引流工具
  • 学网站建设能赚钱吗网络销售技巧
  • 邯郸做网站的公司哪家好互联网推广中心
  • 网络做网站如何盈利引擎seo优
  • 网站开发协义合肥关键词快速排名
  • 网站建设公司-山而搜索seo怎么优化
  • 网站建设增值税发票百度seo外链推广教程
  • 贵州省城乡和住房建设厅网站首页seo优化方法
  • 网站开发jsp需要什么jar包手机百度搜索
  • 淘宝店做网站建设不能开直通车拼多多女装关键词排名
  • wordpress 修改手机端英文谷歌优化
  • 低价的网站建设网站优化外包
  • wap什么意思免费网站分析seo报告是坑吗
  • 盐城网站建设厂商爱站工具包
  • 用易语言做网站如何网站百度关键词优化
  • 免费云虚拟主机seo平台优化服务
  • 北京网站如何做推广今天发生了什么重大新闻
  • 做网站交互效果用什么软件如何广告推广
  • 无锡网站建设的公司市场监督管理局职责
  • 婚庆网站设计产品营销
  • 运用.net做网站百度空间登录入口
  • 国家知识商标局官网旺道seo营销软件
  • 个人可以建设新闻网站吗微信seo
  • 站长工具综合查询站长工具国内免费建站平台