Skip to content

A collection of my ideas, examples, and resources regarding architecture and tech choices for a full-stack .NET web application.

Notifications You must be signed in to change notification settings

OscarBennich/ideas-about-dotnet-ref-arch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 

Repository files navigation

Ideas about .NET reference architecture

A collection of my ideas, examples, and resources regarding architecture and tech choices for a full-stack enterprise-level .NET Web Application.

Roadmap 🛣

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
Loading

Back-end

.NET Core C# (.NET 6/7/8)

Templates

Why C#?

  • Popular (Top 7 on GitHub repositories if you discount non-programming languages like Dockerfiles and Makefiles)

image 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)

image

Coding-style

Logging, tracing, monitoring

Caching

  • Redis?

Logging

Authentication & Authorization

Database

MySQL

ORM

EF Core

Dapper

Useful libraries

MediatR

API

Validation

Minimal APIs in C#

Front-end

Server-Side Rendering (SSR) vs. Client-Side Rendering (CSR)

Server-Side Rendering

ASP.NET MVC

Client-Side Rendering

How to handle Authentication & Authorization?

Frameworks

Blazor

SPA vs. MPA

Razor views vs. Razor pages

JavaScript

JavaScript vs. TypeScript

Tooling

Vite

image

Frontend Frameworks

Svelte

React

SolidJS

Meta-framework?

Component library?

Deployment

Azure

Architecture

CQRS

Talks & Presentations

  • 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

Articles

Books

Testing

End-to-end/Functional testing

Useful libraries

Strategy

Version-control (git)

Branching strategy

Merge strategy

Thoughts about commit messages

General tools etc.

Rest Client for VS Code

Would be nice to have a "samples" folder in the project with pre-baked HTTP requests for different things in the system

Mindmaps

About

A collection of my ideas, examples, and resources regarding architecture and tech choices for a full-stack .NET web application.

Resources

Stars

Watchers

Forks