Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5. Kiến trúc Phần mềm

Giới thiệu

Phần này trình bày các nguyên tắc, pattern, và kiến trúc phần mềm phổ biến trong phát triển ứng dụng .NET. Từ các nguyên tắc thiết kế cơ bản đến các kiến trúc hệ thống phức tạp, phần này cung cấp kiến thức toàn diện để xây dựng ứng dụng bền vững, dễ bảo trì và mở rộng.

Cấu trúc nội dung

1. Nguyên tắc Thiết kế

Các nguyên tắc cơ bản hướng dẫn việc thiết kế phần mềm chất lượng cao:

  • SOLID Principles - 5 nguyên tắc thiết kế hướng đối tượng cơ bản
  • DRY, KISS, YAGNI - Nguyên tắc đơn giản hóa và tránh trùng lặp
  • Separation of Concerns - Phân tách mối quan tâm trong thiết kế

2. Design Patterns

Các mẫu thiết kế đã được chứng minh giải quyết các vấn đề phổ biến:

  • Creational Patterns - Factory, Singleton, Builder, Prototype
  • Structural Patterns - Adapter, Decorator, Facade, Proxy
  • Behavioral Patterns - Strategy, Observer, Command, Mediator

3. Kiến trúc Ứng dụng

Các kiến trúc tổ chức codebase và phân tách responsibility:

  • Clean Architecture - Phân tách layer với Domain ở trung tâm
  • Domain-Driven Design (DDD) - Thiết kế tập trung vào nghiệp vụ
  • CQRS - Tách biệt Command và Query responsibility
  • Event-Driven Architecture - Kiến trúc dựa trên sự kiện
  • Hexagonal Architecture - Kiến trúc cổng và adapter
  • Onion Architecture - Kiến trúc vòng tròn đồng tâm

4. Phương pháp Phát triển

Các phương pháp luận trong phát triển phần mềm:

  • Test-Driven Development (TDD) - Phát triển dựa trên kiểm thử
  • Behavior-Driven Development (BDD) - Phát triển dựa trên hành vi

5. Kiến trúc Hệ thống

Các kiến trúc ở cấp độ hệ thống và phân tán:

  • Microservices - Kiến trúc dịch vụ nhỏ độc lập
  • Monolithic Architecture - Kiến trúc nguyên khối truyền thống
  • Serverless Architecture - Kiến trúc không máy chủ
  • Event Sourcing - Lưu trữ trạng thái dưới dạng chuỗi sự kiện

Mục tiêu học tập

Sau khi hoàn thành phần này, bạn sẽ có khả năng:

  1. Hiểu và áp dụng các nguyên tắc SOLID trong thiết kế class
  2. Lựa chọn và triển khai design patterns phù hợp
  3. Thiết kế kiến trúc ứng dụng theo Clean Architecture, DDD, CQRS
  4. Áp dụng TDD trong phát triển phần mềm
  5. Lựa chọn kiến trúc hệ thống phù hợp với yêu cầu dự án
  6. Thiết kế hệ thống phân tán với microservices và message queue