这个框架的优点:
– 异步
– 无阻塞
– 事件驱动
– 支持TCP, UDP, APR, 串口…
– 通过 过滤器(Filters)实现扩展性
– 同时提供协议框架
开发部标809协议从文档中一眼就可以看出,协议设计者把面向对象的思想带入到了协议当中,造成了协议的不容易阅读和不容易理解,但在协议本身的开发和实现非常适合用Mina框架。
I/O Filter Chain - 这是一个由多个过滤器组成的过滤器链,在这个环节将字节数据转换到特定的数据结构中(Filters/Transforms bytes into desired Data Structures and vice-versa)
I/O Handler - 实际的业务逻辑部分,提供最终的OnMessageRecved事件,为外部所调用。
所以我们设计的时候,
1.首先要设计一个协议抽象类,他具有每一个协议命令的所有共性的属性。
2.可以在主链路发送的时候,设计一个编码过滤器,在从链路发送的时候,设计一个解码过滤器,分别对抽象类进行字节数组的转换。这样就可以了解决几十个协议的辛苦的解析和封装带来的繁杂工作量了。
1
2
3
4
5
6
7
8
9
10
|
IoAcceptor acceptor =
new
NioSocketAcceptor();<br>
//记录发送和接收的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.这样整个结构就非常清晰了, 由于过滤器是透明的,所以从外部接口来看是对类的发送和接收了,避免了重复编写底层转换代码。
框架就是有这样的魔力,我们可以站在别人的肩膀上,快速的达到我们的目的。而不是自己写半天的socket代码,实在是太傻了。
提供809转发生产系统源码(已过检),收费900元。需要JT 809源码的(C++版本、C#、Java版本的都有)
可以联系我:speed.zheng@gmail.com