Amitpnk / Hexagonal-architecture-ASP.NET-Core

App generator API solution template which is built on Hexagnonal Architecture with all essential feature using .NET Core
76 stars 26 forks source link
asp-net-core aspnetcore c-sharp csharp entity-framework-core hexagonal-architecture integration-testing nunit3 repository repository-pattern unit-testing

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


Build Bugs Code Smells Duplicated Lines (%) Lines of Code Maintainability Rating Quality Gate Status Reliability Rating Vulnerabilities GitHub license

Hexagonal Architecture ASP.NET Core


Logo

Hexagonal Architecture ASP.NET Core

App generator API solution template which is built on Hexagnonal Architecture with all essential feature using .NET Core!
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements

Give a Star! :star:

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

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

Hexagonal Architecture

Hexagonal architecture was proposed by Alistair Cockburn in 2005.

Hexagonal Architecture, or to call it properly, "Ports and Adapters pattern", is driven by the idea that the application is central to your system. All inputs and outputs reach or leave the core of the application through a port that isolates the application from external technologies, tools and delivery mechanics

About The Project

App generator API solution template which is built on Hexagnonal 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 WebAPI, and select Hexagonal Architecture

image

Step 3: Select Hexagonal Architecture project template

Select project type as Web API, and select Hexagonal Architecture

image

Step 4: Project is ready

image

Step 5: Build and run application

Health check UI

Navigate to Health Checks UI https://localhost:44377/healthcheck-ui and make sure everything is green.

** Change port number according to your application

image

Swagger UI

Swagger UI https://localhost:44377/OpenAPI/index.html

** Change port number according to your application

image

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
    Note: while commiting message follow conventional standard
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Project description

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

Domain Api layer

Domain Api Layers (Core layer) is implemented in center and never depends on any other layer.
It is contract for domain layer interaction(ports) so that primary and secondary adapters can implement the contract.This is also known and DIP or Dependency Inversion Principle

Domain layer

Domain Layers (Business layer) which has business logic. and it is keep clean with no other dependencies.

Rest Adapter layer

Rest Adapter also known as left port's adapter and primary adapter where we implement restfull service (i.e., GET, POST, PUT, DELETE, etc)

Persistence Adapter layer

Rest Adapter also known as right port's adapter and secondary adapterwhere we have implement Entityframework core 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

Bootstrap/Presentation Layer

This is final build of project, where it all begins

Licence Used

GitHub 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.

Acknowledgements