这个框架的优势:java
– 异步
– 无阻塞
– 事件驱动
– 支持TCP, UDP, APR, 串口…
– 经过 过滤器(Filters)实现扩展性
– 同时提供协议框架数组
Netty也是一个高性能的框架,和Mina不分伯仲,不过对于809服务器,就两个连接,一个主链接,一个从链接,不像809网关服务器,接入几万台终端。因此在809系统中,用什么样的框架,都不重要。重要的是在809协议解析和应用层面上。服务器
开发部标809协议从文档中一眼就能够看出,协议设计者把面向对象的思想带入到了协议当中,形成了协议的不容易阅读和不容易理解,但在协议自己的开发和实现很是适合用Mina框架。网络
809协议的设计者,考虑的东西太多了,形成了协议的复杂。同时转发服务器自己扮演者承上启下的角色,须要和808服务及政府运管平台进行交互,这样整个809的开发难度要远大于808服务,基于流程测试的难度就更大。数据结构
I/O Filter Chain - 这是一个由多个过滤器组成的过滤器链,在这个环节将字节数据转换到特定的数据结构中(Filters/Transforms bytes into desired Data Structures and vice-versa)
I/O Handler - 实际的业务逻辑部分,提供最终的OnMessageRecved事件,为外部所调用。框架
因此咱们设计的时候,异步
1.首先要设计一个协议抽象类,他具备每个协议命令的全部共性的属性。socket
2.能够在主链路发送的时候,设计一个编码过滤器,在从链路发送的时候,设计一个解码过滤器,分别对抽象类进行字节数组的转换。这样就能够了解决几十个协议的辛苦的解析和封装带来的繁杂工做量了。性能
IoAcceptor acceptor = new NioSocketAcceptor();
//记录发送和接收的809协议的原始16进制报文 acceptor.getFilterChain().addLast( "logger", new LoggingFilter() ); //JT/T 809协议编码器 acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new JT809MessageCodecFactory( Charset.forName( "GBK" )))); //JT?T 协议处理类 acceptor.setHandler( new JT809MessageHandler() ); acceptor.getSessionConfig().setReadBufferSize( 2048 ); acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 ); acceptor.bind(new InetSocketAddress(PORT));
3.这样整个结构就很是清晰了, 因为过滤器是透明的,因此从外部接口来看是对类的发送和接收了,避免了重复编写底层转换代码。测试
4.剩下就是更加复杂的应用层面的工做了,须要设计和808服务交互的接口,在获得运管的请求的时候,可以调用808的数据,转发给运管,同时接收到运管的数据后,再转发给808. 每一个协议命令不只要逐一实现。还要考虑入库和转发给808服务。
提供809转发生产系统源码(已过检),同时包含上下级平台,能够互相模拟测试,也能够用下级平台发送数据,用上级平台来接收数据,收费1500元。须要JT 809源码的(C#、Java版本的都有, 可选其一)
能够联系我:2379423771@qq.com