LindAgile.Modules模块化的设计

简介:

在LindAgile中有一个比较主推的技术,就是模块化,一切组件都可以被抽象成一个小小的模块,而每个小模块的实现可能又有多种方式,如日志模块可以有LindLoger,Log4net等实现,而具体在程序中使用哪种方式,是否由模块的注册顺序决定的,在程序初始化时,一切会注册这些模块,一个日志模块,如果先注册了log4net,后注册了lindLogger,那种先注册的将会被覆盖。

日志模块-图示

模块的注册与使用-图示

模块化的入口

对于模块的扩展,大叔建议在具体项目添加扩展方法,事实上在lindAgile框架里也提供了一些标准的扩展方法,方便大家对模块进行注册!

 #region 模块化
  ModuleManager.Create()
               .UseAutofac()
               .UseLindLogger()
               .UseEfRepository()
               .UseDefaultMq()
               .UseESBRedis()
               .InitAllPlugins();
#endregion

而对于使用来说,直接可以使用Module的Resolve来生产指定接口的指定对象,非常方便!

var old = PluginManager.Resolve<IAopHelloTest>();
var result = old.GetLogger("bobo");

上面的代码中,我们使用的是LindAgile的面向切面的方法缓存,将方法的返回值进行缓存,一个缓存的失效由另一个方法来控制,而不是传统上的时间!

    public interface IAopHelloTest : IAspectProxy
    {
        List<WebLoggers> GetLogger(string name);
        void AddLogger(WebLoggers entity);
    }
    public class AopHelloTest : IAopHelloTest
    {
        [CachingAspect(CachingMethod.Get)]
        public List<WebLoggers> GetLogger(string name)
        {
            return new Tsingda_Prizes_ManagerEntities().WebLoggers.Take(10).ToList();
        }
        [CachingAspect(CachingMethod.Remove, "GetLogger")]
        public void AddLogger(WebLoggers entity)
        {

        }
    }

这种设计在Lind框架中也有出现过,只是在LindAgile里把它完善了,再配合模块化,插件化等组件,能得数据集缓存达到了前所末有的高度!

我不要复杂的设计

我不要过重的设计

我只要简洁的,松耦合的实现!

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:LindAgile.Modules模块化的设计,如需转载请自行联系原博主。

目录
相关文章
|
2天前
|
存储 JavaScript 前端开发
[JS] ES Modules的运作原理
【9月更文挑战第16天】ES Modules(ECMAScript Modules)是 JavaScript 中的一种模块化开发规范,适用于浏览器和 Node.js 环境。它通过 `export` 和 `import` 关键字实现模块的导出与导入。模块定义清晰,便于维护和测试。JavaScript 引擎会在执行前进行静态分析,确保模块按需加载,并处理循环依赖。ES Modules 支持静态类型检查,现代浏览器已原生支持,还提供动态导入功能,增强了代码的灵活性和性能。这一规范显著提升了代码的组织和管理效率。
|
1月前
|
缓存 JavaScript 前端开发
|
4月前
|
前端开发
平台设计-moduleID的使用
整个平台上有很多相同的功能
|
10月前
|
JavaScript 前端开发
ES6模块化
ES6模块化
33 0
|
11月前
|
SQL API Go
保持 Modules 的兼容性(上)
保持 Modules 的兼容性
23 0
|
11月前
|
JSON Go API
保持 Modules 的兼容性(下)
保持 Modules 的兼容性(下)
30 0
|
JavaScript
ES6----ES6模块化
ES6----ES6模块化
|
JavaScript 前端开发
模块化开发:CommonJS、AMD 和 ES6 Modules 的区别与使用方式
在前端开发中,模块化开发是一种重要的编程方法,它可以帮助我们更好地组织和管理代码,提高代码的可维护性和复用性。在JavaScript中,有多种模块化开发的标准,包括CommonJS、AMD和ES6 Modules。让我们逐一了解它们的区别和使用方式:
180 0
|
JavaScript 前端开发 编译器
CommonJS与ES6 Module的本质区别
文章主要讨论了CommonJS和ES6 Module两种JavaScript模块系统的核心区别,包括动态与静态解决依赖方式,值拷贝与动态映射,以及如何处理循环依赖的问题。
184 0