Structure

Software projects require constant changes and updates. If the structure develops in the wrong way, it will prevent changes and extensions, and most of the time will lead to task duplication or rewriting of the project from scratch. To get rid of the complexity and task duplication that most programmers and developers face, which is also caused by the inconsistency of code at different levels of the program, we need a simple consistent structure for writing software projects so that we can hide some of the complexity and focus on business of the task. For example, the Bootstrap framework is a very useful framework for Front End, but few people would prefer to use frameworks like Bootstrap for design, and write all of their design with CSS from the beginning. For the Back End section, however, a simple, general-purpose framework can save time and cost and produce high-quality code and a uniform architecture. This framework allows developers to develop their projects based on an appropriate integrated pattern. The framework must be flexible enough to allow the programmer to apply any changes needed, relying on its robust structure. Software architecture means the structure and organization of a software system that is centralized to support specific operations. In fact, the components are grouped in related domains and exchange and interact with other related domains. Layering reduces the complexity and simplification of development and facilitates maintenance and modification. The layering and structure of the project depends on the nature of the project business. Factors such as the size of the project and the business can change the structure of the project. The number of layers and the separation of layers are different in each project. Below we introduce the main layers of the AUA framework in general.


Layer's Name

Layer's Name Use
Common Layer This layer contains common items used in other layers, such as Tools , Enums, Consts, Extensions and etc.
Data Layer This layer contains items associated with the data source, including Entity Framework Context, Db Extensions, Search Filters, Unit of Work Patterns, Configuration Tools and Dapper Context. In this layer, based on the user's needs and the selected version, various technologies and ORMs such as Ado.Net and Dapper respectively are added.
Domain Entity Layer This layer contains the entities and their configuration. This layer can be designed differently depending on the size of the project and the business.
Layer Models This layer contains DTOs, View Models and Config Mapping: EntitiesDto, ReportModels, ViewModels and etc.
Service Infrastructure Layer The overall infrastructure of Services and Repositories is written and becomes ready for use in this layer.
Service Layer This layer includes all the business services of your project, including BaseServices, BusinessService, EntitiesService, ReportService and etc.
Web API or UI MVC Layer This is an interface user layer that can be written with General MVC, WebApi, GraphQl and Grapc.
Test Layer This layer is designed for writing unit tests. (ToDo)
External Web Service Layer This layer is for calling external services. (ToDo)

Structure in youtube More videos

Structure in youtube More videos