c#一些處理解決方案(組件,庫)

1.關係數據庫

    postgresql,mysql,oracle,sqlserver

2.本地數據庫

    sqlite,berkeleydb,litedb

3.緩存數據庫

   redis,mongdb

4.數據庫連接池

   基本按照ADO.NET實現,所有數據庫都自我實現數據庫連接池,一般連接字符串中pool設置。

   我自己實現了一個數據庫連接池Hikari.已經提交nuget,名稱:Hikari

5.一般緩存

     在c#中基本使用集合。

    我自己實現了JYCache,放在git上面,供大家學習研究,沒有用於生產。

6.ORM框架

Dapper,linq2db,EF不能忘記

7.excel操作

  原.net framework控件

  OleDb:需要驅動支持

  linq to excel:還是以OleDb爲基礎封裝,當前主要是.net framework

EPPlus:不需要支持

NPOI:不需要支持

pageoffice:

8.PDF

   ITextSharp,Spire.PDF

9.MQ

   通用件:kafka,RocketMQ

  另外mqtt實現的服務平臺也可以作爲小消息傳輸。

  最近逐步有人研究go,其實一門語言出來總是有噱頭的,我就不說了,總會有人去折騰的。不過按照現在的說法,我感覺go適合這類東西,而不是web之類。可惜,還沒有發現合適的,有一個nsq,但是沒有c#客戶端,我已經向原作者提交c#客戶端請求。

10.通信

zmq(關注很久,但是沒有發現官方吹噓的那麼牛逼),不要太複雜的處理

dotnetty(.net core實現),正在更新,底層優化合適。我自己編譯了.net standard版本,也放在了nuget。在官方的名稱之後添加了.Lib,例如:DotNetty.Transport.Lib。

 

11.序列化組件

  (1)二進制

     MessagePack 這玩意是2個,分別是:https://msgpack.org,https://github.com/neuecc/MessagePack-CSharp

     準確說一個是MessagePack-cli,一個是MessagePack-CSharp。注意別弄混了。

   (2)JSON

   Newtonsoft.Json:通用,不過封裝東西越來越多,無用太多

  ServiceStack.Text:商業化了,它的優勢在於解析

  fastJSON.NET:

(3)BSON

     mongdb的格式

(4)其它

12.負載均衡

     並沒有統一的東西,各種不同,很多成熟的軟件客戶端自帶,例如:redis.

     網上還有各種參考的源碼。我自己也實現了一個:KetamaHash

     就是hash一致算法帶虛擬節點。底層是MurmurHash+紅黑樹,已經提交nuget,名稱:JYKetamaHash 

13.分佈式環境搭建

    其它我就不知道了,只推薦一個:etcd. 官網:https://coreos.com/etcd/。它是go語言的,部署方便。

   現在已經有開發作者提供的c#的客戶端了,很簡單。我自己又根據官網的java版本轉換了一個客戶端c#.

  已經提交nuget,名稱:etcdclient.

14.中間件RPC

   google protobuf:不介紹了,網上搜索

  ice zeroc:官網https://zeroc.com/

 

11.其它類別總結

  (1)數據庫操作

          DataTable,IDataReader轉換List<T>.網上實現很多,我就不多說了。

          我自己轉換實現了一個擴展庫,採用了emit,使用.net standard版本。項目名稱:EntityMappingDB

          同樣可以將List<T>轉換成DataTable。

         已經提交nuget,名稱:EntityMappingDB,該項目可以完全替換其它我實現的版本庫,Hikari的擴展庫可以完全用它替換。

 12.自己構建RPC模型

      就是打包一個固定格式,然後在服務端解析。我就不多說了。

    我用一個數據庫訪問服務演示了整套使用.通信,序列化,同步,加密傳輸。項目名稱:DBAcessSrv

    其實數據庫訪問服務初衷是解決oracle客戶端安裝問題。不需要oracle客戶端,所有SQL發送到一個服務端執行。

    現在可以解決雲部署,桌面系統不方便訪問數據庫的問題(需要開放數據庫訪問端口,很危險)

其實這些東西我在前面的博文陸陸續續都提到了,也給了大家一些實現的思路方案,這裏都是一個總結。所有我自己寫的都放到了git.

  哈哈哈,還是照例發個牢騷吧,雖然微軟發佈了.net core,但是感覺很多例子,方案還是win上面的,因爲微軟自己有winserver系統。但是我感覺微軟還是應該大力關注linux.哪怕自己整款Linux系統也行啊。而win上面主要應該是UI相關的(winform,WPF).

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章