在上篇了展望了本项目的一个框架,我们也知道:如果这个项目的处理时间不能达到要求的话,则花哨的功能也不能逃过失败的定论。
而通讯的关键在于数据处理枢纽的层数和处理中转的时间,数据枢纽下联数据采集器、上联高层数据枢纽或者监控台。数据的最长路经是:局房数据采集器-->县局数据枢纽-->市局数据枢纽-->省局数据枢纽-->监控台。则总共经历四次传送,则每次中转和处理的时间应该<2/4=500ms。
目前.Net提供比较安全的远程处理机制和Web Service,我编写一个测试程序,发现在我配置比较高的机器上一次传送100条记录的数据包的处理时间平均在400ms,看来就比较危险了。
以前我们的数据采集器连接的有智能设备;A/D单片机等,而上层的数据处理部分有跑在UNIX,所以稳妥地方式还是使用原生的socket保险些,但是这里就只能忽略了安全保证(考虑是在电信内网运行),当然传送时可以简单加密一下数据。
下面是我定义的接口:
1
using System;
2
3
namespace QPG.Net
4
}
2
3
4
IMonitorChannel---提供给观看者,只能收取数据,不能发送命令;
IClientChannel---主要用于监控台;
IServerChannel---主要用于数据枢纽,可以用来接收采集器的数据或者发布数据到数据订阅者
实现就很简单了,网上很多开源的Socket C#版。我就不贴了,有需要的可以邮件给我。
2--扩展技术
既然castle提供了那么强大的容器,那我就直接使用它得了。下图是传统的功能调用和基于数据队列处理的思路图,后者我已经在好几个大型项目中使用,比较容易维护和调试。
以下是所有规则处理器的祖先类:
<component >
</component>
但是实际上多个和一个处理效果没有区别,第二个总会扑空的,你看出来了吗?且听我下回分解吧。
alex 11-24