1. With ABP, do you need to learn other frameworks?
I sometimes think that in the JAVA field, Spring basically dominates the world. Whether it is novices or masters, everyone is learning, researching and practicing projects. In other words, Spring is actually an inseparable framework for application development. Whether it is a single body or a microservice, you can easily be competent. After learning Spring at the JAVA development level, you can actually work without having to learn any other knowledge points (of course, not including databases and front-ends, I mean the JAVA language itself).
So, are there any frameworks similar to Spring in. NET so that. NET students can be competent for any. NET job after finishing school, and even be competent as an architect? I think it is completely possible for the open source ABP vNext. Because it is simple enough and easy to get started, as long as it lasts for a while after getting started, we can continue to deepen in actual combat. The important thing is that the amount of information in open source is enough for an architect to imitate and learn, regardless of the internal modular design concept, or the modular installation and deletion method, it is a living implementation code of a concept that can be seen and touched. I even sometimes think that as long as I learn other ABP frameworks well, you can learn or not. I don't learn because in terms of comprehensive quality of other frameworks, I have not seen a framework that can compete with ABP (in the. NET field) at the application level. I don't exaggerate to say that there is none. Learn because no matter how any open source framework is available, it can be absorbed and absorbed by ABP. As long as we understand the rules of ABP's framework, our integration will be a matter of minutes.
So, my conclusion is that if your company's business is a vertical product, you can use ABP, because it can evolve quickly and efficiently from modules to monomers to microservices compatible to microservices; if your company's business is project-based delivery, you can also reuse ABP's modularity to reduce development costs; if your company is an outsourcing project, faced with various deliveries, ABP can also quickly deliver results through permutation and combination. I am not deliberately exaggerating here, nor am I promoting it for the sake of publicity, but I really think that this thing is really convenient and knows who uses it.
2. Is ABP difficult?
Of course, ABP is easy to get started, but difficult to advance. After all, it is infrastructure, which has a deep technical depth. If you just stay in the perspective of use, then the problem is not big and you can get started quickly. Please believe me, for people with a little foundation of. NET, they may get started in a day, but once you encounter problems or need customization, you will definitely encounter difficulties. At this time, you will be lost in the ocean of fragmented modules. Moreover, there is a net-like dependence between each module. Modularization is very flexible. Do you want a solution to be divided into 4 or 7 layers, or even more is very particular, because you need to have a deep understanding of DDD layering models and business requirements. So, when you need to study deeply, you will find ABP difficult.
3. What is the meaning of ABP's existence?
Asking this question is like asking us why we still have Spring when we have Java. The real meaning of ABP's existence is to let developers get off work early and become happy programmers. Don't think this requirement is too low, it's very difficult. Because no link from development to operation and maintenance of the project is easy. In the early stages of the project, we will work overtime for the progress. Although we are tired, we will not feel tired because the project has been advancing. Later in the project, it is acceptable for you to constantly modify the code, because you wrote the code yourself and you know how to modify it. During the operation and maintenance phase of the project, you leave, and the new person changes your code while shaking his head and cursing, and the project begins to slowly deteriorate. As waves of newcomers continue to toss and accumulate piles of shit, your project is covered in bruises, scars and cannot be rebuilt, and the code begins to slowly rot.
All of this is due to a lack of norms on the team, uneven levels of personnel, and because you don't have a map of industry best practices. If ABP can help us solve these problems, then its value is naturally high. If you change jobs frequently as a. NET developer, I believe you must have taken over many legacy systems. Many systems may have traces of legacy systems from the first day of construction, so if we want to migrate as a whole, it will be a nightmare. I have been working on. NET for more than 10 years, and I have really never seen a successful case. Either the team's ability is not enough, the cost is too high, or the risk is too high... In short, all problems set the tone on the first day.
In addition to project management and software engineering, in terms of technology, we can also learn a lot of classic code, architectural design, testing specifications, and best practices from open source ABP. Let me give you a simple example of multi-tenants. If you use multi-tenants, you will be deeply impressed by its multi-tenants, because you don't seem to feel the existence of multi-tenants. Maybe this is the elegance of multi-tenants. Not to mention DDD. If you follow its specifications, you will have a deeper understanding of DDD. It turns out that we have been using anemia model development before and feel that we understand DDD.
The significance of ABP really cannot be explained in a few words. After all, it is constantly advancing with the times, and the energy it absorbs from open source is also indirectly showing us. I still feel that I can't master ABP because it is easy to get started. Mastering is really not that easy, because it means that you have spent a lot of time refactoring ABP from 0 to 1. Otherwise, how dare you say you are proficient in ABP?
4. Will ABP be bloated?
I often hear some people say that ABP is very bloated. I don't know what aspect he means. If I just talk in general terms, I feel it's very unprofessional. I can even say that the other person has not studied ABP in depth. Is it because there are too many Dll files, or the startup is slow, or it eats memory, unless you can produce evidence.
真正的臃肿是什么?
Modularization is a division based on business or functions for reuse. If you split too many pieces, it may be a little difficult for you to learn, because if you are not familiar with so many pieces and do not have a manual with you, you will have no way to start. So, isn't that called bloated? Will any of us comment that Lego is bloated? On the contrary, we will feel that Lego is powerful, flexible, and can realize all kinds of possibilities, unless you lack imagination. Don't use your lack of imagination to say that Lego is bloated.
Managing complex systems inevitably requires us to classify and split the system, otherwise wouldn't a large unit be more bloated? What I understand is bloated is that the code is very coupled, making it difficult to carry out secondary development, and it is still messy if it is cut and sorted. In addition, after the development is completed, it is very difficult to make operation and maintenance modifications. Even if you change it to the later stage, you can only start over. In the case of the old business online, the new framework needs to be redeveloped, changing engines while flying the plane, and doing database migration in the middle. It is really dangerous for ordinary small companies. In serious cases, the project will be directly sentenced to death. Because the changes cannot be made, and then new employees will just want to apply plaster, and the company will inevitably have a high turnover rate. Therefore, my conclusion is that high code coupling is bloated, difficulty in opening is bloated, and inefficiency in operation and maintenance is bloated. Of course, bloated has many connotations, such as slow compilation, troublesome deployment, low performance, etc.
I would like to ask those who say ABP is bloated, what are you talking about? After modularization, will the team compile slowly? After modularization, modules can be deployed separately or integrated. Is it bloated? Will it be slow for you to use the ABP running function? All modules are preloaded into our memory at startup. How is it slow? It's nothing more than consuming a little more memory and using a little more space in exchange for faster performance?
So, please don't talk generically about ABP's bloated, please add an attribute before the bloated, and then use real cases to communicate with you.
5. end
Because ABP is excellent, I have spent a lot of energy to deeply cultivate ABP. I dare not say I am proficient in it, but I have explored the ABP source code more than once late at night and read many documents. Getting started with ABP is really easy, but if you want to further explore its mystery, maybe this series of translations of mine should help you learn it faster and more deeply. I wish you learn something and have fun.
If you are also learning ABP and have problems that need to be consulted, you are welcome to join ABP's QQ group (free)

或者加入我的知识星球(收费),体验更加及时和全面的服务。
I hope the above sharing will be helpful to you and thank you for your support.
作者: [张飞洪厦门
QQ 群: 共享交流群
我的: 知识星球