DDD-based Modern ASP.--ABP Series 1, catalogue and general introduction

Source: Internet
Author: User
Tags xunit

Background introduction:

A few times in the technology exchange and QQ Group I mentioned ABP Project, almost no one knows this open source project, Zhang Shanyu, cricket and many friends asked me, how in the Chinese community can not search ABP This project introduction article? Yes, such a good thing, should let more people know. I wanted to introduce it when I wrote my first article in the blog park, but because the work was too busy and the writing efficiency was too low, I dragged it. Today in Netfocus Tang brother Enode Group chat to ABP project, there are many friends are interested, so built a QQ group (134710707), for everyone to discuss the structure design of ABP, DDD topic.

Last year, when we were planning a new project, I reconsidered the technology selection (I have introduced http://www.cnblogs.com/mienreal/p/4340864.html in the 1th and 2 blog posts). I learned a lot about new technologies and open source projects, decided to develop a framework that was right for me, and the ideas and technologies that were ready to be used include DDD domain-driven design, distributed architecture, modular development, ASP. NET MVC 5, Web Api, C # 5.0, EF 6, AutoMapper, SQL Server or MySQL, Redis, XUnit, spa, etc.

In order to have a good reference object, I studied more than 10 framework projects at home and abroad, the most in-depth study of Dax.net Apworks, Microsoft's orchard. I later listed all C # projects on GitHub in terms of high to low focus, and I looked at the top 1000 projects, where I found the ABP project that was very pleasantly surprised, and it almost completely met the conditions I listed earlier. It is not only powerful, the project structure and coding style are very elegant, very artistic.

Based on ABP source code, I have made some changes according to my own needs, and have been used in the actual development project for several months, during which time, my technology has been greatly improved. In order to make more friends understand and use ABP, I will write a series of articles to introduce his architectural ideas and application methods, today, list and general introduction. Better friends in English can see his official website directly, the document has been written very well.

ABP's official website: http://www.aspnetboilerplate.com

ABP's Open source project on GitHub: Https://github.com/aspnetboilerplate

The ABP framework was first open source on GitHub on May 4, 2014, as of May 25, 2015, with a total of 1271 code submissions,49 releases, and now the version number 0.6.1.1.

List of articles in this series:

1, ABP General introduction
2. Introduction to ASP. Boilerplate
3. ABP Layered Architecture
4. ABP Module System
5. ABP Startup configuration
6. ABP Dependency Injection
7. ABP Session Management
8. ABP Log Management
9. ABP Setup Management
10. ABP Domain Layer-entity (entities)
11. ABP Field Layer-warehousing (repositories)
12. ABP Domain Layer--Working Unit (unit of work)
13. ABP Domain Layer-Data filters
14. ABP Domain layer-domain event (domain events)
15. ABP Application Layer-Application service (application services)
16. ABP Application Layer-Data Transfer object (DTOs)
17. ABP Application Layer--Parameter validation
18. ABP Application Layer--authorization authentication
19. ABP Application Layer-audit log
20, ABP Presentation Layer--Dynamic generation Webapi
21. ABP Presentation layer--javascript function library
22. ABP Presentation Layer-navigation bar settings
23, ABP Presentation Layer--Exception handling
24. ABP Infrastructure Layer-integrated entity Framework
25. ABP Identity and Rights Management module

I have outlined the structure of the official ABP documents I am going to write a series of articles, later in the article will be part of the translation for their own experience and feelings. This series of articles also serves as a training material for new members of my team.

ABP General Introduction:

The ABP is "ASP. Boilerplate Project (ASP. NET Template project) "for short.

ASP. Boilerplate is a new starting point for developing modern web applications with best practices and popular technologies, and is designed to be a common Web application framework and project template.

The ASP. NET boilerplate is based on DDD's classic layered architecture concept, which implements many DDD concepts (but does not implement all DDD concepts).

The ASP. NET boilerplate uses the following technologies:server-side:
    • ASP. NET MVC 5, Web API 2, C # 5.0
    • DDD Domain driven Design (entities, repositories, Domain Services, domain Events, application services, DTOs, etc.)
    • Castle Windsor (dependent injection container)
    • Entity Framework 6 \ NHibernate, Data migration
    • Log4net (logging)
    • AutoMapper (implements bidirectional automatic conversion of DTO classes and entity classes)
Client:
    • Bootstrap
    • Less
    • AngularJs
    • Jquery
    • Modernizr
    • Other JS libraries: Jquery.validate, Jquery.form, Jquery.blockui, Json2
The ABP Framework has implemented the following features:
  • Multi-lingual/localized support
  • Multi-tenant Support (data is automatically isolated per tenant, Business module developers do not need to write code when saving and querying data)
  • Soft Delete support (to inherit the corresponding base class or implement the corresponding interface, will automatically implement soft delete)
  • Uniform exception Handling (the application layer hardly needs to handle its own write exception handling code)
  • Data validation (ASP. NET MVC can only do the parameter validation of the action method, the ABP implements the parameter validation of the application layer method)
  • Logging (Automatic logger exception)
  • Modular development (each module has a separate EF DbContext, which can be specified independently of the database)
  • Repository warehousing Mode (entity Framework, NHibernate, MANGODB, memory database implemented)
  • Unit of work Unit mode (automatically implements database transactions for application and storage layer methods)
  • Eventbus Implementing a Domain event (domain events)
  • DLL Embedded Resource management
  • Automatically create the Web API layer with application services (no need to write Apicontroller layer)
  • Automatically create a proxy layer of JavaScript to make it easier to use the web Api
  • Encapsulates JavaScript functions to make it easier to use AJAX, message boxes, notification components, matte layers for busy states, and more

In addition to the ABP Framework project, a module called "Zero" has been developed to achieve the following functions:
    • Authentication and authorization management (implemented through ASP. NET identity)
    • User & Role Management
    • System Settings Access Management (System level, tenant level, user level, scope automatic management)
    • Audit logs (automatically record callers and parameters for each interface)

Many of the best designs I've seen in other projects already exist in the ABP project and may be better implemented. The code for the ABP framework has been unit tested through Xunit. The authors have been using the ABP framework to develop their actual projects, and from the information on GitHub and his official forums, there are many foreign developers who use ABP as the basis for their production projects. If you need to use the ABP component directly, you can install it through NuGet (search ABP in the NuGet package management interface of VS).

To better apply the ABP to its own projects, I have made some changes to the source code of the ABP without directly using the ABP components. Once again, I'll post my chart:


I hope that more domestic architects will be able to focus on the ABP project, and perhaps it will help you, perhaps with your participation, that the project can develop better.
Today is just a general introduction, I hope that more friends can read the source code, and then participate in the discussion.


Scenarios where ABP is applicable:

Small to Medium size Web application development. (Handling high concurrency is not the strength of ABP.) A very high concurrent DDD framework is required, and it is recommended to study Netfocus's Enode. )

Welcome to add ABP Architecture Design Exchange QQ Group: 134710707

DDD-based Modern ASP.--ABP Series 1, catalogue and general introduction

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.