Sangmado(發音 /sɔŋmɑːdu:/ ‘桑麻渡’)涵蓋了支撐 .NET/C# 項目開發的最基礎的公共類庫,為團隊在不斷的系統開發和演進過程中發現和積累的最公共的代碼可複用單元。
Sangmado 公共類庫設計原則:
獨立性:不與任何業務架構或業務應用耦合;
依賴性:最小化外部類庫依賴,選擇最穩定的依賴庫版本;
分離性:關注點分離,滿足 Separation of Concerns;
相容性:通過 x.y.z 版本号控制相容性;
易用性:釋出 nuget 包,可在任意環境使用;
使用 Inka 子名稱,意為 Infrastructure,為各種項目打造公共基礎設施。
名空間
功能描述
關注各種緩存公共類庫。
StringCache:使用 Redis 存取字元串。
RedisSet
RedisList
RedisDictionary
RedisQueue
RedisStack
依賴庫
Newtonsoft.Json
StackExchange.Redis
關注各種配置,通過接口隔離配置服務。
IConfiguration:配置抽象接口。
AppSetting:使用 app.config 配置。
System.Configuration
關注各種 C# 基礎類的擴充方法。
ThreadExtensions
TimeSpanExtensions
DateTimeExtensions
EnumExtensions
StopwatchExtensions
日志系統的隔離接口。
ILog
ILogger
選擇使用 NLog 作為日志類庫。
CompositeLog
CompositeLogger
<a href="https://github.com/gaochundong/Logrila" target="_blank">Logrila.Logging</a>
Logrila.Logging.NLogIntegration
NLog
封裝 Message-oriented Middleware 消息中間件。
IIncomingMomChannel
IOutgoingMomChannel
RabbitMQ.Client
關注安全加密算法,公私鑰簽名驗簽等。
SHA1withRSA
SHA256withRSA
SHA512withRSA
MD5withRSA
TotpSecurityStampBasedTokenProvider
關注對象序列化和反序列化,資料壓縮。
BinaryConvert
XmlConvert
JsonConvert
GZipCompression
封裝 Google Protocol Buffers 格式序列化。
ProtocolBuffersConvert
protobuf-net
使用 Fida 子名稱,意為 Framework,嘗試為服務提供架構基礎。
名空間
功能描述
封裝内部 HTTP 服務和調用接口 。
IEncodedHttpClient
EncodedResponse
<a href="https://github.com/gaochundong/Happer" target="_blank">Happer</a>
封裝内部 HTTP Service 腳手架,Server 支援 SelfHost 。
SelfHostHttpServer
為消息定義提供擴充方法。
MessageEnvelopeExtensions
關注消息序列化和反序列化。
IMessageEncoder
IMessageDecoder
XmlMessageEncoder
JsonMessageEncoder
ProtocolBuffersMessageEncoder
BinaryMessageEncoder
傳輸消息定義,消息信封格式。
MessageEnvelope
消息傳輸服務封裝。
Actor
領域間定義明确的邊界,邊界僅提供 HTTP 或 MOM 互動,不能使用 RPC 等其他互動方式,為語言異構提供基礎,例如使用 Sangmado 中的 MomBrokers 封裝;
領域邊界對外提供 Contract 服務契約,其他領域使用該 Contract 了解該領域的模型,Contract 定義語言無關,例如使用 Sangmado 中的 Json 或 Protobuf 封裝和解析;
領域邊界 Contract 可釋出至内部 nuget 伺服器,供其他領域服務引用;
領域内服務可選擇任意互動機制,Socket、RPC、HTTP、MOM 無限制;
領域内 Common 類庫,如果為可複用代碼,可提升到 Sangmado 公共類庫中;
本文轉自匠心十年部落格園部落格,原文連結:http://www.cnblogs.com/gaochundong/p/sangmado_common_libs.html,如需轉載請自行聯系原作者