netty那点事(1)概述-java开发java经验技巧

netty那点事(1)概述-java开发java经验技巧

ID:30787988

大小:127.31 KB

页数:5页

时间:2019-01-03

netty那点事(1)概述-java开发java经验技巧_第1页
netty那点事(1)概述-java开发java经验技巧_第2页
netty那点事(1)概述-java开发java经验技巧_第3页
netty那点事(1)概述-java开发java经验技巧_第4页
netty那点事(1)概述-java开发java经验技巧_第5页
资源描述:

《netty那点事(1)概述-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Netty那点事(1)概述-编程开发技术Netty那点事(1)概述原文出处:黄亿华目录•起:Netty是什么•承:体验Netty•转:Netty背后的事件驱动机制•合:开启Netty源码Z门•Netty那点事系列文章索引Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io。关于Mina[1有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究-下Netty的源码,顺便分享出来了。Netty目前有两个分支

2、:4,和3宀。4.0分支重写了很多东西,并对项目进行了分包,规模比较庞大,入手会困难一些,而3.x版本则已经被广泛使用。本系列文章针对netty3.7.0final。3・x和4・0的区别可以参考这篇文章:http://www.oschina.net/translate/netty-4-0-new-and-noteworthy?printo起:Netty是什么大概用Netty的,无论新手述是老手,都知道它是一个“网络通讯框架”。所谓框架,基本上都是一个作用:基于底层API,提供更便捷的编程模型。那么”通讯框架”到底做了什么事情呢?回答这个问题并不太容易,我们不妨

3、反过来看看,不使用netty,直接基于NTO编写网络程序,你需要做什么(以Server端TCP连接为例,这里我们使用Reactor模型):1.监听端口,建立Socket连接2.建立线程,处理内容1.??1.读取Socket内容,并对协议进行解析2.??2.进行逻辑处理3.??3.回写响应内容4.??4.如果是多次交互的应用(SMTP、FTP),则需要保持连接多进行几次交互3.关闭连接建立线程是一个比较耗时的操作,同时维护线程本身也有一些开销,所以我们会需要多线程机制,幸好JDKE1经冇很方便的多线程框架了,这里我们不需耍花很多心思。此外,因为TCP连接的特性,

4、我们还耍使用连接池来进行管理:1.建立TCP连接是比较耗时的操作,对于频繁的通讯,保持连接效果更好2.对于并发请求,可能需要建立多个连接3.维护多个连接后,每次通讯,需要选择某一可用连接4.连接超时和关闭机制想想就觉得很复杂了!实际上,基于NIO直接实现这部分东西,即使是老手也容易出现错误,而使用Netty之后,你只需要关注逻辑处理部分就可以了。承:体验Netty这里我们引用Netty的example包里的一个例子,一个简单的EchoServer,它接受客户端输入,并将输入原样返回。其主要代码如下:publicvoidrun(){//Configurethes

5、erver.ServerBootstrapbootstrap=newServerBootstrap(newNioServerSocketChannelFactory(Executors,newCachedThreadPool(),Executors.newCachedThreadPool()));//Setupthepipelinefactory.bootstrap.setPipelineFactory(newChannelPipelineFactory(){publicChannelPipelinegetPipeline()throwsException{r

6、eturnCharmels.pipeline(newEchoServerHandler());}});//Bindandstarttoacceptincomingconnections.bootstrap,bind(newTnetSocketAddress(port));}这里EchoServerHandler是其业务逻辑的实现者,大致代码如下:publicclassEchoServerHandlerextendsSimpleChannelUpstreainHandler{©OverridepublicvoidmcssagcRcccivcd(ChannelHa

7、ndlerContextctx,MessageEvente){//Sendbackthereceivedmessagetotheremotepeer,e.getChannel().write(e.getMessage());}还是挺简单的,不是吗?转:Netty背后的事件驱动机制完成了以上一段代码,我们算是与Netty进行了第一次亲密接触。如果想深入学习呢?首先推荐Netty的官方UserGuide:http://nctty.io/3.7/guidc/o其次,阅读源码是了解一个开源工具非常好的手段,但是Java世界的框架大多追求大而全,功能完备,如果逐个阅读,

8、难免迷失方向,Netty也并不例外。相

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。