Clean Architecture Overview

Manish Narayan
A free video tutorial from Manish Narayan
President - Innovative Institution, Professor of Engineering
4.4 instructor rating • 13 courses • 28,476 students

Learn more from the full course

Getting Started with .NET Core Clean Architecture

.NET Core Clean Architecture

04:06:12 of on-demand video • Updated September 2019

  • .Net Core MVC
  • Clean Architecture
  • Full Stack Development
English [Auto] Welcome to getting started with Natcore Clean Architecture, this is Professor Ammunition Arien, founder of Innovative Institution. In this cause, I help you get started with architectural principles, allow you to create your first application. They'll make use of solid principles and best practices supported by Microsoft. We'll use many technologies, including third party packages, to help us structure our solution. I'll walk through step by step guided approach to all for all your project solution, structure and folder structure. Whenever you separate or isolate different projects and their purposes into their corresponding folders, directories and solutions, then you have the ability to have different teams or different teammates work on different. Parts of your application and simultaneously, so that's called responsibility, segregation. So if you see in front of you one of the best practices supported by Microsoft is using a dot net core, a clean architectural approach. So on the top left, you'll see that we have the application layer, a Web app, or you can see a presentation layer. Next, we have an infrastructure layer and then an application core. All right, so and finally, in the back end, you might have different data sources. All right. You might have sequel, you might have my sequel, Oracle, or maybe even a filesystem. All right. And then your infrastructure project might talk to third party services such as send grid for sending email or text messages such as Tullio API. So your presentation layer can be made up of, let's say, an NBC project, which I'll be showing in this course. It can be a Web application, maybe a Web forms or SPEEA, a single page application or any other client. It can also be an API itself inside of your ISP, doesn't it, web app or it can be even an API app. All right. You'll notice that the core app has controller's view model's views and also is a core identity, which I'll show you how to plug that in when you create your solution. And then you'll notice that the Web application or presentation layer has a dependency on application called project and also infrastructure, and it could be doing a compile time dependency or a runtime dependency. All right, now, at the core of your applications, which is called the application core, you'll notice will be when I create the folders, I'll show you how to separate these projects even deeper. So, for example, application core, you might have all your interfaces there and then your concrete business services that might implement these interfaces. You'll have your pocho entities or your domain objects such as your, let's say, student class or employee class and so on. You could define all your exceptions there. You can have some events going on. I'll show you how to integrate with mediate or to handle, you know, command query or Securus principles, command query, responsibilities, segregation. All right, and if you look at your infrastructure earlier, you might have some caching going on, you might define your data or your database contacts, whether using entity framework or maybe dapper or another. Another third party application or service to handle your data. You might have some caching built in with Redish. You might have third party services that you interact with, such as email, send grid or Tullio. All right. And then you might have other APIs, third party APIs that you interact with. That's at the heart of the infrastructure layer. All right, so there are many variations of this, but let's let's follow a standard and then we'll build on that and there are certain things we can move around. I'll show you, for example, view models. I might move that to the application core where we have our entities. We might define view models there as well. So you can kind of mix and match. It's it's up to you. But we'll follow a best practice and then we can build on that. So let's have fun together, build a standard template which remember, you can use this once it's clean set up. You can use this for all of your applications, whether at work or for your school or for any personal project. So let's get started in. The next video will set up a new project using GitHub and we'll going from there. Thank you.