为了账号安全,请及时绑定邮箱和手机立即绑定

Sangmado 公共基础类库

标签:
算法

Sangmado(发音 /sɔŋmɑːdu:/ ‘桑麻渡’)涵盖了支撑 .NET/C# 项目开发的最基础的公共类库,为团队在不断的系统开发和演进过程中发现和积累的最公共的代码可复用单元。

Sangmado 公共类库设计原则:

  • 独立性:不与任何业务框架或业务应用耦合;

  • 依赖性:最小化外部类库依赖,选择最稳定的依赖库版本;

  • 分离性:关注点分离,满足 Separation of Concerns;

  • 兼容性:通过 x.y.z 版本号控制兼容性;

  • 易用性:发布 nuget 包,可在任意环境使用;

  • 开源性:使用 GitHub 代码管理,PR 开发流程;

Sangmado 公共基础类库功能

使用 Inka 子名称,意为 Infrastructure,为各种项目打造公共基础设施。

名空间

功能描述 

 Sangmado.Inka.Caching

 关注各种缓存公共类库。

  • StringCache:使用 Redis 存取字符串。

  • RedisSet

  • RedisList

  • RedisDictionary

  • RedisQueue

  • RedisStack

 依赖库

  • Newtonsoft.Json

  • StackExchange.Redis

 Sangmado.Inka.Configuration

 关注各种配置,通过接口隔离配置服务。

  • IConfiguration:配置抽象接口。

  • AppSetting:使用 app.config 配置。

 依赖库

  • System.Configuration

 Sangmado.Inka.Extensions

 关注各种 C# 基础类的扩展方法。

  • ThreadExtensions

  • TimeSpanExtensions

  • DateTimeExtensions

  • EnumExtensions

  • StopwatchExtensions

 Sangmado.Inka.Logging

 日志系统的隔离接口。

  • ILog

  • ILogger

 Sangmado.Inka.Logging.NLogIntegration

 选择使用 NLog 作为日志类库。

  • CompositeLog

  • CompositeLogger

 依赖库

  • Logrila.Logging

  • Logrila.Logging.NLogIntegration

  • NLog

 Sangmado.Inka.MomBrokers

 封装 Message-oriented Middleware 消息中间件。

  • IIncomingMomChannel

  • IOutgoingMomChannel

 依赖库

  • RabbitMQ.Client

 Sangmado.Inka.Security

 关注安全加密算法,公私钥签名验签等。

  • SHA1withRSA

  • SHA256withRSA

  • SHA512withRSA

  • MD5withRSA

  • TotpSecurityStampBasedTokenProvider 

 Sangmado.Inka.Serialization

 关注对象序列化和反序列化,数据压缩。

  • BinaryConvert

  • XmlConvert

  • JsonConvert

  • GZipCompression

 依赖库

  • Newtonsoft.Json

 Sangmado.Inka.Serialization.ProtocolBuffers

 封装 Google Protocol Buffers 格式序列化。

  • ProtocolBuffersConvert

 依赖库

  • protobuf-net

Sangmado 公共框架类库功能

使用 Fida 子名称,意为 Framework,尝试为服务提供框架基础。

  名空间

 功能描述 

 Sangmado.Fida.Http

 封装内部 HTTP 服务和调用接口 。

  • IEncodedHttpClient

  • EncodedResponse

 依赖库

  • Happer

  • Logrila.Logging

  • protobuf-net

  • Newtonsoft.Json

 Sangmado.Fida.Http.Scaffolding

 封装内部 HTTP Service 脚手架,Server 支持 SelfHost 。

  • SelfHostHttpServer

 依赖库

  • Happer

  • Logrila.Logging

  • Newtonsoft.Json

 Sangmado.Fida.MessageExtensions 

 为消息定义提供扩展方法。

  • MessageEnvelopeExtensions 

 依赖库

  • protobuf-net

  • Newtonsoft.Json

 Sangmado.Fida.MessageEncoding 

 关注消息序列化和反序列化。

  • IMessageEncoder

  • IMessageDecoder

  • XmlMessageEncoder

  • JsonMessageEncoder

  • ProtocolBuffersMessageEncoder

  • BinaryMessageEncoder

 依赖库

  • Newtonsoft.Json

  • protobuf-net

 Sangmado.Fida.Messages

 传输消息定义,消息信封格式。

  • MessageEnvelope

 依赖库

  • protobuf-net

 Sangmado.Fida.Messaging

 (Legacy, 已被 Redola.Rpc 类库取代)

 消息传输服务封装。

  • Actor

 依赖库

  • protobuf-net

  • Newtonsoft.Json

内部服务架构设计指导原则

  • 领域间定义明确的边界,边界仅提供 HTTP 或 MOM 交互,不能使用 RPC 等其他交互方式,为语言异构提供基础,例如使用 Sangmado 中的 MomBrokers 封装;

  • 领域边界对外提供 Contract 服务契约,其他领域使用该 Contract 理解该领域的模型,Contract 定义语言无关,例如使用 Sangmado 中的 Json 或 Protobuf 封装和解析;

  • 领域边界 Contract 可发布至内部 nuget 服务器,供其他领域服务引用;

  • 领域内服务可选择任意交互机制,Socket、RPC、HTTP、MOM 无限制;

  • 领域内 Common 类库,如果为可复用代码,可提升到 Sangmado 公共类库中;

通用功能性类库

  • Cowboy.Sockets 基于 TCP Socket 的通用类库;

  • Cowboy.WebSockets 提供 WebSocket 支持;

  • Redola.Rpc 基于 TCP Socket 封装的 RPC 通信框架;

  • Happer.Http 支持 Self Host 的 HTTP 服务器;

  • Issuna 通用业务 ID 发号器;

  • Logrila 抽象 Log 日志接口,与具体的 Log 框架分离;

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消