Sangmado之(zhi).NET項目公共基礎(chu)類庫
Sangmado(發(fa)音 /s??mɑ?du:/ ‘桑麻渡(du)’)涵蓋(gai)了支撐 .NET/C# 項(xiang)目開發(fa)的(de)(de)(de)最基礎的(de)(de)(de)公(gong)共類(lei)庫,為(wei)團隊在不斷的(de)(de)(de)系統開發(fa)和演進過(guo)程(cheng)中發(fa)現和積(ji)累的(de)(de)(de)最公(gong)共的(de)(de)(de)代碼可(ke)復用單(dan)元(yuan)。
Sangmado 公共類庫設計原則:
- 獨立性:不與任何業務框架或業務應用耦合;
- 依賴性:最小化外部類庫依賴,選擇最穩定的依賴庫版本;
- 分離性:關注點分離,滿足 Separation of Concerns;
- 兼容性:通過 x.y.z 版本號控制兼容性;
- 易用性:發布 nuget 包,可在任意環境使用;
- 開源性:使用 代碼管理,PR 開發流程;
Sangmado 公共基礎類庫功能
使用 Inka 子名稱,意為 Infrastructure,為各(ge)種(zhong)項(xiang)目打(da)造公(gong)共基礎設(she)施。
| 名空間 |
功能描述 |
|
|
關(guan)注(zhu)各種緩存公共類(lei)庫。
依賴庫
|
|
|
關注各(ge)種配置(zhi),通過接(jie)口隔離(li)配置(zhi)服務。
依賴庫
|
|
|
關注各(ge)種 C# 基礎類的擴展方法。
|
|
|
日(ri)志系統的隔離(li)接口。
|
|
|
選擇使(shi)用 NLog 作(zuo)為(wei)日志(zhi)類庫。
依賴庫
|
|
|
封(feng)裝 Message-oriented Middleware 消息中間件。
依賴庫
|
|
|
關注安全加密算法,公(gong)私(si)鑰簽名驗簽等。
|
|
|
關(guan)注對象序列化(hua)和(he)反序列化(hua),數據壓縮。
依賴庫
|
|
|
封裝 Google Protocol Buffers 格式序(xu)列化(hua)。
依賴庫
|
Sangmado 公共框架類庫功能
使用 Fida 子名稱,意為 Framework,嘗試為(wei)服(fu)務(wu)提供框架基礎。
| 名空間 |
功能描述 |
|
|
封裝內部 HTTP 服務(wu)和調用接口 。
依賴庫(ku)
|
|
|
封裝內(nei)部(bu) HTTP Service 腳手架,Server 支持 SelfHost 。
依(yi)賴庫
|
|
|
為消息(xi)定義提供(gong)擴展方(fang)法。
依(yi)賴庫
|
|
|
關注消息(xi)序(xu)列(lie)(lie)化(hua)和反序(xu)列(lie)(lie)化(hua)。
依賴庫(ku)
|
|
|
傳輸消(xiao)息(xi)定義,消(xiao)息(xi)信(xin)封格式。
依(yi)賴庫
|
|
(Legacy, 已被 Redola.Rpc 類庫取代) |
消(xiao)息傳輸服務封(feng)裝。
依賴(lai)庫
|
內部服務架構設計指導原則
- 領域間定義明確的邊界,邊界僅提供 HTTP 或 MOM 交互,不能使用 RPC 等其他交互方式,為語言異構提供基礎,例如使用 Sangmado 中的 MomBrokers 封裝;
- 領域邊界對外提供 Contract 服務契約,其他領域使用該 Contract 理解該領域的模型,Contract 定義語言無關,例如使用 Sangmado 中的 Json 或 Protobuf 封裝和解析;
- 領域邊界 Contract 可發布至內部 nuget 服務器,供其他領域服務引用;
- 領域內服務可選擇任意交互機制,Socket、RPC、HTTP、MOM 無限制;
- 領域內 Common 類庫,如果為可復用代碼,可提升到 Sangmado 公共類庫中;
通用功能性類庫
- 基于 TCP Socket 的通用類庫;
- 提供 WebSocket 支持;
- 基于 TCP Socket 封裝的 RPC 通信框架;
- 支持 Self Host 的 HTTP 服務器;
- 通用業務 ID 發號器;
- 抽象 Log 日志接口,與具體的 Log 框架分離;
版權聲明:本篇文章《Sangmado之.NET項目公共基礎類庫》由作者 Dennis Gao 發表自博客園個人技術博客,未經作者本人同意禁止以任何的形式轉載,任何自動的或人為的爬蟲轉載行為均為耍流氓。
