該使用 SDK 還是 WebApi 的形式提供服務?
目錄
大家在使用 dotnet 或其他可以打包成功開套件做分享的程式語言時,可能都會想到一個問題
- 現在 WebApi 那麼盛行,我該如何抉擇要使用 Web Api 還是 套件 的形式發布我的服務、功能呢?
- 我覺得我新寫的功能好棒棒,我想發布成 nuget package 分享給團隊,但是不確定合不合適
這邊我簡單梳理一下一些需要考量的點~
備註1: 這篇算是過往前輩教我的一些心法整理,配合我自己後續的開發經驗所整理的一些小資訊
備註2: 由於我主要還是開發 dotnet 的服務,因此以下都會以 dotnet 的角度出發
套件的開發評估
1 誰適合使用開發套件的方式發布
- 簡單的邏輯運算
- 簡單的資料組合
- 盡可能只倚賴微軟套件或常見的主流套件,並且會跟著相依套件進行更版
- 提供的功能單一,且有高內聚特性
- 當套件更新時,使用此套件的應用程式不需要即時更新也能維持功能不出錯
- 提供對特定版本的 WebApi 或 資料庫 連線與調用功能的能力
2 Nuget 套件開發時的注意事項
- 不要依賴太多外部套件 (除非是要做那個套件的額外擴充)
- 盡量不要有網路以外的 IO 處理 (會允許網路 IO 是要與 API 溝通)
- 若使用者不使用你的套件,應該也要有相對簡單的方式達成一樣的目的
- 套件提供的功能應該要有高內聚、低耦合的特性
- 套件的 API 設計要簡單明瞭,且職責明確
- 盡可能提供有彈性的注入方法
最好提供專用的注入方法,避免內部實作物件暴露
- 一定要有公開介面
- 內部實作可以的話不要使用 public
Web Api 的開發評估
1 誰適合製作 WebApi
- 需要獨立運作
- 需要頻繁與資料庫互動
- 需要處理複雜邏輯
- 需要更新後能夠立即反映新的邏輯在使用此 Web Api 的系統
- 需要同時提供多版本功能
- 除了 dotnet 系統外,也需要提供服務給前端等非 dotnet 生態系的系統