zoukankan      html  css  js  c++  java
  • 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

     依赖库

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

    通用功能性类库

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

  • 相关阅读:
    racle wm_concat(column)函数的使用
    位运算应用口诀和实例
    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
    SQL触发器实例讲解
    编写更好的jQuery代码的建议
    Jquery插件开发学习
    Java中super的几种用法并与this的区别
    全面总结Java泛型
    Oracle统计函数之Lead
    VBscript读取excel表,中数据导入到SQLserver数据库里面
  • 原文地址:https://www.cnblogs.com/gaochundong/p/sangmado_common_libs.html
Copyright © 2011-2022 走看看