Application Architecture

43.1 Layered / N-Tier

Presentation (WinForms / WPF / API) → Application/Service layer → Domain (business rules) → Data access (repositories, EF/Dapper) → Database

43.2 Clean / Onion Architecture

Solution layout: Shop.Domain (VB), Shop.Application (VB), Shop.Infrastructure (VB, or C# for EF migrations), Shop.Desktop (VB WinForms) or Shop.Api (C# or VB), Shop.Tests.

┌──────────── Infrastructure (EF Core, files, email, HTTP) ────────────┐
            │      ┌──────── Application (use cases, interfaces, DTOs) ─────┐     │
            │      │        ┌──── Domain (entities, value objects) ──┐     │     │
            │      │        └─────────────────────────────────────────┘     │     │
            │      └─────────────────────────────────────────────────────────┘     │
            └──────────────────── UI / API (composition root, DI) ─────────────────┘
Dependencies point INWARD. The domain has no references to infrastructure.

43.3 Other Architectural Topics

MVP (WinForms), MVVM (WPF), CQRS with MediatR, domain-driven design (aggregates, value objects, domain events), modular monoliths, plugin architectures (MEF System.ComponentModel.Composition / System.Composition, AssemblyLoadContext), microservices (communicating via HTTP/queues: RabbitMQ, Azure Service Bus), caching strategies (IMemoryCache, distributed Redis), offline-first desktop apps (SQLite + sync).

Architecture tests: NetArchTest / ArchUnitNET enforce layer dependencies.