c# 说说开发通用通信库,尤其是分布式服务的通信

来,牛皮需要吹起,IT行业需要自娱自乐。开篇吹牛。。。。。

现在我们通信真是各种各样,各种组件,但是就我的看法,功能越完善,封装越完善,牺牲的性能可能就越大,代码量就越大。

当然这不能阻挡IT大军的脚步,那我们一套软件上线后怎么办,软件到中途发现通信组件有问题怎么办,怎么去改?如果是多部门,多单位协作怎么办?

所以面对通用的模块处理时,就需要解决相关的问题,如果在可以预见的范围,你的通信仅仅自己用,这个项目用,用于不会改,那就无所谓了;这里涉及一个软件开发矛盾。你想要要灵活,那么意味着你的配置多,代码多,需要各种判断,你的代码就多了很多分支,性能可能就低了。相反,你写的越死,代码可能就越少,分支少,性能可能高。如何在项目中控制,需要根据自己的业务去预判,预判不等于全对,但是如果你是项目负责人,那就可以为大家减少重复工作。

废话完了,给大家一个通信模型,其实就是一个接口库。给大家提供思路。

1.定义客户端通信接口, ISocketClient<TData>,解决客户端通信

2.定义服务端通信接口, ISocketServer<TData>,解决服务端通信

3.定义一个特写NetProtocol,里面有一个名称字段。

4.定义一个接收数据的委托和传递给业务层的数据类NetChannel。

5.定义一个通信配置类TransferConfig,静态类,里面就一个属性,表示传输组件的dll文件目录

6.定义一个组件加载类TransferDLL,动态加载通信组件,找到客户端,服务端的类对象

7.定义一个通信对象的创建类NetFactory,解决通信对象创建问题

具体说说:

有了以上的接口定义库,可以动态加载通信组件,我们在使用时,通过NetFactory创建不同通信对象,

原理:在NetFactory中提供创建客户端和服务端的通信对象,返回的都是我们定义的通信接口对象。

       在创建方法中,需要你传送一个名字,这个名字就是你通信组件的名字。

例如:

我们使用dotnetty,你们我在实现通信的项目中,客户端类NettyClient继承ISocketClient,同时在NettyClient类上使用特性NetProtocol,比如是这样:NetProtocol(“netty_client”),那么创建客户端对象时,传入名称“netty”即可,这样通信对象就建立了。;服务端一样,服务端名称就是netty_server.

在软件的最外层,只需订阅配置,采用的传输组件名称,即可启用不同的传输组件。还可以动态替换,只要你的配置是动态加载的。

多说一句,我们的配置如果要达到动态,一般是采用什么方法呢?

1.定时重新加载,每1天或者几个小时,重新加载一次设置的配置。然后重新处理。

2.c#提供了文件监视,发现文件动了,简单的比较下文件,采用不同处理

3.你的程序提供简单的文件替换升级功能。

 例如:设置一个目录,程序定时监测或者直接监视目录,发现有新的配置文件,就说明你升级了配置文件,监测文件进行处理。

项目地址:

https://github.com/jinyuttt/StremCloud.git

其中的SrvNetSocket项目就是通信接口定义。

 

 

c#工业自动化通信开发,工业自动软件必备的基本程序。包括串口通信,TCP客户端,tcp服务器端,高并发物联网接收服务器端,udp通信,can总线通信,profinet,modbus tcp/rtu/dtu等,各大品牌plc通信,opc ua,opc da,http通信,mysql常规,ef6+mysql,ef6+sqlite,firebird数据,ini配置文件操作,excel表格操作(包括模版化导出),rabbitmq消息队列管理,Rabiitmq消息队列操作,常用的数据转换(高低字节排序,转换,取位设位,校验和等),功能可拆分。不懂的,不明白的,包教会。做项目的做服务的,包能用。拥有技术公共群共同探讨技术难题,使用技巧和问题,详细的使用明文档。 update 2021.7.26----优化消息队列出队缓存,读取更快捷更稳定。 update 2021.7.26----新增加rabbitmq消息队列管理类,可以嵌入到用户界面中管理rabbitmq服务器 update 2021.8.3---新增应用于物联网及mes系统中远程读取modbus rtu协议。 update 2021.8.10---新增加ef6+mssql数据功能,实现自动创建表,以及存储过程。完善及提高了efmssql,efsqlite,efmysql等安全。 update 2021.08.19---根据行业设备通信现状需要,增加通过dcom组件与opc服务器通信功能,去除原来复杂的操作过程,使用接口式更方便稳定 update-2021-08-30-----新增加dtu服务器,pc做为服务器,远程4G Dtu模块作为客户端主动连接服务器,服务器根据模块注册信息下发modbus rtu指令至远端,终端回复数据服务器自动解析。主要应用于物联网平台.mes系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值