框架设计知识点纵览(笔记)
1.autofac 统一事件处理方式
上面说的都是为每个类型注册事件,但是如果我们希望为所有类型都注册某一事件,有什么方式来实现呢?
(首先申明,OnRelease事件暂时没找到统一注册的方式)
我们可以在builder注册类型前使用RegisterCallback进行统一事件注册,详见代码:
var builder = new ContainerBuilder(); builder.RegisterCallback(cr => { // 下面的Registered事件相当类型的OnRegistered事件 cr.Registered += (sender, eventArgs) => { // OnPreparing事件 eventArgs.ComponentRegistration.Preparing += (o, preparingEventArgs) => { }; // OnActivating事件 eventArgs.ComponentRegistration.Activating += (o, activatingEventArgs) => { }; // OnActivated事件 eventArgs.ComponentRegistration.Activated += (o, activatedEventArgs) => { }; }; }); // builder.RegisterType<...>... // ...
Autofac全面解析系列(版本:3.5) – [使用篇(推荐篇):5.生命周期事件]
2.Autofac Aop
基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程
Ioc的AOP
ABP 初探 之 权限设计 (前段js如何与后端权限结合)
ABP源码分析二十七:ABP.Entity Framework
我就以我使用Fluent API 经验说说,Fluent API 比 数据注解好的地方。
1. 大家再看一眼上面代码,是不是感觉有点不纯净了,本来一个干干净净的类,搞得乱乱的。感觉有点恶心。
2. 这一点可能要后面我贴出代码,分享源代码才理解,不过使用过EntityFramework Fluent API 的应该能够理解到,配置和类分离,职责更加单一。
3. 配置和类分离,扩展性,灵活性就会更好,大家多知道,EntityFramework 不仅支持Sql Server,支持Oracle,MySql,Sqlite 等这些流行数据库,每种产品配置也许都有细微差别,如果以 DataAnnotations 方式实作,那我岂不是要重新新增模型,一样的表设计,为什么要加呢? 只有配置不同才要加啊!
4. 做技术架构,这种方式封装也比较好
ABP源码分析三十七:ABP.Web.Api Script Proxy API
四十 Immutable
http://www.cnblogs.com/xuanhun/archive/2013/04/26/3045448.html
四十一 ABP理论学习之多租户
http://www.cnblogs.com/farb/p/ABPMultiTenancy.html
EntityFramework.DynamicFilters
四十二 异步锁
四十三 CallContext