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. django-xadmin列表页filter关联对象搜索问题

    环境:xadmin-for-python3 python3.5.2 django1.9.12 问题描述:Product ProductSku两个实体,ProductSku FK外键关联Product ...

  2. 1.Smarty的下载安装

    下载地址:https://github.com/smarty-php/smarty/tree/v3.1.29 官网:smarty.net 下载解压后的目录:

  3. rails 多态

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #f4f4f4; background-color: rgba( ...

  4. JavaScript学习笔记(三)——留言板知操纵DOM节点

    用JavaScript写了一个简易的留言板,暂不涉及数据库接入等. 1.功能以及流程 主要功能即为留言,用两个文本框接受用户输入的用户名以及留言内容,然后通过"提交留言"按钮将用户 ...

  5. JS之正则表达式

    一.正则表达的目标: 1.使用表单事件和脚本函数实现表单验证 2.使用String对象和文本框控件常用属性和方法实现客户端验证 二.什么需要表单验证: 1.表单元素是否为空 2.用户名和密码 3.E- ...

  6. Vijos 1025 小飞侠的游园方案 0-1背包

    描述 经过抽签选择,小智将军第一个进入考场. 菜虫:(身上散射出华贵(?)的光芒)欢迎你,第一位挑战者!! 小智:--(走到菜虫身后,关灯)女王陛下,虽然我们国家现在很富裕,但也请您不要浪费电来用这么 ...

  7. Akka(12): 分布式运算:Cluster-Singleton-让运算在集群节点中自动转移

    在很多应用场景中都会出现在系统中需要某类Actor的唯一实例(only instance).这个实例在集群环境中可能在任何一个节点上,但保证它是唯一的.Akka的Cluster-Singleton提供 ...

  8. requireJS 源码(二) data-main 的加载实现

    (一)requireJs 的整体结构: requireJS 源码 前192行,是一些 变量的声明,工具函数的实现 以及 对 三个全局变量(requirejs,require,define)若被占用后的 ...

  9. Linux - iostat命令详解

    简介 iostat可以提供更丰富的IO性能状态数据,iostat命令有两个用途: 输出CPU的统计信息 输出设备和分区的I/O统计信息 命令语法及参数说明 语法: iostat [ -c | -d ] ...

  10. My sql添加远程用户root密码为password

    添加远程用户root密码为password grant all privileges on *.* to root@localhost identified by '123321' with gran ...