Royal-Digital / Onion-architecture-ASP.NET-Core

WhiteApp or QuickApp API solution template which is built on Onion Architecture with all essential feature using .NET Core!

Home Page:https://marketplace.visualstudio.com/items?itemName=AmitNaik.OnionArchitecture

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Visual Studio Marketplace version Visual Studio Marketplace downloads Visual Studio Marketplace ratings Visual Studio Marketplace version

WhiteApp/QuickApp Onion architecture with ASP.NET Core


Logo

Onion Architecture

WhiteApp or QuickApp API solution template which is built on Onion Architecture with all essential feature using .NET Core!
Explore the docs »

Download from Marketplace · Report Bug · Request Feature

Give a Star! ⭐

If you like or are using this project to learn or start your solution, please give it a star. Thanks!

Table of Contents

Onion Architecture

Onion Architecture was introduced by Jeffrey Palermo to provide a better way to build applications in perspective of better testability, maintainability, and dependability on the infrastructures like databases and services

Onion, Clean or Hexagonal architecture: it's all the same. Which is built on Domain-Driven Desgin approach.

Domain in center and building layer top of it. You can call it as Domain-centric Architecture too.

Reference

About The Project

WhiteApp or QuickApp API solution template which is built on Onion Architecture with all essential feature using .NET Core.

image

Getting Started

Step 1: Download extension from project template

Download from Marketplace

image

Step 2: Create Project

Select project type as API, and select Onion Architecture

image

Step 3: Select Onion Architecture project template

Select project type as API, and select Onion Architecture

image

Step 4: Project is ready

image

Step 5: Configure connection string in appsettings.json

 "ConnectionStrings": {
    "OnionArchConn": "Data Source=(local)\\SQLexpress;Initial Catalog=OnionDb;Integrated Security=True"
  },

Step 6: Create Database (Sample is for Microsoft SQL Server)

image

For Code First approach (To run this application, use Code First apporach)

Update-Database

For Database First approach

In Package Manager console in << ProjectName >>.Persistence, run below command

scaffold-dbcontext -provider Microsoft.EntityFrameworkCore.SqlServer -connection "Data Source=(local)\SQLexpress;Initial Catalog=OnionArchitectureDBS;Integrated Security=True"

Step 7: Build and run application

Swagger UI

image

Features available in this project

This is default white application for ASP.NET Core API development

This whiteapp contains following features, uncheck feature need to implement yet.

  • Application is implemented on Onion architecture
  • API
  • Entityframework Core
  • Expection handling
  • Automapper
  • Unit testing via NUnit
  • Integration testing via NUnit
  • Versioning
  • Swagger
  • CQRS Pattern

Below features will be implemented in infrastructure layer. You can plug and play based on your project.

  • Loggings - seriLog
  • Email
  • Health checks
  • JWT authentication
  • React-redux for UI
  • Fluent validations
  • Hangfire
  • Advanced Pagination

Project description

we can see that all the Layers are dependent only on the Core Layers

Domain layer

Domain Layers (Core layer) is implemented in center and never depends on any other layer. Therefore, what we do is that we create interfaces to Persistence layer and these interfaces get implemented in the external layers. This is also known and DIP or Dependency Inversion Principle

Persistence layer

In Persistence layer where we implement reposistory design pattern. In our project, we have implement Entityframework which already implements a repository design pattern. DbContext will be UoW (Unit of Work) and each DbSet is the repository. This interacts with our database using dataproviders

Service layer

Service layer (or also called as Application layer) where we can implement business logic. For OLAP/OLTP process, we can implement CQRS design pattern. In our project, we have implemented CQRS design pattern on top of Mediator design pattern via MediatR libraries

In case you want to implement email feature logic, we define an IMailService in the Service Layer. Using DIP, it is easily possible to switch the implementations. This helps build scalable applications.

Infrastructure Layer

In this layer, we add our third party libraries like JWT Tokens Authentication or Serilog for logging, etc. so that all the third libraries will be in one place. In our project, we have implemented almost all important libraries, you can plug & play (add/remove) based on your project requirement in StartUp.cs file.

Presentation Layer

This can be WebApi or UI.

Licence Used

MIT License

See the contents of the LICENSE file for details

Contact

Having any issues or troubles getting started? Drop a mail to amit.naik8103@gmail.com or Raise a Bug or Feature Request. Always happy to help.

Support This Project

If you have found this project helpful, either as a library that you use or as a learning tool, please consider buying me a coffee:

Buy Me A Coffee

I do coding for fun during leisure time, but I have to pay the bills, so I also work for money :P

About

WhiteApp or QuickApp API solution template which is built on Onion Architecture with all essential feature using .NET Core!

https://marketplace.visualstudio.com/items?itemName=AmitNaik.OnionArchitecture

License:MIT License


Languages

Language:C# 88.7%Language:HTML 7.4%Language:CSS 3.9%