Giter VIP home page Giter VIP logo

clean-architecture-demo's Introduction

Clean Architecture Demo

A sample application for Clean Architecture: Patterns, Practices, and Principles using Microsoft .NET Framework 4.8.

This sample application is intended to be a learning tool for clean architecture practices. It incorporates several of these practices in a way that is simple and easy to understand.

If you'd like to learn more about this style of software architecture, please check out my online course Clean Architecture: Patterns, Practices, and Principles.

Branches

There are three branches in this project to demonstrate various practices:

  • master - contains the simplest implementation used to demonstrate the practices taught in the course at the expense of a bit of coupling with the IDbSet interface from Entity Framework

  • dbset-adaptor - uses a database adapter to completely decouple the application from the persistence layer -- a cleaner but slightly more complex approach

  • repo-and-uow - uses the repository and unit of work patterns to completely decouple the application from the persistance layer -- an even cleaner but also more complex approach

Technologies

This demo application uses the following technologies:

  • .NET Framework 4.8
  • C# .NET 7.3
  • ASP.NET MVC 5.2
  • Entity Framework 6.4
  • Visual Studio 2022
  • SQL Server 2019
  • StructureMap 4.7
  • NUnit 3.13
  • Moq 4.18
  • SpecFlow 3.9

Other Versions

For other versions of this sample application, please see the following:

clean-architecture-demo's People

Contributors

matthewrenze avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clean-architecture-demo's Issues

Cannot run the test case successfully (VS2022, .NET framework 4.8)

Hi, could you updated the project to .NET 4.8 or newer framework? I face some issue when I try to run this project when training from Pluralsight lesson.

Or are there some suggestions to run this project?

Found issues:

  1. I cannot install .net framework 4.5 sdk in my win10 anymore (microsoft has removed the offical download link).
  2. Seems the package ObjectFactory is out of date. I cannot run the specification project for testing.
  3. EF6 schema and data initalization failed.

Expect result:

  1. Run test case successfully.
  2. EF6 schema and data initalization sucessfully.

Thanks.

Snapshot of Run test case failed:
截圖 2022-08-07 上午12 50 03

How to create the database used in the demo

When running the demo app and going to for example the 'Customers' page. I get the following error: 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)'

Security

Hi Mathew. I have a Issue, what is best way to do a Security Implementation(user, login, Authorization, etc) in this Architecture? I had tried to implement OWIN inside, but is Hard, because on all, requires access to Database context from presentation layer, and others issues. How do you recomended implements a security middleware or other?

Use webapi on Service layer

Hi Matthew,

I watched your course, and I studied your project. I liked it very much. I would like used in real life, but there is something rare on the service layer : Where can I create a HttpGet or POST service in this layer?
I'd tried this on the Get method:
[HttpGet]
public IEnumerable Get()
{
}
on EmployeesController.cs(CleanArchitecture.Service.Employees), this route must be : http://localhost:49581/api/employees/Get/1, I think so, but It doesn't work, in this kind of project how is the route template in the URI for API services ?

same case for http://localhost:49581/api/Sales/Get/1

Thanks,

Edgar V

Throw a calls-stack details Exceptions Msg when Calling Service (WebApi) project 'Sale By Id=5' endpoints which(SaleId=5) is not existed at Sales DB table

Hi @matthewrenze ,

Thanks for your wonderful PS course and code repo.
I am playing around urs code base and found a handle exception which were showing at swagger page, That Exception Msg was not properly handled in sale middleware-application layer code .
Testcase (Negative )
Calling API End-points -https://localhost:7001/api/sales/5
Above SaleId=5 was not present at Sales DB table and thrown a calls-stack exception msg at swagger page as response. It should be handle in code and return a friendly Msg as response. Attached Screenshot as below
image

Thanks again for code.

Regards,
Tutul

Repo-uow

I can't find the cleaner repository example mentioned in your clean architecture course.

Can you point me in the right direction?

Discussion threads for topics

Hi Matthew,

I watched your PS course. I liked it very much. Where can I engage you in a thoughtful discussion on the topics introduced in your course?

Thanks,

Paul

Database creation

I am trying to run this solution, but getting database errors. Should I have SQL Express or LocalDb installed? Do I need to create the database prior to running, or should it be created on build/run?

Imgur

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.