Fix wording in "Advanced Components for More Rapid Development" section.
This commit is contained in:
parent
490fc249f8
commit
79d660ca91
@ -211,29 +211,28 @@
|
||||
<para>
|
||||
On top of the core components mentioned above, that already enable the
|
||||
implementation of all types of network applications, Netty provides a set
|
||||
of advanced features to accelerate the development pace even more.
|
||||
of advanced features to accelerate the page of development even more.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Codec framework</title>
|
||||
<para>
|
||||
As demonstrated in <xref linkend="start.pojo"/>, it is always a good
|
||||
idea to separate a protocol codec from a business logic. However, there
|
||||
idea to separate a protocol codec from business logic. However, there
|
||||
are some complications when implementing this idea from scratch. You
|
||||
have to deal with the fragmentation of messages. Some protocols are
|
||||
multi-layered (i.e. built on top of other lower level protocol). Some
|
||||
multi-layered (i.e. built on top of other lower level protocols). Some
|
||||
are too complicated to be implemented in a single state machine.
|
||||
</para>
|
||||
<para>
|
||||
Consequently, a good network application framework should provide an
|
||||
extensible, reusable, unit-testable, and multi-layered codec framework
|
||||
that generates maintainable user codec.
|
||||
that generates maintainable user codecs.
|
||||
</para>
|
||||
<para>
|
||||
Netty provides a number of basic and advanced codecs built on top of
|
||||
its core to address most issues you will encounter when you write a
|
||||
protocol codec regardless if it is simple or not, binary or text -
|
||||
simply whatever.
|
||||
Netty provides a number of basic and advanced codecs to address most
|
||||
issues you will encounter when you write a protocol codec regardless
|
||||
if it is simple or not, binary or text - simply whatever.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
@ -244,16 +243,16 @@
|
||||
You can't simply wrap a stream to encrypt or decrypt data but you have
|
||||
to use <classname>javax.net.ssl.SSLEngine</classname>.
|
||||
<classname>SSLEngine</classname> is a state machine which is as complex
|
||||
as SSL is. You have to manage all possible states such as cipher suite
|
||||
and encryption key negotiation (or re-negotiation), certificate
|
||||
exchange and validation. Moreover, <classname>SSLEngine</classname> is
|
||||
not even completely thread-safe unlike usual expectation.
|
||||
as SSL itself. You have to manage all possible states such as cipher
|
||||
suite and encryption key negotiation (or re-negotiation), certificate
|
||||
exchange, and validation. Moreover, <classname>SSLEngine</classname> is
|
||||
not even completely thread-safe, as one would expect.
|
||||
</para>
|
||||
<para>
|
||||
In Netty, &SslHandler; takes care of all the gory details and pitfalls
|
||||
of <classname>SSLEngine</classname>. All you need to do is to configure
|
||||
and insert the &SslHandler; to your &ChannelPipeline;. It also allows
|
||||
you to implement advanced features like
|
||||
the &SslHandler; and insert it into your &ChannelPipeline;. It also
|
||||
allows you to implement advanced features like
|
||||
<ulink url="http://en.wikipedia.org/wiki/Starttls">StartTLS</ulink>
|
||||
very easily.
|
||||
</para>
|
||||
@ -268,13 +267,13 @@
|
||||
</para>
|
||||
<para>
|
||||
Netty's HTTP support is very different from the existing HTTP libraries.
|
||||
It gives you complete control over how HTTP messages are exchanged in a
|
||||
low level. Because it is basically the combination of HTTP codec and
|
||||
HTTP message classes, there is no restriction such as enforced thread
|
||||
It gives you complete control over how HTTP messages are exchanged at a
|
||||
low level. Because it is basically the combination of an HTTP codec and
|
||||
HTTP message classes, there is no restriction such as an enforced thread
|
||||
model. That is, you can write your own HTTP client or server that works
|
||||
exactly the way you want. You have full control over thread model,
|
||||
connection life cycle, chunked encoding, and as much as what HTTP
|
||||
specification allows you to do.
|
||||
exactly the way you want. You have full control over everything that's
|
||||
in the HTTP specification, including the thread model, connection life
|
||||
cycle, and chunked encoding.
|
||||
</para>
|
||||
<para>
|
||||
Thanks to its highly customizable nature, you can write a very efficient
|
||||
@ -290,18 +289,18 @@
|
||||
<listitem>
|
||||
<para>
|
||||
Media streaming server that needs to keep the connection open
|
||||
until the whole media is streamed (e.g. 2 hours of movie)
|
||||
until the whole media is streamed (e.g. 2 hours of video)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
File server that allows the upload of large files without memory
|
||||
pressure (e.g. uploading 1GB per request)
|
||||
File server that allows the uploading of large files without
|
||||
memory pressure (e.g. uploading 1GB per request)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Scalable mash-up client that connects to tens of thousand 3rd
|
||||
Scalable mash-up client that connects to tens of thousands of 3rd
|
||||
party web services asynchronously
|
||||
</para>
|
||||
</listitem>
|
||||
@ -314,10 +313,11 @@
|
||||
<para>
|
||||
<ulink url="http://code.google.com/apis/protocolbuffers/docs/overview.html">Google Protocol Buffers</ulink>
|
||||
are an ideal solution for the rapid implementation of a highly efficient
|
||||
binary protocol that evolves over time. With &ProtobufEncoder; and
|
||||
&ProtobufDecoder;, you can turn the message classes generated by Google
|
||||
Protocol Buffers Compiler (protoc) into Netty codec. Please take a look
|
||||
into the <ulink url="&XRef;example/localtime/package-summary.html">'LocalTime' example</ulink>
|
||||
binary protocols that evolve over time. With &ProtobufEncoder; and
|
||||
&ProtobufDecoder;, you can turn the message classes generated by the
|
||||
Google Protocol Buffers Compiler (protoc) into Netty codec. Please take
|
||||
a look into the
|
||||
<ulink url="&XRef;example/localtime/package-summary.html">'LocalTime' example</ulink>
|
||||
that shows how easily you can create a high-performing binary protocol
|
||||
client and server from the
|
||||
<ulink url="http://anonsvn.jboss.org/repos/netty/trunk/src/main/java/org/jboss/netty/example/localtime/LocalTimeProtocol.proto">sample protocol definition</ulink>.
|
||||
|
Loading…
Reference in New Issue
Block a user