組件不是新概念。硬體領域早已成熟:組裝電腦時,我們不需懂 CPU 微架構、主板時序、光驅光學原理,只需知道介面規格(插槽、總線、協議)即可組合。軟體組件移植此思想:
| 挑戰 | 傳統困境 | 組件化方案 |
|---|---|---|
| 定位與使用標準化 | 各廠商 API 風格迥異,學習成本高 | 統一元資料模型(.NET Assembly/COM TypeLib),IDE 智能提示 |
| 位置透明交互 | 本地/遠端調用代碼截然不同 | 統一介面模型,Remoting/WCF/gRPC 透明代理 |
| 版本靈活升級 | DLL Hell:版本衝突導致應用崩潰 | 強名稱四部分版本號 + 側向執行 + 綁定重導向 |
| 安全性保障 | 代碼完全信任,惡意/漏洞風險大 | CAS 程式碼存取安全 + 沙箱隔離 + 簽名驗證 |
Level 1: 類別庫 (DLL) - 僅程式碼共享
Level 2: 契約化組件 - 介面定義、版本號、獨立測試
Level 3: 標準化組件 - 遵循平台規範 (COM/.NET/OSGi)、支援工具鏈
Level 4: 生態組件 - 發布至市場 (NuGet/Maven)、文檔完善、SLA 保障
Level 5: 平台組件 - 成為基礎設施一部分 (ASP.NET Core / Entity Framework)
理解組件本質與關鍵挑戰,是設計可落地、可演進、可治理組件化系統的認知基石。