You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+44-2Lines changed: 44 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,12 +39,13 @@ If you like or are using this project to learn or start your solution, please gi
39
39
<!-- * [Built With](#built-with) -->
40
40
*[Getting Started](#getting-started)
41
41
*[Features available in this project](#Features-available-in-this-project)
42
-
*[Project description](#roadmap)
42
+
*[Project description](#project-description)
43
43
*[Design patterns Used](#roadmap)
44
44
*[Class diagram](#roadmap)
45
45
*[Contributing](#contributing)
46
46
*[Licence Used](#Licence-Used)
47
47
*[Contact](#contact)
48
+
*[Support This Project](#Support-This-Project)
48
49
<!-- * [Acknowledgements](#acknowledgements) -->
49
50
50
51
## Onion Architecture
@@ -157,14 +158,55 @@ Below features will be implemented in infrastructure layer. You can plug and pla
157
158
-[ ] Hangfire
158
159
-[ ] Advanced Pagination
159
160
160
-
<!-- - [ ] SignalR -->
161
+
## Project description
162
+
163
+
we can see that all the Layers are dependent only on the Core Layers
164
+
165
+
<details>
166
+
<summary><b>Domain layer</b></summary>
167
+
<p>
168
+
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
169
+
</p>
170
+
</details>
171
+
<details>
172
+
<summary><b>Persistence layer</b></summary>
173
+
<p>
174
+
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
175
+
</p>
176
+
</details>
177
+
<details>
178
+
<summary><b>Service layer</b></summary>
179
+
<p>
180
+
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
181
+
</p>
182
+
<p>In case you want to implement email feature logic, we define an IMailService in the Service Layer.
183
+
Using DIP, it is easily possible to switch the implementations. This helps build scalable applications.
184
+
</p>
185
+
</details>
186
+
<details>
187
+
<summary><b>Infrastructure Layer</b></summary>
188
+
<p>
189
+
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.
190
+
</p>
191
+
</details>
192
+
<details>
193
+
<summary><b>Presentation Layer</b></summary>
194
+
<p>
195
+
This can be WebApi or UI.
196
+
197
+
</p>
198
+
</details>
161
199
162
200
## Licence Used
163
201
[![MIT License][license-shield]][license-url]
164
202
165
203
See the contents of the LICENSE file for details
166
204
167
205
206
+
## Contact
207
+
208
+
Having any issues or troubles getting started? Drop a mail to amit.naik8103@gmail.com or [Raise a Bug or Feature Request](https://github.com/Amitpnk/Onion-architecture-ASP.NET-Core/issues/new). Always happy to help.
209
+
168
210
## Support This Project
169
211
170
212
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:
0 commit comments