论文部分内容阅读
摘要:文章讨论了一个当前正在使用的新的电信公司动力与环境集中监控系统的原理和架构,并且详细讨论了在新的软件平台下为该监控系统设计以及实现一个高性能的TCP/IP通信库的方法和过程,使用该通信库可以非常容易给监控系统软件内部模块或与其他系统互联提供高性能的Sockets服务端和客户端功能。
关键词: Sockets; TCP/IP;.C#.NET; 通信; 电信; 动力监控;
中图分类号:TP319文献标识码:A文章编号:1009-3044(2009)22-pppp-0c
众所周知,电信公司的主要业务是提供7X24小时的不间断通信、数据服务,这些服务都需要依靠各种交换、路由、网桥和防火墙等设备完成,这些设备对于电以及动力设备的依赖尤胜于其他生产企业,而且这些通信设备运行的环境都有比较严格的要求,使用大量的人力进行现场维护,不但效率低下,也不能保证维护质量和维护水平,而动力及环境集中监控系统使得这一现状得到了彻底的改观,观察动力设备运行情况、记录设备及环境参数这些工作完全可以依靠监控系统来完成。广泛应用的动力及环境监控系统实现了对通信局站内各种动力设备、空调设备及环境的实时监控、维护和综合管理,保障了电信系统的可靠运行,降低了维护成本,并逐步实现了通信动力设备由分散维护向集中监控、维护和管理。
下面介绍的电信动力与环境集中监控系统使用了模块化和面向对象的设计,并且重点讨论了一个专门设计的TCP/IP通信库。
4 通信库设计实现
本系统的大部分软件都使用微软的新开发平台.NET进行开发,通信库也使用.NET平台下的C#语言进行设计和实现,可以供.NET平台支持的所有语言调用。
4.1 关键接口设计
基于.NET开发平台,在通信库中设计一个向外的连接类OutgoingConnection供客户端程序连接服务器程序使用。当客户端请求一个向服务器程序的连接时,服务器程序创建一个向内的连接类IncomingConnection的实例负责与客户端进行通信。OutgoingConnection类和IncomingConnection类都继承自同一个基础通信类ConnectionBase类,它提供了向内和向外通信相关的公共方法(如发送、接收数据等),都由接口ICommunicationsBase进行声明,这两个连接类共同实现的接口包含如下元素:一个Socket实例(发送和接收数据的管道);一个可以有管道接收到的新的数据触发的事件;一个可以通过管道与远程主机进行数据传输的方法;一个可以关闭Socket的方法。
客户端使用的OutgoingConnection类需要另外实现一些元素:一个连接方法(包含节点地址、端口参数)用来初始化与服务器的连接;三个线程:分别负责接收数据、发送数据和从数据流中提取数据。服务端使用的IncomingConnection类需要另外实现一些元素:一个类实例隶属的通信服务器指针实例;一个用来标识自己的ID编号;一个指向要发送的信息的接口IIncomingMessageHandler的实现。
几个关键的接口之间的关系如下,ICommunicationsServer包含了实现了接口ICommincomingConnection的类的多个实例,并且动态建立。
4.2 信息传输设计
动力与环境监控系统TCP/IP类库的核心功能就是在设备和系统之间、系统内部、系统之间高效、正确地传输实时信息,实时信息可以是一段打包的实时变化的字节流或者字符的集合,类库负责的内容就是保证打包发送信息,并且负责接收、解包信息,并保证发送的信息和接收到的信息完全一致。
通信类库提高性能的第一步是合理的利用多线程技术,监听、接收、发送都使用单独的线程,以有效的利用CPU时间并且不会互相影响和造成不合理的等待。
类库设计了一个线程安全的类SendReceiveBuffer作为发送的信息缓冲区,缓冲区中的字节等待被发送或被处理,使用线程安全的队列保存缓冲区数据。提供发送性能的关键在于减少少量字节的多次发送,将需要发送的多个少量字节预先保存在队列缓存中,发送时可以合并成单个的TCP/IP包进行发送以提供效率。
通信库中另一个提高通信性能的方法是使用非阻塞模式,因为非阻塞模式在发送和接收是不需要等待,可以立即进行下一次接收和发送,而阻塞模式将使得当前线程进入等待直到发送或接收完成。尤其在通信库的服务器端性能的提高将非常明显,因为在有大量的数据等待发送到大量的客户端时,非阻塞模式可以立即进行下一个客户端的发送和接收。
5 结论
文章介绍的电信动力与环境集中监控系统已经在电信公司实际运行,获得了良好的效果。系统采用了新的软件平台,并且使用了专门设计的高性能TCP/IP通信库,经过测试,可以支持100个以上的监控客户端没有明确的通信滞后,表现了良好的性能,也有一定的通用性。
参考文献:
[1] Christian Holm, Mike Kruger等. C#软件项目全程剖析[M]. 北京: 清华大学出版社, 2003: 13-36.
[2] 严蔚敏, 吴伟民. 数据结构:[M].北京:北京: 清华大学出版社,1997.
[3] Ivar Jacobson, Grady Booch 等.统一软件开发过程 [M].北京:机械工业出版社,2002.
[4] Erich Gamma, Richard Helm.设计模式 [M].北京:机械工业出版社,2000:54-91.
[5] 刘险峰,倪涉权. 蓄电池容量在线监测研究[J].通信电源技术, 2009(5): 51-54.
[6] 王彦桂,郁 滨等. 配电自动化系统中应用DNP3.0协议进行数据通信[J].计算机自动测量与控制, 2001(T):99-101.
[7] 郝燕玲,赵玉新等. 基于事件交互树模型的GUI测试技术[J].应用科技, 2009(5):61-65.
关键词: Sockets; TCP/IP;.C#.NET; 通信; 电信; 动力监控;
中图分类号:TP319文献标识码:A文章编号:1009-3044(2009)22-pppp-0c
众所周知,电信公司的主要业务是提供7X24小时的不间断通信、数据服务,这些服务都需要依靠各种交换、路由、网桥和防火墙等设备完成,这些设备对于电以及动力设备的依赖尤胜于其他生产企业,而且这些通信设备运行的环境都有比较严格的要求,使用大量的人力进行现场维护,不但效率低下,也不能保证维护质量和维护水平,而动力及环境集中监控系统使得这一现状得到了彻底的改观,观察动力设备运行情况、记录设备及环境参数这些工作完全可以依靠监控系统来完成。广泛应用的动力及环境监控系统实现了对通信局站内各种动力设备、空调设备及环境的实时监控、维护和综合管理,保障了电信系统的可靠运行,降低了维护成本,并逐步实现了通信动力设备由分散维护向集中监控、维护和管理。
下面介绍的电信动力与环境集中监控系统使用了模块化和面向对象的设计,并且重点讨论了一个专门设计的TCP/IP通信库。
4 通信库设计实现
本系统的大部分软件都使用微软的新开发平台.NET进行开发,通信库也使用.NET平台下的C#语言进行设计和实现,可以供.NET平台支持的所有语言调用。
4.1 关键接口设计
基于.NET开发平台,在通信库中设计一个向外的连接类OutgoingConnection供客户端程序连接服务器程序使用。当客户端请求一个向服务器程序的连接时,服务器程序创建一个向内的连接类IncomingConnection的实例负责与客户端进行通信。OutgoingConnection类和IncomingConnection类都继承自同一个基础通信类ConnectionBase类,它提供了向内和向外通信相关的公共方法(如发送、接收数据等),都由接口ICommunicationsBase进行声明,这两个连接类共同实现的接口包含如下元素:一个Socket实例(发送和接收数据的管道);一个可以有管道接收到的新的数据触发的事件;一个可以通过管道与远程主机进行数据传输的方法;一个可以关闭Socket的方法。
客户端使用的OutgoingConnection类需要另外实现一些元素:一个连接方法(包含节点地址、端口参数)用来初始化与服务器的连接;三个线程:分别负责接收数据、发送数据和从数据流中提取数据。服务端使用的IncomingConnection类需要另外实现一些元素:一个类实例隶属的通信服务器指针实例;一个用来标识自己的ID编号;一个指向要发送的信息的接口IIncomingMessageHandler的实现。
几个关键的接口之间的关系如下,ICommunicationsServer包含了实现了接口ICommincomingConnection的类的多个实例,并且动态建立。
4.2 信息传输设计
动力与环境监控系统TCP/IP类库的核心功能就是在设备和系统之间、系统内部、系统之间高效、正确地传输实时信息,实时信息可以是一段打包的实时变化的字节流或者字符的集合,类库负责的内容就是保证打包发送信息,并且负责接收、解包信息,并保证发送的信息和接收到的信息完全一致。
通信类库提高性能的第一步是合理的利用多线程技术,监听、接收、发送都使用单独的线程,以有效的利用CPU时间并且不会互相影响和造成不合理的等待。
类库设计了一个线程安全的类SendReceiveBuffer作为发送的信息缓冲区,缓冲区中的字节等待被发送或被处理,使用线程安全的队列保存缓冲区数据。提供发送性能的关键在于减少少量字节的多次发送,将需要发送的多个少量字节预先保存在队列缓存中,发送时可以合并成单个的TCP/IP包进行发送以提供效率。
通信库中另一个提高通信性能的方法是使用非阻塞模式,因为非阻塞模式在发送和接收是不需要等待,可以立即进行下一次接收和发送,而阻塞模式将使得当前线程进入等待直到发送或接收完成。尤其在通信库的服务器端性能的提高将非常明显,因为在有大量的数据等待发送到大量的客户端时,非阻塞模式可以立即进行下一个客户端的发送和接收。
5 结论
文章介绍的电信动力与环境集中监控系统已经在电信公司实际运行,获得了良好的效果。系统采用了新的软件平台,并且使用了专门设计的高性能TCP/IP通信库,经过测试,可以支持100个以上的监控客户端没有明确的通信滞后,表现了良好的性能,也有一定的通用性。
参考文献:
[1] Christian Holm, Mike Kruger等. C#软件项目全程剖析[M]. 北京: 清华大学出版社, 2003: 13-36.
[2] 严蔚敏, 吴伟民. 数据结构:[M].北京:北京: 清华大学出版社,1997.
[3] Ivar Jacobson, Grady Booch 等.统一软件开发过程 [M].北京:机械工业出版社,2002.
[4] Erich Gamma, Richard Helm.设计模式 [M].北京:机械工业出版社,2000:54-91.
[5] 刘险峰,倪涉权. 蓄电池容量在线监测研究[J].通信电源技术, 2009(5): 51-54.
[6] 王彦桂,郁 滨等. 配电自动化系统中应用DNP3.0协议进行数据通信[J].计算机自动测量与控制, 2001(T):99-101.
[7] 郝燕玲,赵玉新等. 基于事件交互树模型的GUI测试技术[J].应用科技, 2009(5):61-65.