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

近期下载者

相关文件


收藏者