`
fansfirst2008
  • 浏览: 95682 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

品读netty 装配和运行过程

阅读更多

  初次学习与研究NETTY,有如不妥,恳求批评与改正

准备工作

  在集成了MAVEN的ECLIPSE中,导入下载好的NETTY自带的项目!现在研究如下代买片段

 // Configure the client.
        ClientBootstrap bootstrap = new ClientBootstrap(
                new NioClientSocketChannelFactory(
                        Executors.newCachedThreadPool(),
                        Executors.newCachedThreadPool()));

        // Set up the default event pipeline.
        DiscardClientHandler handler = new DiscardClientHandler(firstMessageSize);
        bootstrap.getPipeline().addLast("handler", handler);

        // Start the connection attempt.
        ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));

        // Wait until the connection is closed or the connection attempt fails.
        future.getChannel().getCloseFuture().awaitUninterruptibly();
        
        

        // Shut down thread pools to exit.
        bootstrap.releaseExternalResources();

 由此可以看出NETTY代码优良的注释,这点让我尤其喜欢,且值得学习和借签!

信手捏来

 毫无疑问,BOOTSTRAP是我们能够亲手“摸到”的机器了。但是这个机器,得装上一个核心CHANNEL的制造机器,它才能组装好,这个就一目了然了!

 运行之前,还有一个关键组件得自己造,那就是HANDLER,把它添加到正确位置(PIPELINE),整个组装完成了。现在按下CONNECT按钮,机器就轰轰运行了,只要站在旁边盯着显示屏FUTURE就可以了!

至此我们能够把看得见的都看了一遍!

关键概念

CHANNEL

  参考文档,这里只是个人理解。首先CHANNEL就是数据通信通道,它有状态,可以读写,是这里面的最核心概念!那么现在又疑问了,在这个机器中,是什么时候建立的呢?是在哪儿建立的呢?怎么建立的呢?

PIPELINE

 本质上他就是HANDLER的容器与管理者,如何加入自己的HANDLER?如何管理?弄清楚得参考文档了,这里就上面出现的稍微分析下!

HANDLER

 熟悉观察者模式,就很容易理解它了!文档上指出它就是高级的INTERCEPTOR,FILTER!这个是我们干涉这部机器的主要关键点!这里不详谈

FUTURE

它就是操作结果显示器,我们也可以添加LISTNER!但是这里我有个疑问

那就是future.getChannel().getCloseFuture()得到的FUTURE为何与上面的那个不同?

由表及里

至于它们之间的静态结构,这个请参考文档!那么它们是如何从组装到运行,一步一步生成出来,然后发挥作用的呢?

CHANNEL是个重量级东东,和SESSION,CONNECTION类似的,所以我们得为制造它创好环境,这个就是它的工厂了!我们把CHANNEL工厂嵌入进应用机器里面,这就是第一步了!那么机器建造好了之后,让我们看下它里面有上面东东

在附件中,暂不晓得如何插入到这里

由此可以看到,这个时候PIPELINE,以及PIPELINE的工厂,和CHANNEL工厂再加上些参数OPTIONS,都准备好了!

下一步就是把我们的处理器HANDLER装到PIPELINE容器中了,如果细看源代码,发现这个PIPELINE并非运行时PIPELINE,这个就是PIPELINE工厂存在的原因,它们只是名字相同,实际上是不是同一对象的!

最后一步就是连接了,连接的时候,需要所有的东西都运转起来!

CHANNEL 就是这个时候造的。

最后感言

上面好多问题都没有解释,我就草草这么结束了!有些问题是我自己没有弄明白的!

NETTY这部机器的复杂之处和精妙之处就在于它的,一抽象统一,二异步,事件模型!

这就给我这些初学者添加了理解的复杂度!但是一旦深入其中,其代码是很优良的,结构更是巧夺天工,精彩绝伦!

 

 

  • 大小: 3.2 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics