1--通讯技术

    在上篇了展望了本项目的一个框架,我们也知道:如果这个项目的处理时间不能达到要求的话,则花哨的功能也不能逃过失败的定论。
    而通讯的关键在于数据处理枢纽的层数和处理中转的时间,数据枢纽下联数据采集器、上联高层数据枢纽或者监控台。数据的最长路经是:局房数据采集器-->县局数据枢纽-->市局数据枢纽-->省局数据枢纽-->监控台。则总共经历四次传送,则每次中转和处理的时间应该<2/4=500ms。
    目前.Net提供比较安全的远程处理机制和Web Service,我编写一个测试程序,发现在我配置比较高的机器上一次传送100条记录的数据包的处理时间平均在400ms,看来就比较危险了。
    以前我们的数据采集器连接的有智能设备;A/D单片机等,而上层的数据处理部分有跑在UNIX,所以稳妥地方式还是使用原生的socket保险些,但是这里就只能忽略了安全保证(考虑是在电信内网运行),当然传送时可以简单加密一下数据。
    下面是我定义的接口:
 1实战解析--项目的主要技术储备using System;
 2实战解析--项目的主要技术储备
 3实战解析--项目的主要技术储备namespace QPG.Net
 4}

IMonitorChannel---提供给观看者,只能收取数据,不能发送命令;
IClientChannel---主要用于监控台;
IServerChannel---主要用于数据枢纽,可以用来接收采集器的数据或者发布数据到数据订阅者

实现就很简单了,网上很多开源的Socket C#版。我就不贴了,有需要的可以邮件给我。

2--扩展技术
既然castle提供了那么强大的容器,那我就直接使用它得了。下图是传统的功能调用和基于数据队列处理的思路图,后者我已经在好几个大型项目中使用,比较容易维护和调试。
实战解析--项目的主要技术储备


以下是所有规则处理器的祖先类:
这里使用了castle的自动服务启动功能,所以容器创建后,内部的所有服务都会自动启动,并且每隔50ms对它负责的队列进行一次集中的扫荡处理。如果是多个处理器实例,那么处理的效果更佳。那也很简单,在配置文件里类似如下配置:
  <component >           
  </component>

但是实际上多个和一个处理效果没有区别,第二个总会扑空的,你看出来了吗?且听我下回分解吧。

alex 11-24
 

相关文章:

  • 2022-12-23
  • 2021-06-27
  • 2021-12-03
  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2021-07-09
猜你喜欢
  • 2021-10-12
  • 2022-01-08
  • 2021-09-14
  • 2022-01-16
  • 2022-01-11
  • 2021-05-23
  • 2021-12-05
相关资源
相似解决方案