天天看點

Sangmado 公共基礎類庫

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,如需轉載請自行聯系原作者