DomainCentricArchitectureCourse
所属分类:其他
开发工具:C#
文件大小:0KB
下载次数:0
上传日期:2023-09-28 11:39:48
上 传 者:
sh-1993
说明: 以域为中心的体系结构课程,,
(DomainCentricArchitectureCourse,,)
文件列表:
CodeExamples/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/.idea/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/.idea/.idea.DomainCenteredArchitectureExamples/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/.idea/.idea.DomainCenteredArchitectureExamples/.idea/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/.idea/.idea.DomainCenteredArchitectureExamples/.idea/vcs.xml (186, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/DomainCenteredArchitectureExamples.sln (5735, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/doc/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/doc/Documentation/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/doc/Documentation/Assignment1/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/doc/Documentation/Assignment1/Assignment1.md (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/doc/Documentation/Documentation.csproj (222, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/CommandDispatcher/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/CommandDispatcher/Dispatcher.cs (863, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/CommandDispatcher/ICommandDispatcher.cs (230, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/CommandHandler/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/Common/CommandHandler/ICommandHandler.cs (216, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/DCAExamples.Core.Application.csproj (795, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/UseCases/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/UseCases/ProjectTasks/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/UseCases/ProjectTasks/UpdateRemainingEstimate/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/UseCases/ProjectTasks/UpdateRemainingEstimate/UpdateRemainingTaskEstimateCommand.cs (1264, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Application/UseCases/ProjectTasks/UpdateRemainingEstimate/UpdateRemainingTaskEstimateHandler.cs (1398, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Entities/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Entities/ProjectTask.cs (1476, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Entities/SubTask.cs (356, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Values/ (0, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Values/Estimate.cs (271, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Values/TaskDescription.cs (115, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Values/TaskId.cs (299, 2023-09-28)
CodeExamples/DomainCenteredArchitectureExamples/src/Core/DCAExamples.Core.Domain/Aggregates/ProjectTaskAggregate/Values/TeamMemberName.cs (114, 2023-09-28)
... ...
# Domain Centered Architecture
This is an elective course available at VIA University College, Horsens, Denmark, for Software Technology Engineering students.
# Course Overview
The course focuses on various approaches to organize an application. We will throughout the course develop a Web Service, but the theories can be applied to all kinds of systems.
We will introduce:
* Domain Driven Development (DDD)
* Test/Behaviour Driven Development (TDD/BDD)
* Various architectural styles
* Various architectural patterns
The course theories will be applied to create a complete Web Service. Each week a new topic will be introduced and then applied to the course-spanning project. We will apply a "big-bang" development approach (inside-out when considering hexagonal, onion, clean), due to the nature of the course, and the order of the topics.
# Session Schedule
## [Session 1 - Architectures](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/Session1)
### Goal
Get an introduction to the course, and an overview of architectural styles.
### Topics
* Course introduction
* Architectural styles
* Markdown
* Course project introduction
### [Sources](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master//Session1%20-%20Architecture/Session%201%20Sources.md)
### [Assignment](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/Session1/Assignment%201):
You will be given analysis artifacts of a system to be developed.
* Develop domain model
* Setup project for git
## [Session 2 - Domain Driven Design](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Designing a richer domain model using elements of DDD.
### Topics
* Introduction to DDD
* Ubiquitous language
* Value Objects
* Entities
* Aggregates
* Rich Domain Model
### Preparation before class
* [Gain a basic understanding of generics](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/types/generics)
### Extra optional preparation
* [Gain a basic understanding of reflection](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://learn.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/viewing-type-information) <- This should cover how to extract properties of a class. Needed for challange-part of assignment.
### Assignment:
Develop "exploded domain model".\
Define rules and test cases for value objects.
## [Session 3 - Operation Result Pattern](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Implementing Operation Result pattern.
### Topics
* Introduction to Operation Result pattern
* Factory method pattern
### Preparation before class
Again, we'll need to use generics, so make sure you know the basics, see previous session.
### Assignment
Implement the Operation Result pattern, to be used throughout the course project.
## [Session 4 - Test/Behaviour Driven Development](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Use TDD and BDD to implement the domain.
### Topics
* TDD
* BDD
* Introduction to xUnit.NET test framework
### Assignment
Implement the domain model using TDD.
## [Session 5 - Project work](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Mainly project work, a bit about domain services.
### Topics
* What is a service
* Domain services
### Assignment
Continue work on assignment from previous session. Some things needs a domain service to be implemented.
## [Session 6 - Commands and handlers](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Implementing use cases with command objects/handlers and repositories.
### Topics
* Command objects
* Command handler pattern
* Repository pattern lite
### Assignment
Implement use cases as application services using TDD.\
Implement/expand on domain model behaviour if needed.\
Mock data storage for now.
## [Session 7 - Command Dispatcher](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Implement the command dispatcher pattern as a way to interact with the application layer.
### Topics
* Command Dispatcher pattern
* Various implementation strategies
* Simple, overloaded methods
* Switch-statement based, manually managing dependincies
* Map based approach, registering handlers
* Using .NET's IoC container
* Pipelines
### Assignment
Implement the dispatcher pattern, at least for command handlers. Could be extended to query handlers.
## [Session 8 - Assignment work](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Work on assignment from previous session
### Topics
* Nothing new
### Assignment
* Nothing new
## [Session 9 - Persiting data](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Adding persistent data storage with Entity Framework
### Topics
* Repository pattern from DDD point of view
* With abstract repository
* Unit of work
* Entity Framework Core brushup
* Handling Value Objects
### Assignment
Implement persistent data storage with EFC and SQLite (or in-memory).
## [Session 10 - Retrieving data](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Introduction of the Command Query Responsibility Separation (CQRS) pattern.
### Topics
* CQRS overview
* The read model
* Generating the read model from existing storage with EFC
### Assignment
Implement read data use cases based on the generated read model.
## [Session 11 - Presentation layer](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Implement a Web API. Task/Process/Operation oriented.
### Topics
* The REPR pattern
* Web API refresh
* Bending the Web API standard, i.e. diverting from REST
* Exam info
### Sources
* [Watch 10 minutes video](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=DjZepWrAKzM)
* [Task based Web API](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=6XO6vSiioWE)
* [Task based Web API design](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.linkedin.com/advice/0/what-some-best-practices-using-restful)
* [Task based better than CRUD](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://betterprogramming.pub/is-task-based-ui-a-better-solution-than-crud-apis-768648fc5161)
* [Task based UI](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://cqrs.wordpress.com/documents/task-based-ui/)
* [Focus on behaviour rather than CRUD entities](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=v5Fss4fCl8c)
### Assignment
Implement the Web API.
## [Session 12 - Assignment work / Exam](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/)
### Goal
Work on assignment from previous session
### Topics
* Some exam info
### Assignment
* Nothing new
# Course Sources
This course has been developed based on a considerable collection of various sources, e.g. books, articles, videos.
Below I have attempted to collect all of it in one large list. Each session will also include a subset of sources relevant to that session.\
The sources below are not considered course curriculum, but instead a list of information revelant to the student interested in knowing more.
## Books
### Un-categorized
Patterns of Enterprices Application Architecture - by Martin Fowler
An Atypical ASP.NET Core 5 Design Patterns Guide - by Carl-Hubo Marcotte
### Domain Driven Design
Domain-Driven Design Quickly - by Abel Avram & Floyd Marinescu
Implementing Domain-Driven Design - by Vaugn Vernon
Hands-on Domain-Driven Design with .NET Core - Alexey Zimarev
Learning Domain-Driven Design - by Vlad Khononov
### Architecture
Designing Hexagonal Architecture with Java - by Davi Vieria
Get Your Hands Dirty On Clean Architecture - by Tom Hombergs
Clean Architecture - by Robert C. Martin
### Test
Growing Object-Oriented Software, Guided by Tests - by Steve Freeman, Nat Pryce
BDD in Action, Second Edition - by John Ferguson Smart, Jan Molak
The art of unit testing, second edition - by Roy Osherove
Unit testing. Principles, practices, and patterns - by Vladimir Khorikov
### Entity Framework Core
Entity Framework Core IN ACTION, 2nd edition - by Jon P Smith
### Web API
Building Web APIs with ASP.NET Core - by Valerio de Sanctis
API Design Patterns - By JJ Geewax
## Articles and Videos
### Hexagonal Architecture
https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
### Clean Architecture
https://www.c-sharpcorner.com/article/what-is-clean-architecture/
[A decent code example of Clean Architecture](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://github.com/aspnetrun/run-aspnetcore-realworld/blob/master/src/AspnetRun.Core/Entities/Product.cs)
[.NET Conf talk on Clean Architecture](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=yF9SwL0p0Y0)
### Onion Architecture
https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/
### Transaction Script
https://java-design-patterns.com/patterns/transaction-script/
### Reaper pattern (REPR)
https://ardalis.com/mvc-controllers-are-dinosaurs-embrace-api-endpoints/
https://garywoodfine.com/implementing-vertical-slice-architecture/?amp
https://deviq.com/design-patterns/repr-design-pattern
### Command Dispatcher
https://buildplease.com/pages/fpc-10/
https://blogs.cuttingedge.it/steven/posts/2011/meanwhile-on-the-command-side-of-my-architecture/
https://blogs.cuttingedge.it/steven/posts/2011/meanwhile-on-the-query-side-of-my-architecture/
### Vertical slice
https://www.youtube.com/watch?v=SUiWfhAhgQw
https://garywoodfine.com/implementing-vertical-slice-architecture/
### Repository pattern
https://www.youtube.com/watch?v=Bz5JCbWnaHo
### CQRS
https://www.youtube.com/watch?v=F3xNCfP3Xew
https://blogs.cuttingedge.it/steven/posts/2011/meanwhile-on-the-query-side-of-my-architecture/
### Domain Driven Design
[Domain Driven Design example](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=fO2T5tRu3DE)
[Effective Aggregate Design, part 1](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_1.pdf)
[Bunch of free resources](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://github.com/ddd-crew)
[Domain-Driven Design Fundamentals, Pluralsight course](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://app.pluralsight.com/library/courses/fundamentals-domain-driven-design/table-of-contents)
[Getting Started: Domain-Driven Design, Dometrain course](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://app.dometrain.com/courses/enrolled/2167078)
### Test Driven Development
[What is TDD? What is Test Driven Development?](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=H4Hf3pji7Fw)
[ZOMBIES](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/http://blog.wingman-sw.com/tdd-guided-by-zombies)
[Unit testing best practices](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://brightsec.com/blog/unit-testing-best-practices/)
[MSDN - Unit testing best practices](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices)
[TDD, Where Did It All Go Wrong - Ian Cooper](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.youtube.com/watch?v=EZ05e7EMOLM)
### Testing
[Writing Highly Maintainable Unit Tests, Pluralsight course](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://app.pluralsight.com/library/courses/writing-highly-maintainable-unit-tests/table-of-contents)
[State vs interaction testing](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://thinkster.io/tutorials/blogs/interaction-vs-state-based-testing)
### Behaviour Driven Design
https://www.youtube.com/watch?v=VS6EEUVZGLE
https://www.youtube.com/watch?v=JwLhR9RI3ew
https://www.youtube.com/watch?v=zYj70EsD7uI
### Task-Based Web API Design
...
### Entity Framework Core
[EF Core 6 and Domain-Driven Design, Pluralsight course](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://app.pluralsight.com/library/courses/ef-core-6-domain-driven-design/table-of-contents)
[EF Core 6 Fundamentals, Pluralsight course](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://app.pluralsight.com/library/courses/ef-core-6-fundamentals/table-of-contents)
[Documentation for LINQ](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://learn.microsoft.com/en-us/dotnet/csharp/linq/)
[Good site for introduction to EFC](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://www.learnentityframeworkcore.com/)
[Visualize the migration with SQL script](https://github.com/TroelsMortensen/DomainCentricArchitectureCourse/blob/master/https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/applying?tabs=dotnet-core-cli)
## Sample projects (not mine, but for inspiration to myself)
https://github.com/jasontaylordev/CleanArchitecture
https://github.com/RaythaHQ/raytha
近期下载者:
相关文件:
收藏者: