江都建设银行网站,wordpress 升级后 插件,wordpress4.2.19 漏洞,wordpress4.9 设置中文有了ABP#xff0c;还要学其他的框架#xff1f;我有时候在想在JAVA领域#xff0c;Spring基本一统天下#xff0c;新手也好#xff0c;高手也罢都在学习、研究和项目实战。也就是说其实对与应用开发#xff0c;Spring已经是绕不开的框架#xff0c;不管是单体还是微服务… 有了ABP还要学其他的框架 我有时候在想在JAVA领域Spring基本一统天下新手也好高手也罢都在学习、研究和项目实战。也就是说其实对与应用开发Spring已经是绕不开的框架不管是单体还是微服务都可以轻松胜任学了Spring在JAVA开发层面其实你可以完全不需要去学习其他的任何知识点也能参加工作当然不包括数据库和前端我这里指的是JAVA语言本身。 那么在.NET有没有类似Spring的框架让.NET学员学完之后也可以胜任任何.NET工作甚至能胜任架构师的角色我觉得对于开源的ABP vNext来说是完全可以做到的。因为它足够简单上手非常容易只要入门之后持续一段时间我们就可以不断地在实战中逐步深入重要的是开源的信息量足够一个架构师去模仿和学习不管内部的模块化设计理念还是模块化安装和删除的方式都是一个理念活生生的落地代码看得见摸得着甚至我有时候觉得只要学好ABP其他的框架可学可不学不学是因为其他的框架从综合素质来说目前还没有看到一个框架在应用层面可以和ABP媲美.NET领域没有夸张地说没有之一。学是因为不管是任何开源的框架都可以被ABP吸收并蓄只要我们自己懂得ABP的框架规则我们的集成是分分钟的事情。 所以我的结论是如果你们公司的业务是垂直产品的可以用ABP没问题因为它可以从模块到单体到微服务兼容到微服务做到快速而高效的演化如果你们公司的业务是项目型的交付也可以重复利用ABP的模块化来降低开发的成本如果你们公司是外包型的项目面对交付各种各样ABP一样可以通过排列组合来快速交付成果。我这里不是故意夸大也不是为了宣传而宣传而是真的觉得这玩意儿真的是很方便谁用谁知道。ABP难吗 当然ABP入门容易进阶困难毕竟他是基础设施里面有很深厚的技术深度如果你只是停留在使用的角度那么问题不大可以很快入门请相信我对于有点.NET基础的人可能一天就上手了但是一旦遇到问题或者需要定制那么你一定会遇到困难这个时候你会迷失在碎片化的模块海洋而且每个模块之间又有网状般的依赖关系模块化是非常灵活的一个解决方案你要分4层还是7层甚至更多都是很有讲究的因为你要深入理解DDD分层模型和业务需求。所以当你需要深入学习的时候你会觉得ABP不容易。ABP存在的意义 问这个问题就好比问我们有了Java为什么还要有Spring。ABP存在真正的意义是让开发人员早点下班做一个幸福的程序员。不要觉得这个要求很低这非常困难。因为项目从开发到运维没有一个环节是容易的。项目初期我们会为了进度加班加点虽然累但不感觉疲惫因为项目一直在推进。项目后期你不断修改代码也可以接受因为都是你自己写的代码你知道怎么修改。项目运维阶段你离职了新人一边修改你的代码一边摇头骂娘项目开始慢慢变质。随着一波又一波的新人不断折腾和累积屎山你的项目遍体鳞伤、伤痕累累确又无法推倒重来代码开始慢慢腐朽。 所有的这些都是因为团队缺乏规范人员层次不齐因为你没有一个行业最佳实践的地图。如果说ABP能帮助我们解决以上这些问题那么它的价值自然不低。从事.NET开发人员如果您跳槽频繁的话我相信你一定接手过很多遗留系统很多系统从构建的第一天可能有了遗留系统的痕迹所以如果我们要进行整体迁移那就是一场噩梦我干了10来年的.NET真的还没见过成功的案例要么团队能力不够要么成本太高要么风险太大……总之一切问题都在第一天就定了基调。 除了项目管理和软件工程方面在技术方面我们一样可以从开源的ABP身上学到不少经典代码、架构设计、测试规范、最佳实践。我举一个简单的多租户的例子如果你有在用多租户你一定能对它的多租户印象深刻因为你好像感觉不到多租户的存在也许这就是多租户的优雅之处。至于DDD就更不用说了你跟着它的规范走一遍你对DDD会有更加深入的了解原来我们以前一直在用的贫血模式开发就觉得自己懂得了DDD。 ABP的意义真的不是三言两语能说的完的毕竟它自己也不断与时俱进中它本身从开源身上吸收的能量也在间接展示给我们看。我到现在都觉得自己不能精通ABP因为它上手容易精通真的不是那么容易因为这意味着你曾经花费很大的时间从0到1重构了一次ABP否则你怎么敢说自己精通ABP呢ABP会臃肿吗 我经常听到有些人会说ABP很臃肿我不知道他是指的哪一方面如果只是泛泛而谈我感觉是很不专业的甚至我可以说对方根本没有深入研究过ABP。是Dll文件过多还是启动很慢还是吃内存除非你能拿出证据来。真正的臃肿是什么 模块化是根据业务或者功能的一种拆分目的是为了重用。拆分多了你可能学习了会有点困难因为那么多块块如果你不够熟悉身边没有一份说明书你根本就无从下手。所以那不是叫臃肿我们有人会评价乐高很臃肿吗相反我们会觉得乐高很强大很灵活可以实现各种可能除非你缺乏想象力不要用自己想象力的缺乏来说乐高是臃肿的。 管理复杂系统必然要求我们对系统进行分类拆分否则一块大单体岂不是更加臃肿我理解的臃肿是代码耦合度非常高进行二次开发很困难剪不断理还乱。另外开发完了要进行运维修改很困难甚至出现改到后面改不动只能重新推倒重来在旧业务online情况下新框架要重新开发变开飞机变换引擎中间还要做数据库迁移对于一般的小公司只是非常危险的严重的会直接宣告项目死刑因为改不动了然后新进的人员也只想贴膏药公司必然存在离职率高的问题。所以我的结论是代码耦合高是臃肿二开困难是臃肿运维低效是臃肿。当然臃肿还有很多内涵比如编译缓慢、部署麻烦、性能低下等等。 我像请教那些说ABP臃肿的人你到底在说什么模块化后团队各自编译会缓慢吗模块化后模块可以单独部署也可以集成部署是臃肿吗你使用ABP跑功能会很慢吗所有的模块都在启动时候就预先加载到我们的内存里了哪儿慢了无非多耗费一点内存多用一点空间换取的不是更快的性能是什么 所以请那些说ABP臃肿的人不要泛泛而谈请你在臃肿前面加个定语然后用真实的案例来和大家交流。 结尾 因为ABP很优秀所以我花了很大的精力对ABP进行了深耕不敢说精通但是不止一次在深夜探索ABP源码也阅读了许许多多的文档资料ABP入门真的很容易但是如果你一想进一步窥探它的神秘面纱也许我的这个系列翻译应该可以帮你更快、更深入地学习它祝你学有所得学得快乐。