『.NET』.NET 中常用的AOP框架——Castle

简介: 📣读完这篇文章里你能收获到- AOP概念介绍- 结合具体代码讲解.NET项目接入Castle
【更多C#高级语法特性锦集】 点击跳转

请添加图片描述
📣读完这篇文章里你能收获到

  • AOP概念介绍
  • 结合具体代码讲解.NET项目接入Castle
  • 这篇文章强烈建议收藏!!!免得下次找不到

请添加图片描述

一、概念篇

1 Aspect-Oriented Programming(面向切面编程,AOP)

它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

请添加图片描述

二、.Net项目接入Castle

1 加载其相关依赖

  • Castle.Core

在这里插入图片描述

2 创建AOP实现类

    public class DBInterceptor : IInterceptor
    {
        public void Intercept(IInvocation invocation)
        {
            ReadXML(invocation);//前
            invocation.Proceed();
            WriteXML(invocation);//后
        }

        private void ReadXML(IInvocation invocation)
        {
            DBContexts.DBEntitiesList = XMLDBHelper.ReadXML<List<DBEntity>>();
        }

        private void WriteXML(IInvocation invocation)
        {
            XMLDBHelper.WriteXml(DBContexts.DBEntitiesList);
        }
    }

3. 创建AOP实例化类

    public static IDBOperation CreateDBUtilsAOP()
    {
        ProxyGenerator generator = new ProxyGenerator();
        DBInterceptor interceptor = new DBInterceptor();
        //DBUtils为需要进行AOP横向扩展的类,这里是我自己项目所用到的
        //DBUtils userprocessor = generator.CreateClassProxy<DBUtils>(interceptor);
        //IDBUtils为DBUtils的接口实现,依赖倒置原则DIP
        IDBUtils userprocessor = generator.CreateClassProxy<DBUtils>(interceptor);
        return userprocessor;
    }

4. 具体类

  • 若类中方法需要AOP扩展,则必须加virtual
    public class DBUtils: IDBOperation
    {        

        public virtual void Remove(string userID)
        {
            //...
        }

        public virtual void Add(DBEntity dBEntity)
        {
            //...
        }

        public virtual void Modify(string userID,string newName)
        {
            //...
        }

    }
相关文章
|
7天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
105 3
|
7天前
|
消息中间件 监控 数据可视化
基于.NET开源、功能强大且灵活的工作流引擎框架
基于.NET开源、功能强大且灵活的工作流引擎框架
|
7天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
7天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
7天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
7天前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架
|
1月前
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
86 10
|
1月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
1月前
|
Linux C# Android开发
.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms
.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms
134 1