這個框架的優勢: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