Browse Source

added sections

pull/21304/head
Halil İbrahim Kalkan 2 years ago
parent
commit
6c6bc263ca
  1. 44
      docs/en/solution-templates/guide.md
  2. BIN
      docs/en/solution-templates/images/layered-abp-application.png
  3. BIN
      docs/en/solution-templates/images/single-layer-abp-solution.png

44
docs/en/solution-templates/guide.md

@ -2,6 +2,13 @@
ABP provides several [startup templates](index.md) to you. It is important to start with the right startup template that is suitable for your **project** and **team**. This guide aims to lead you to select the most proper startup template for your requirements.
The following **architectures** will be discussed based on ABP startup templates:
* **Single-Layer** (non-layered) application
* **N-Layered** application
* **Modular** application
* **Microservice** solution
## What is a Startup Template?
Before going further, it is important to understand what is a startup solution template and **what it provides** for you.
@ -63,4 +70,39 @@ If the preceding conditions are meet with your case, you can consider to start w
### Layered Solution Template
The [layered application startup template](layered-web-application/index.md)
The [layered application startup template](layered-web-application/index.md) is a .NET solution that consists of many projects. Each project represents a layer of the application or has a specific functionality for the solution.
Exact project count in your solution depends on the options you've selected. The following figure shows a solution with [MVC (Razor Pages) UI](../framework/ui/mvc-razor-pages/overall.md) and [Entity Framework Core](../framework/data/entity-framework-core/index.md) database provider with the default configuration:
![layered-abp-application](D:\Github\abp\docs\en\solution-templates\images\layered-abp-application.png)
The solution is layered based on Domain-Driven Design principles and extended based on real-world business application requirements. It includes test projects for each layer. Layering the solution has great benefits:
* It makes your business code (domain & application layers) independent from infrastructure (UI and database) that makes it more **maintainable and long-living**.
* Different developers can **focus on different layers**. It is valuable when multiple developers (with different roles) touching to the same solution.
* It **separate concerns**, so you can focus on a single concern at a time. You can optimize your data access code without touching other layers, you can change your UI code without breaking your business logic.
* It provides **maximum code reusability**. If you have multiple applications (e.g. one back office application, one end-user application, and a mobile application), it is easy to separate these application's codebases (simply create new application & UI layers for each application type) while they can share the same domain and data access layers.
* Separating **UI layer** gives an opportunity to **replace/modify** it in the future without affecting other parts of your solution. You know, UI is the fastest changing technology in software industry.
While it may seem a little complicated at the beginning, once you **complete the [Book Store tutorial](../tutorials/book-store/index.md)**, you will easily understand the purpose and usage of each project.
#### When to use the Layered Solution Template?
In the following conditions, you may consider to use the layered solution template:
* If your project **codebase** is relatively **larger**.
* If your project is a **long-term** project and you want to design it as **maintainable** for long years.
* If you are **a team of developers** working on your solution.
* If your solution will have **multiple** web, mobile or other type of **applications** that need to **share** the same business logic.
> **Can I use the Single-Layer Solution Template for Modular Applications?**
>
> If you want to [build a modular application](../tutorials/modular-crm/index.md), you may want to use that layered application as a host application. After creating your solution, you can add modules and import these modules to the host application. You can also use the application's .NET solution as a unification layer in some cases you need to write code that utilizes multiple modules. However, if you don't consider to write any application code into the host application (which can be considered as a good practice), you can use the single-layer startup solution template as your host application as explained before.
### Modular Monolith Applications
TODO
### Microservice Solution Template
TODO

BIN
docs/en/solution-templates/images/layered-abp-application.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
docs/en/solution-templates/images/single-layer-abp-solution.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Loading…
Cancel
Save