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. 按enter 进行搜索 enter提交表单

    //按enter 进行搜索 document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.keyC ...

  2. js中数学运算的处理

    connum = Number(connum) + Number($(this).parents('.123').find(".views_core_hidden").val()) ...

  3. jQuery与原生js实现banner轮播图

    jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...

  4. 4.VUEX到底是什么

    关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux.redux.state.state之类的概念,以及大型工程必要性之类的.看官方手册也是昏昏然. 然而,我还是弄懂了!我准备 ...

  5. 11.page,pagcontext,config对象

  6. jzoj3760. 【BJOI2014】Euler

    题目大意: 欧拉函数  φ(n)  定义为不超过正整数 n 并且与 n 互素的整数的数目. 可以证明 φ(n) =  n ∗ ∏ (1 − 1 / pi). 其中 pi(1 <= i <= ...

  7. [图形学] Chp18 OpenGL表面纹理函数

    以2D表面为例展示纹理贴图,用opengl设置一个2D纹理,颜色存储在32*32*3的数组中,对应的纹理坐标为0<=s, t<=1.0. 画出几个正方形表面,分别以GL_CLAMP(纹理坐 ...

  8. Spring Boot简单xml配置集成mybatis

    一.xml配置版 1.properties文件中增加的配置: mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis ...

  9. Servlet中 End event threw exception,错误404 的解决方法

    End event threw exception    SEVERE: End event threw exceptionjava.lang.reflect.InvocationTargetExce ...

  10. JavaScript 的 作用域

    在看了几本书之后的一些理解和自己的想法.   作用域,变量的作用范围   在ES6之前 变量的声明   只有var可以声明变量属于某个作用域,并且,也只有全局作用域和函数作用域. (没有var声明的变 ...