Application Architecture
43.1 Layered / N-Tier
Presentation (WinForms / WPF / API) → Application/Service layer → Domain (business rules) → Data access (repositories, EF/Dapper) → Database43.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.