Sangmado 公共基础类库
Sangmado(發(fā)音 /s??mɑ?du:/ ‘桑麻渡’)涵蓋了支撐 .NET/C# 項(xiàng)目開發(fā)的最基礎(chǔ)的公共類庫,為團(tuán)隊(duì)在不斷的系統(tǒng)開發(fā)和演進(jìn)過程中發(fā)現(xiàn)和積累的最公共的代碼可復(fù)用單元。
Sangmado 公共類庫設(shè)計(jì)原則:
獨(dú)立性:不與任何業(yè)務(wù)框架或業(yè)務(wù)應(yīng)用耦合;
依賴性:最小化外部類庫依賴,選擇最穩(wěn)定的依賴庫版本;
分離性:關(guān)注點(diǎn)分離,滿足 Separation of Concerns;
兼容性:通過 x.y.z 版本號(hào)控制兼容性;
易用性:發(fā)布 nuget 包,可在任意環(huán)境使用;
開源性:使用?GitHub?代碼管理,PR 開發(fā)流程;
Sangmado 公共基礎(chǔ)類庫功能
使用?Inka?子名稱,意為?Infrastructure,為各種項(xiàng)目打造公共基礎(chǔ)設(shè)施。
| 名空間 | 功能描述? |
?Sangmado.Inka.Caching | ?關(guān)注各種緩存公共類庫。
?依賴庫
|
?Sangmado.Inka.Configuration | ?關(guān)注各種配置,通過接口隔離配置服務(wù)。
?依賴庫
|
?Sangmado.Inka.Extensions | ?關(guān)注各種 C# 基礎(chǔ)類的擴(kuò)展方法。
|
?Sangmado.Inka.Logging | ?日志系統(tǒng)的隔離接口。
|
?Sangmado.Inka.Logging.NLogIntegration | ?選擇使用 NLog 作為日志類庫。
?依賴庫
|
?Sangmado.Inka.MomBrokers | ?封裝?Message-oriented Middleware 消息中間件。
?依賴庫
|
?Sangmado.Inka.Security | ?關(guān)注安全加密算法,公私鑰簽名驗(yàn)簽等。
|
?Sangmado.Inka.Serialization | ?關(guān)注對(duì)象序列化和反序列化,數(shù)據(jù)壓縮。
?依賴庫
|
?Sangmado.Inka.Serialization.ProtocolBuffers | ?封裝?Google Protocol Buffers 格式序列化。
?依賴庫
|
Sangmado 公共框架類庫功能
使用?Fida?子名稱,意為?Framework,嘗試為服務(wù)提供框架基礎(chǔ)。
| ? 名空間 | ?功能描述? |
?Sangmado.Fida.Http | ?封裝內(nèi)部 HTTP 服務(wù)和調(diào)用接口?。
?依賴庫
|
?Sangmado.Fida.Http.Scaffolding | ?封裝內(nèi)部 HTTP Service 腳手架,Server 支持 SelfHost?。
?依賴庫
|
?Sangmado.Fida.MessageExtensions? | ?為消息定義提供擴(kuò)展方法。
?依賴庫
|
?Sangmado.Fida.MessageEncoding? | ?關(guān)注消息序列化和反序列化。
?依賴庫
|
?Sangmado.Fida.Messages | ?傳輸消息定義,消息信封格式。
?依賴庫
|
?Sangmado.Fida.Messaging ?(Legacy, 已被?Redola.Rpc?類庫取代) | ?消息傳輸服務(wù)封裝。
?依賴庫
|
內(nèi)部服務(wù)架構(gòu)設(shè)計(jì)指導(dǎo)原則
領(lǐng)域間定義明確的邊界,邊界僅提供 HTTP 或 MOM 交互,不能使用 RPC 等其他交互方式,為語言異構(gòu)提供基礎(chǔ),例如使用 Sangmado 中的 MomBrokers 封裝;
領(lǐng)域邊界對(duì)外提供 Contract 服務(wù)契約,其他領(lǐng)域使用該 Contract 理解該領(lǐng)域的模型,Contract 定義語言無關(guān),例如使用 Sangmado 中的 Json 或 Protobuf 封裝和解析;
領(lǐng)域邊界?Contract 可發(fā)布至內(nèi)部 nuget 服務(wù)器,供其他領(lǐng)域服務(wù)引用;
領(lǐng)域內(nèi)服務(wù)可選擇任意交互機(jī)制,Socket、RPC、HTTP、MOM 無限制;
領(lǐng)域內(nèi) Common 類庫,如果為可復(fù)用代碼,可提升到 Sangmado 公共類庫中;
通用功能性類庫
Cowboy.Sockets?基于 TCP Socket 的通用類庫;
Cowboy.WebSockets?提供 WebSocket 支持;
Redola.Rpc?基于 TCP Socket 封裝的 RPC 通信框架;
Happer.Http?支持 Self Host 的 HTTP 服務(wù)器;
Issuna?通用業(yè)務(wù) ID 發(fā)號(hào)器;
Logrila?抽象 Log 日志接口,與具體的 Log 框架分離;
原文地址:https://www.cnblogs.com/gaochundong/p/sangmado_common_libs.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的Sangmado 公共基础类库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11月7日邀您参加成都微软MVP圆桌之夜
- 下一篇: 微软正式发布Azure IoT Cent