领域驱动开发的特点:
1.分层更多,前期代码量大,后期维护方便
2.业务进行了专业的领域划分,业务逻辑更加清晰,便于业务扩展。
3.代码工程高内聚,更加精简。
4.主要是解决复杂业务逻辑编写问题
为什么要使用DTO(数据传输对象)?
1.领域对象更注重领域,而DTO更注重数据,面向界面UI。通过DTO我们实现了表现层与Model之间的解耦,不会直接将领域对象的行为暴露给表现层。
2.DTO可以有效的减少请求数量,减少客户端请求而降低服务器压力,提升效率。
3.解决序列化和懒加载问题
ABP数据过滤器:
软删除接口(ISoftDelete) public virtual bool IsDeleted { get; set; }
多租接口(IMustHaveTenant) public int TenantId { get; set; }
多租接口(IMayHaveTenant) public int? TenantId { get; set; }
ABP实体
Entity<T>
创建时间、修改时间、创建人、修改人
AuditedEntity
IAudited
IHasCreationTime - DateTime CreationTime { get; set; }
ICreationAudited - long? CreatorUserId { get; set; }
IHasModificationTime - DateTime? LastModificationTime { get; set; }
IModificationAudited - long? LastModifierUserId { get; set; }
软删除
IDeletionAudited long? - long DeleterUserId { get; set; } DateTime? DeletionTime { get; set; } bool IsDeleted { get; set; }
ISoftDelete - bool IsDeleted { get; set; }
IFullAudited interface IFullAudited : IAudited, IDeletionAudited