中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Sangmado之(zhi).NET項目公共基礎(chu)類庫

Sangmado(發(fa)音 /s??mɑ?du:/ ‘桑麻渡(du)’)涵蓋(gai)了支撐 .NET/C# 項(xiang)目開發(fa)的(de)(de)(de)最基礎的(de)(de)(de)公(gong)共類(lei)庫,為(wei)團隊在不斷的(de)(de)(de)系統開發(fa)和演進過(guo)程(cheng)中發(fa)現和積(ji)累的(de)(de)(de)最公(gong)共的(de)(de)(de)代碼可(ke)復用單(dan)元(yuan)。

Sangmado 公共類庫設計原則:

  • 獨立性:不與任何業務框架或業務應用耦合;
  • 依賴性:最小化外部類庫依賴,選擇最穩定的依賴庫版本;
  • 分離性:關注點分離,滿足 Separation of Concerns;
  • 兼容性:通過 x.y.z 版本號控制兼容性;
  • 易用性:發布 nuget 包,可在任意環境使用;
  • 開源性:使用 代碼管理,PR 開發流程;

Sangmado 公共基礎類庫功能

使用 Inka 子名稱,意為 Infrastructure,為各(ge)種(zhong)項(xiang)目打(da)造公(gong)共基礎設(she)施。

名空間

功能描述 

 

 關(guan)注(zhu)各種緩存公共類(lei)庫。

  • StringCache:使用 Redis 存取字符串。
  • RedisSet
  • RedisList
  • RedisDictionary
  • RedisQueue
  • RedisStack

 依賴庫

  • Newtonsoft.Json
  • StackExchange.Redis

 

 關注各(ge)種配置(zhi),通過接(jie)口隔離(li)配置(zhi)服務。

  • IConfiguration:配置抽象接口。
  • AppSetting:使用 app.config 配置。

 依賴庫

  • System.Configuration

 

 關注各(ge)種 C# 基礎類的擴展方法。

  • ThreadExtensions
  • TimeSpanExtensions
  • DateTimeExtensions
  • EnumExtensions
  • StopwatchExtensions

 

 日(ri)志系統的隔離(li)接口。

  • ILog
  • ILogger

 

 選擇使(shi)用 NLog 作(zuo)為(wei)日志(zhi)類庫。

  • CompositeLog
  • CompositeLogger

 依賴庫

  • Logrila.Logging.NLogIntegration
  • NLog

 

 封(feng)裝 Message-oriented Middleware 消息中間件。

  • IIncomingMomChannel
  • IOutgoingMomChannel

 依賴庫

  • RabbitMQ.Client

 

 關注安全加密算法,公(gong)私(si)鑰簽名驗簽等。

  • SHA1withRSA
  • SHA256withRSA
  • SHA512withRSA
  • MD5withRSA
  • TotpSecurityStampBasedTokenProvider 

 

 關(guan)注對象序列化(hua)和(he)反序列化(hua),數據壓縮。

  • BinaryConvert
  • XmlConvert
  • JsonConvert
  • GZipCompression

 依賴庫

  • Newtonsoft.Json

 

 封裝 Google Protocol Buffers 格式序(xu)列化(hua)。

  • ProtocolBuffersConvert

 依賴庫

  • protobuf-net

Sangmado 公共框架類庫功能

使用 Fida 子名稱,意為 Framework,嘗試為(wei)服(fu)務(wu)提供框架基礎。

  名空間

 功能描述 

 

 封裝內部 HTTP 服務(wu)和調用接口 

  • IEncodedHttpClient
  • EncodedResponse

 依賴庫(ku)

  • protobuf-net
  • Newtonsoft.Json

 

 封裝內(nei)部(bu) HTTP Service 腳手架,Server 支持 SelfHost

  • SelfHostHttpServer

 依(yi)賴庫

  • Newtonsoft.Json

  

 為消息(xi)定義提供(gong)擴展方(fang)法。

  • MessageEnvelopeExtensions 

 依(yi)賴庫

  • protobuf-net
  • Newtonsoft.Json

  

 關注消息(xi)序(xu)列(lie)(lie)化(hua)和反序(xu)列(lie)(lie)化(hua)。

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

 依賴庫(ku)

  • Newtonsoft.Json
  • protobuf-net

 

 傳輸消(xiao)息(xi)定義,消(xiao)息(xi)信(xin)封格式。

  • MessageEnvelope

 依(yi)賴庫

  • protobuf-net

 

 (Legacy, 已被 Redola.Rpc 類庫取代)

 消(xiao)息傳輸服務封(feng)裝。

  • Actor

 依賴(lai)庫

  • protobuf-net
  • Newtonsoft.Json

內部服務架構設計指導原則

  • 領域間定義明確的邊界,邊界僅提供 HTTP 或 MOM 交互,不能使用 RPC 等其他交互方式,為語言異構提供基礎,例如使用 Sangmado 中的 MomBrokers 封裝;
  • 領域邊界對外提供 Contract 服務契約,其他領域使用該 Contract 理解該領域的模型,Contract 定義語言無關,例如使用 Sangmado 中的 Json 或 Protobuf 封裝和解析;
  • 領域邊界 Contract 可發布至內部 nuget 服務器,供其他領域服務引用;
  • 領域內服務可選擇任意交互機制,Socket、RPC、HTTP、MOM 無限制;
  • 領域內 Common 類庫,如果為可復用代碼,可提升到 Sangmado 公共類庫中;

通用功能性類庫

  • 基于 TCP Socket 的通用類庫;
  • 提供 WebSocket 支持;
  • 基于 TCP Socket 封裝的 RPC 通信框架;
  • 支持 Self Host 的 HTTP 服務器;
  •  通用業務 ID 發號器;
  • 抽象 Log 日志接口,與具體的 Log 框架分離;

版權聲明:本篇文章《Sangmado之.NET項目公共基礎類庫》由作者 Dennis Gao 發表自博客園個人技術博客,未經作者本人同意禁止以任何的形式轉載,任何自動的或人為的爬蟲轉載行為均為耍流氓。

posted @ 2017-08-10 16:47  sangmado  閱讀(3930)  評論(12)    收藏  舉報