首页 > 代码库 > LindAgile.Modules模块化的设计
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模块化的设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。