組件化程式設計繼承並深化物件導向,將「物件」提升為獨立部署、版本管理、跨語言互操作的「組件」,構建類似積木搭建的系統工程體系。
組件市場(NuGet、商業組件庫)加速生態繁榮,推動廠商合作與標準化。
| 特徵 | 工程實踐 |
|---|---|
| 語言/環境獨立 | C#/VB/F# 產出組件無縫互操作,CTS 保證型別一致性 |
| 位置透明 | 本地 DLL / 遠端 gRPC / HTTP API 統一介面調用模式 |
| 進程透明 | AppDomain / Process / Container / Kubernetes Pod 邊界對調用者透明 |
| 可擴充 | 開放/封閉原則:新增組件擴展功能,不修改既有組件 |
| 可重用 | NuGet 套件管理、內部組件庫、跨專案共享 |
| 強基礎設施 | System.Transactions、ASP.NET Core Middleware、Serilog、MassTransit |
| 系統級服務 | DI 容器、設定管理、健康檢查、分散式追蹤 |
interface / abstract class:契約定義assembly / module:物理封裝attribute:中繼資料擴充(如 [Export]、[Inject])reflection / Assembly.Load:動態發現與載入generic:型別安全的組件參數化async/await:非阻塞組件協作record / init:不可變資料傳輸物件(DTO)
單體 → 模組化 (DLL) → 組件化 (COM/.NET Assembly) → 服務化 (SOA/Microservices) → 雲原生 (K8s/Service Mesh)
每階段解決前一階段的耦合、部署、擴展痛點。組件化是通往微服務的關鍵中繼站。
internal:組件邊界即封裝邊界掌握組件化方法論,是從「寫代碼」進階為「架構系統」的關鍵認知躍升。