Sangmado 公共基础类库

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

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

 依赖库

 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

 依赖库

 Sangmado.Fida.Http.Scaffolding

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

  • SelfHostHttpServer

 依赖库

 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 公共类库中;

通用功能性类库






本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/p/sangmado_common_libs.html,如需转载请自行联系原作者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
XML 自然语言处理 开发者
定制化IDL文件设计:面向具体需求的接口定义方法
定制化IDL文件设计:面向具体需求的接口定义方法
67 2
|
3月前
|
存储 Oracle Java
Java 包和 API 深度解析:组织代码,避免命名冲突
Java 中的包 用于将相关的类分组在一起。可以将其视为文件目录中的一个文件夹。我们使用包来避免名称冲突,并编写更易于维护的代码。 包分为两类: 内置包(来自 Java API 的包) 用户定义的包(创建自己的包)
311 2
|
3月前
|
存储 运维 安全
Java常用类和基础API
Java常用类和基础API
38 0
|
XML C++ 数据格式
关于类库项目不能新增资源文件的解决方案
关于类库项目不能新增资源文件的解决方案
关于类库项目不能新增资源文件的解决方案
|
JSON Java Unix
ResponseEntity类和HttpEntity及跨平台路径问题
ResponseEntity类和HttpEntity及跨平台路径问题
ResponseEntity类和HttpEntity及跨平台路径问题
|
编解码 前端开发 数据处理
前端基础向--从项目入手封装公共组件
前端基础向--从项目入手封装公共组件
258 0
|
消息中间件 算法 数据库
项目公共类介绍|学习笔记
快速学习项目公共类介绍
86 0
项目公共类介绍|学习笔记
|
测试技术
Appium自动化框架从0到1之 公共方法的封装
Appium自动化框架从0到1之 公共方法的封装
94 0
|
PHP 数据格式
【laravel】使用trait超类管理公共代码
【laravel】使用trait超类管理公共代码
112 0
【laravel】使用trait超类管理公共代码