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).