Java通讯框架,有时也被称为网络服务器,其实就是封装IO操作,并提供更高级的API接口。目前比较流行的框架就是:MINA、Cindy、QuickServer等。前段时间为了缩短开发时间,也在项目中加入了这些框架,从最开始使用QuickServer 1.4.7出现的报文接收不全异常;到用Cindy 2.4.4作为临时过渡,到最后确定使用MINA 1.0.1,也经历了一个艰辛而痛苦的时期。下面是整理的目前网上关于Java通讯框架比较好的文章,仅供大家参考。
循证架构之QuickServer篇
作者:LeonW
“循证架构”一词虽是新创,但也可算是新瓶装老酒了。Rod用之来循证Spring等轻量级框架之优势、EJB之劣势。
前一段做了个GPRS服务器的系统,也尝试了把“循证架构”的循证思路。竟然要循证,总得先列举下需求:
首先,服务器必须与GPRS发送设备进行通讯, 数据的接收、发送、检查链路状态等基本功能,还需要具体分析包文,组包等业务功能的处理。其次,工期很紧,风险分析中列为第一大风险。再者,服务器的稳定性、可靠性也是一大重点。最后,需要提供对服务器管理的接口。
手头也有些较为成熟的网络通讯的基础代码,拿来复用解决1,3问题也非难事,倒是4需要进行开发。不过早就听闻 Mina、Cindy等大名(下载Mina代码过程中反倒发现本文的主角QuickServer),于是就对这几个框架循证了一遍,寻找合适开发的网络通 讯框架。
从功能上看,Mina、Cindy、QuickServer实现的功能也基本差不多,都是封装基本的网络IO操作,暴露事件接口供二次开发。
Mina需要继承IOHandlerAdapter类或ProtocolHandlerAdapter类,从该类中继承各事件方法实现业务操作。 Cindy也需要继承SessionHandlerAdapter具体类,跟Mina类似。QuickServer则需要实现接口 ClientEventHandler实现业务功能。这些类和接口提供的事件大致雷同:Connected,Closed,Received,Sent, Timeout等等。
Mina和Cindy使用了nio,而QuickServer则同时支持blockingIO和nio,需要进行配置选择(一个遗憾就 是QuickServer的nio模式下竟然不支持Timeout事件)。Mina实现中有一个很好的设计就是剥离IO层和Protocol层,作者的用 意是想在IO层实现对IO的处理,在Protocol实现对业务的处理,很好的一个分层思想。QuickServer则是一个大杂烩,把各种IO处理封装 在 BasicClientHandler中,里面还混杂了blockingIO、NIO等操作。
额外功能上,Mina和Cindy都可以 支持一个进程中开启多个服务端口进行不同处理,而QuickServer则不行。不过QuickServer提供了另外一个非常实用的功能-管理服务端 口,通过其设定的一些指令查询服务器的状态、控制服务器等。此功能成为最后选择的最大优势。其他例如IP过滤的功能在QuickServer中只需要进行 配置即可。
这次没对这三个服务器在性能上进行比较。以后再找机会完成:-)
从代码质量上来看,无疑Mina和Cindy占了 上风,QuickServer的分层实在不咋样。Mina和Cindy有不少相似的地方。而QuickServer的目的与其有所不同,集成许多方便的功 能,甚至还加入数据库连接池的功能(感觉作者有点无聊了)。最后的循证其实还是选了个最实用的工具,的确减少不少的工作量。此后还遇到一些二进制的问题就不表了。
分享到:
相关推荐
java mina 通讯框架
JAVA多服务器通讯框架-聊天功能演示程序 V0.1 alpha 2012 瞿正峰版权所有,保留所有权利 中国 杭州 一、概述 JAVA多服务器通讯框架是基于NIO开发的Socket通讯框架,实现了客户端和服务器,服务器与服务器...
这个Java框架可能包含了以下功能: - 对TCP和UDP通信的封装,简化了客户端和服务器的创建和数据交换过程。 - 回调接口设计,使得开发者可以自定义数据接收和发送后的处理逻辑。 - 可能包含异常处理和连接管理机制,...
JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。 JGroups的可靠性体现在: 1,对所有接收者的消息的无丢失传输...
其中,Mina作为一个强大的通讯框架,深受Java开发者们的喜爱。本资源包专注于TCP通讯框架,特别是Mina框架的使用,旨在帮助开发者理解和应用这个强大的工具。 Mina,全称为“Apache MINA (Multipurpose ...
JAVA源码Java多播通讯框架JGroups
JAVA源码WebSocket通讯框架jWebSocket
java资源Java多播通讯框架 JGroups提取方式是百度网盘分享地址
### Java NIO通信框架在电信领域的实践 #### 华为电信软件技术架构演进 **1.1 电信软件概述** 电信软件是一个宽泛的概念,根据功能和应用场景的不同大致可以分为两大类:系统软件和业务应用软件。系统软件通常...
java源码:Java多播通讯框架 JGroups.zip
在Java中,实现WebSocket通信的一个常见框架是jWebSocket,它是一个开源项目,为开发者提供了简单易用的API来构建WebSocket应用。 jWebSocket的主要特点和功能包括: 1. **轻量级**: jWebSocket框架设计简洁,易于...
Java多播通讯框架JGroups是Java开发者用于构建高可用、高性能和可伸缩的集群通信系统的重要工具。它提供了一套全面的协议栈,能够处理网络中的节点发现、消息传递、故障检测和恢复等问题,从而使得开发分布式应用变...
Java多播通讯框架 JGroups.7z
Flex作为Adobe推出的基于ActionScript的开放源代码框架,主要用于构建交互性强的用户界面,而Java则是一种广泛使用的后端开发语言,提供了强大的服务器端功能。二者结合可以实现前端与后端的有效数据交换,为用户...
Apache MINA 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。Apache MINA 可以作为开发网络应用...
即时通讯(Instant Messaging,简称IM)是现代移动设备和计算机通信的重要组成部分,尤其在安卓平台上,构建一个高效、稳定的即时通讯框架对于开发社交应用或企业内部通讯系统至关重要。本资源提供了一个通过PC...
本项目是一套基于java Swing 框架使用socket技术开发的即时通讯系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 ...
Java SpringBoot 整合Mina框架,涉及到的核心技术主要包括Java NIO(非阻塞I/O)、Mina框架以及SpringBoot的集成应用。本教程旨在帮助开发者深入理解和掌握这些技术,并提供了一个可直接使用的基础平台框架。 Java ...
总的来说,`MainFrame.java`程序提供了一个基础框架,用于通过Java进行串口通讯,与物联网设备中的DTU进行交互,处理二进制和十六进制数据,并自定义通讯协议。理解并熟练掌握这些知识点对于开发和维护物联网应用至...
在本项目"java通讯项目"中,我们主要探讨的是如何使用Java编程语言实现一个即时通讯应用,这通常涉及到网络编程、多线程、数据传输以及用户界面等多个关键领域。在这个聊天室程序中,作者马健威尝试构建了一个基础的...