Sangmado 涵盖了支撑 .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

 依赖库

Sangmado.Inka.MessageEncoding

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

  • IMessageEncoder
  • IMessageDecoder
  • XmlMessageEncoder
  • JsonMessageEncoder
  • ProtocolBuffersMessageEncoder
  • BinaryMessageEncoder

依赖库

  • Newtonsoft.Json
  • protobuf-net

 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
  • SelfHostHttpServer

依赖库

 Sangmado.Fida.MessageExtensions 

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

  • MessageEnvelopeExtensions 

依赖库

  • protobuf-net
  • Newtonsoft.Json

 Sangmado.Fida.Messages

传输消息定义。

  • MessageEnvelope

依赖库

  • protobuf-net

 Sangmado.Fida.Messaging

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

消息传输封装。

  • Actor

依赖库

  • protobuf-net
  • Newtonsoft.Json

版权声明:本篇文章《Sangmado 公共基础类库》由作者 Dennis Gao 发表自博客园个人技术博客,未经作者本人同意禁止以任何的形式转载,任何自动的或人为的爬虫转载行为均为耍流氓。

Sangmado 公共基础类库的更多相关文章

  1. 【PHP 基础类库】Prototype 原型版教学文章!

    前言 大家好我是:石不易,今天我为大家带来了PHP基础类库原型版的教学文章,至此本人的作品线已分为三大类,分别是:JavaScript前端框架(封装库).PHP模板引擎.以及PHP基础类库.该类库历时 ...

  2. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  3. MFC - 微软基础类库和框架

    一 MFC的概念和作用 1 什么是MFC?? 全称 Microsoft Foundation Class Library我们称之为微软基础类库 1)从硬盘的存在形式上来说 MFC就是一个库(静/动态库 ...

  4. 转一个 C#基础类库

    转自:http://www.cnblogs.com/sufei/archive/2012/12/07/2807170.html http://www.sufeinet.com/thread-655-1 ...

  5. Java中基础类库使用

    Java中基础类库: 在这里我仅仅介绍几种我个人觉得会常常使用的 1:Object类中的Clone机制仅仅是对对象进行浅层次的克隆,假设须要进行深层次的克隆的话那么就要自己写(详细Clone方法请參考 ...

  6. Microsoft.VisualBasic.dll的妙用and 改善C#公共程序类库质量的10种方法

    Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦) 前言 做过VB开发的都知道,有一些VB里面的好的函数在.NET里面都没有,而Microsoft.VisualBasic. ...

  7. Java基础类库简介

    Java基础类库简介 一.常用的基础类库:11个jar(Java Archive,Java归档)包 作为java语言使用者,我们可以感受到java语言带来的优势(平台无关.面向对象.多线程.高效易扩展 ...

  8. Java核心技术梳理-基础类库

    一.引言 Oracle为Java提供了丰富的基础类库,Java 8 提供了4000多个基础类库,熟练掌握这些基础类库可以提高我们的开发效率,当然,记住所有的API是不可能也没必要的,我们可以通过API ...

  9. Java知多少(74)基础类库

    Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便.快捷地开发 Java ...

随机推荐

  1. mysql left join

    MySQL左连接不同于简单连接.MySQL LEFT JOIN提供该表额外字段在左侧. 如果使用LEFT JOIN,得到的所有记录的匹配方式相同, 在左边表中得到的每个记录不匹配也会有一个额外的记录. ...

  2. 如何在自己的网页上插入一个超链接,发起临时qq会话

    1.先开通临时会话功能 打开网页http://shang.qq.com/v3/index.html

  3. 【PHP】震惊,一张图详解递归函数!!!!

    在PHP学习中,递归函数是一个非常重要也是非常难以理解的部分,本博文将通过一张图尽可能演示这个过程,不对之处还请指出

  4. htm5

    htm5在html4.0. xhtm1.0的基础上增加了音频.视频.拖拽等功能,不过,htmL5,还在完善中,不过大部分浏览器都已经支持了部分功能. 兼容性: 最新版本的 Safari.Chrome. ...

  5. Linux实战教学笔记13:定时任务补充

    第十三节 定时任务补充 标签(空格分隔): Linux实战教学笔记 ---[更多资料点我查看][1] 1,生产环境常用Crontab专业实例 1.1书写crontab定时任务多个基本要领 1.1.1 ...

  6. Java基础(6)- 面向对象解析

    java面向对象 对象 知识点 java 的方法参数是按值调用,是参数的一份拷贝 封装 使用private将 属性值/方法 隐藏,外部只能调用 get,set方法/非private 的接口 获取 重载 ...

  7. iOS动画学习-CALayer

    iOS中有很多方法可以实现动画,我们可以用CAKeyframeAnimation, CABasicAnimation,CASpringAnimation(iOS9.0中添加的,实现弹簧的效果),也可以 ...

  8. 初步研究一下sourceTree

    今天研究sourceTree,在此小结一下 1.下载链接:https://www.atlassian.com/software/sourcetree 2.安装,注册账户登录,连接到GitHub账号上, ...

  9. 流畅python学习笔记:第十章:序列的修改,散列和切片

    前面在介绍了类的很多内置方法,比如__add__,__eq__,这里继续介绍类的两个内置方法,这2个内置方法可以将一个类实例变成一个序列的形式.代码如下 class vector(object):   ...

  10. Android实现模拟表单上传

    很久以前,写过一篇关于下载的文章:基于HTTP协议的下载功能实现,今天对于Android上的文件上传,也简单的提两笔.在Android上,一般使用Http 模拟表单或者FTP来进行文件上传,使用FTP ...