使用ABP框架踩过的坑系列1
程序员文章站
2022-10-05 16:51:29
诚如ABP的作者所说:We are creating different applications based on different needs. But implementing common and similar structures over and over again, at lea ......
诚如ABP的作者所说:We are creating different applications based on different needs. But implementing common and similar structures over and over again, at least in some level. Authorization, Validation, Exception Handling, Logging, Localization, Database Connection Management, Setting Management, Audit Logging are some of these common structures. Also, we are building architectural structures and best practices likeLayered and Modular Architecture, Domain Driven Design, Dependency Injection and so on. And trying to develop applications based on some conventions.
企业级(例如ERP)应用, 一遍一遍的在重复:认证、验证、异常处理、日志、国际化和本地化、数据库连接管理、配置管理、 审计记录等,同时.NET有很多最佳实践:分层、模块化、DDD领域驱动、DI依赖倒置等,采用ABP就是基于这些惯例,来避免重复劳动,并且提供高质量、高效率的.NET开发。对于没有专职架构师的小型公司来说,选择ABP,可能是比较好的方案。万事都有利有弊,使用框架带来好处的同时,也有诸如学习曲线、踩坑等问题,本人使用ABP有一年多时间,实践了3个项目,踩过的坑有很多;想通过这个系列,把这些经历分享给大家,希望给同志们带来一些帮助。
这张AbpLayers图,实际上就是一个分层的最佳实践,其实和通常的三层:UI界面层、BusinessLayer业务逻辑层、DAL数据访问层,是相通的,只是把UI界面层分为PresentationLayer(Client)客户展示层、WebLayer(server)服务器端的Web层,有些人把这分别叫前台、中台,DAL数据访问层的抽象叫Infrastructure Layer基础架构层,DAL数据访问层的实现可以有多种实现,例如:EntityFramework、NHibernate、Dapper; BusinessLayer业务逻辑层,在DDD(领域驱动开发)中是核心,要用好ABP框架,了解DDD的一些核心概念是必须的,否则没法得心应手的来使用,Enity、Repository是最起码要了解的,如果还停留在Table和crud的舒适区层次,那建议您不要使用ABP。
public virtual void Initialize() { ResolveLogger(); try { RegisterBootstrapper(); IocManager.IocContainer.Install(new AbpCoreInstaller()); IocManager.Resolve<AbpPlugInManager>().PlugInSources.AddRange(PlugInSources); IocManager.Resolve<AbpStartupConfiguration>().Initialize(); _moduleManager = IocManager.Resolve<AbpModuleManager>(); _moduleManager.Initialize(StartupModule); _moduleManager.StartModules(); } catch (Exception ex) { _logger.Fatal(ex.ToString(), ex); throw; } }
以上就是ABP的初始化,如果你认可DDD, 如果你认可SOLID, 如果你认可DRY, 如果你使用.NET或.NetCore, 如果你使用ASP.NET或ASP.NETCORE, 那说明你选到了最好的框架,没有之一。
下一篇: c#运用反射获取属性和设置属性值