c#一些处理解决方案(组件,库)

1.关系数据库

    postgresql,mysql,oracle,sqlserver

2.本地数据库

    sqlite,berkeleydb,litedb

3.缓存数据库

   redis,mongdb(我个人并不建议使用mongdb)

4.数据库连接池

   基本按照ADO.NET实现,所有数据库都自我实现数据库连接池,一般连接字符串中pool设置。

   我自己实现了一个数据库连接池Hikari.已经提交nuget,名称:Hikari

5.一般缓存

     在c#中基本使用集合。

    另外一个MemoryCache。

    我自己实现了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(java),RocketMQ(java),NSQ(go)

  另外mqtt实现的服务平台也可以作为小消息传输。

  特别说明:最近逐步有人研究go,其实一门语言出来总是有噱头的,我就不说了,总会有人去折腾的。不过按照现在的说法,我感觉go适合这类东西,而不是web之类。NSQ是go实现的消息队列,专门处理大数据量提交的,本身也提供了集群模式,所以c#首推它。

  提供一个NSQ的c#客户端:https://github.com/judwhite/NsqSharp

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/

   该软件可以方便的实现服务发现,类似zokeerper,但是没有那么复杂,相对来说比较轻量,部署简便,本身也实现了自己的分布式集群部署。它是go语言实现的,能够快速在多个平台部署,无依赖。

   现在已经有etcd的作者提供的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).

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值