A collection of my ideas, examples, and resources regarding architecture and tech choices for a full-stack enterprise-level .NET Web Application.
gantt
dateFormat YYYY-MM-DD
section Phase 1
Gather info - Back-end: active, info1, 2023-10-01, 30d
Gather info - Database: active, info2, 2023-10-01, 30d
Gather info - Front-end: active, info3, 2023-10-01, 30d
Gather info - Architecture: active, info4, 2023-10-01, 30d
Gather info - Testing: active, info5, 2023-10-01, 30d
Gather info - Complete: milestone, active, milestone1, after info1 info2 info3 info4 info5, 0d
section Phase 2
.NET + React prototype: prot1, 2023-11-01, 60d
.NET + SolidJS prototype: prot2, 2023-11-01, 60d
.NET + Svelte prototype: prot3, 2023-11-01, 60d
.NET + Blazor prototype: prot4, 2023-11-01, 60d
Prototypes - Complete: milestone, milestone2, after prot1 prot2 prot3 prot4, 0d
section Phase 3
Compile results: comp1, 2024-01-01, 15d
section Phase 4
Create ref. project: 2024-01-16, 30d
.NET Core C# (.NET 6/7/8)
- Popular (Top 7 on GitHub repositories if you discount non-programming languages like Dockerfiles and Makefiles)
https://innovationgraph.github.com/global-metrics/programming-languages
- Open-source
- Cross-platform
- Strongly typed
- Compiled
- Actively developed
- Performant (ASP.NET Core composite score is #7 / 141 frameworks tested on TechEmpower.com)
- Coding-style guidelines from the .NET runtime repository
- Common C# code conventions
- Automatically apply format rules w/
dotnet format
- Redis?
- ASP.NET Core SPA Authentication Tutorial (.NET 7 Minimal Apis C#)
- Token Authentication In ASP.NET Core 7 With JWT | Clean Architecture
- FluentValidation? https://docs.fluentvalidation.net/en/latest/
- Minimal APIs documentation (Microsoft Learn)
- Why Minimal APIs (JetBrains)
- Example repo from Nick Chapsas
- FastEndpoints library
- Goodbye controllers, hello Minimal APIs - Nick Chapsas - NDC London 2022
- Talk about APIs using MVC, redundancy etc.
- Write cleaner APIs in .NET 7 with MediatR
- Protyping tool for colors and fonts: Realtime Colors
- What is the Future of Blazor? Should I Learn Blazor?
- Running Blazor in production, lessons learned - Jimmy Engström - NDC London 2023
- TypeScript resource: Matt Pocock
- The TSConfig Cheat Sheet
-
ArchiMate - Product: https://pubs.opengroup.org/architecture/archimate31-doc/chap08.html#:~:text=8.5.1-,Product,-A%20product%C2%A0represents
-
ArchiMate - Application Components: https://pubs.opengroup.org/architecture/archimate31-doc/chap09.html
-
How to structure a .NET Solution (project separation & architecture)
- CQRS and MediatR in ASP.NET Core
- CQRS - Martin Fowler
- CommandQuerySeparation - Martin Fowler
- Microsoft Learn
- TechTarget
- CQRS Doesn't Have To Be Complicated | Clean Architecture, .NET 6
- Modular Monoliths • Simon Brown • GOTO 2018
- 17:45: Example of adding a feature in a system without clear encapsulation/structure, controllers calling repositories, etc...
- 18:50: If previous example is left unchecked, what happens? References between everything...
- 19:31: "Big Ball of Mud", "Its organization [...] is dictated more by expediency than design"
- 29:24: The effects of an overuse of the "public" keyword
- 34:47: Using encapsulation to minimize dependencies
- 39:52: "When you change something here, a whole bunch of stuff here breaks and you don't know why [...]"
- 40:03: Good architecture/good structure/high modularity enables fast development
- 42:14 / 44:47: Start with a Modular Monolith THEN (maybe) move into Microservices
Would be nice to have a "samples" folder in the project with pre-baked HTTP requests for different things in the system