You are on page 1of 27

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC
Đề tài: Nghiên cứu về Netty Framework

Giảng viên hướng dẫn:  ThS Nguyễn Trác Thức Sinh viên thực hiện: 1. Võ Xuân Ngọc 10520202. 2. Nguyễn Đình Hòa 10520096. 3. Đào Xuân Hiển 10520212.

TP. Hồ Chí Minh, tháng 12 năm 2012

1

MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU SƠ LƯỢC VỀ NETTY FRAMEWORK .. 1 1. LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN NETTY FRAMEWORK ....................................................................................................... 1 1.1. 1.2. 2. Netty framework là gì? .................................................................. 1 Lịch sử phát triển ........................................................................... 1

SO SÁNH NETTY VỚI CÁC FRAMEWORK KHÁC ................... 2

CHƯƠNG 2. KIẾN TRÚC CỦA NETTY FRAMWORK ...................... 3 1. 2. 3. DỊCH VỤ VẬN CHUYỂN (TRANSPORT SERVICE) ................... 3 HỖ TRỢ GIAO THỨC (PROTOCOL SUPPORT) ......................... 3 LÕI (CORE) ......................................................................................... 4

CHƯƠNG 3. CÁC API TRONG NETTY FRAMEWORK ................... 5 1. 2. 3. 4. 5. LOW-LEVEL DATA REPRESENTATION..................................... 5 CENTRAL INTERFACE FOR ALL I/O OPERATIONS............... 5 CLIENT & SERVER BOOTSTRAPPING UTILITIES.................. 9 REUSABLE I/O EVENT INTERCEPTORS .................................. 10 MISCELLANEOUS ........................................................................... 18

CHƯƠNG 4. CÁC KHÁI NIỆM CĂN BẢN.......................................... 20 CHƯƠNG 5. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG VỚI NETBEAN 21 CHƯƠNG 6. DEMO VÀ HƯỚNG DẪN CHI TIẾT DEMO ............... 25 1

dễ vận hành và bảo trì. Có nghĩ rằng. Lịch sử phát triển Netty framework được phát triển bởi cộng đồng Netty (Netty Project Community). hỗ trợ cho WebSockets. GIỚI THIỆU SƠ LƯỢC VỀ NETTY FRAMEWORK 1.0.cũng như giao thức SPDY.13 và đang alpha phiên bản 5.1.2.2.CHƯƠNG 1. Vào tháng 7 năm 2013. phiên bản netty 2.0. phiên bản 3.1.0 chính thức ra mắt. tích hợp được với Google Protocol Buffers. hỗ trợ 2 chuẩn bả mật SSL/TLS. phiên bản 4. 1. “Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients”.0 . Vào tháng 11 năm 2011. nó dành cho việc phát triển nhanh các giao thức mạng client-server có hiệu năng cao. ví dụ như các giao thức mạng client-server. LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN NETTY FRAMEWORK 1.7 được ra mắt.0 được ra mắt.0. Vào tháng 6 năm 2004. Bên cạnh việc là một “asynchronous framework” dành cho việc phát triển các ứng dụng mạng. Hiện tại phiên bản cuối cùng là 4. nó cũng mang đến khả năng chạy bên trong một “servlet container” (web container). netty là tên một bộ khung (framework) không đồng bộ dành cho các chương trình mạng hướng sự kiện. netty đòng thời cũng được xây dựng và mang trong mình việc hỗ trợ chuẩn giao thức mạng HTTP. 1 . Netty framework là gì? Netty là một NIO ( Non-blocking Input Output) framework dành cho việc phát triển hệ thống client-server trong lập trình các chương tình mạng bằng ngôn ngữ Java. Netty được sử dụng để lập trình các socket server đơn giản như UDP và TCP.

Netty có chu trình phát triển nhanh hơn . Mina được thiết kế ở mức độ cao hơn nhưng Netty có được hầu hết các tính năng có sẵn của Mina và có tốc độ nhanh hơn. về cơ bản thì 2 framework này giống nhau hiện nay hầu hết các tính năng có sẵn trong Mina cũng có sẵn trong Netty. dựa vào lịch sử các phiên bản các bạn có thể thấy sự phát triển nhanh chóng của Netty nhiều hơn rất nhiều so với Mina. 2 . SO SÁNH NETTY VỚI CÁC FRAMEWORK KHÁC Với Apache Mina.2. Nó đơn giản hơn Mina. giải quyết được một số vấn đề trong thiết kế nhưng vẫn giữ lại được các tính năng nổi tiếng của Mina .

Việc truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa tiến quá trình. DỊCH VỤ VẬN CHUYỂN (TRANSPORT SERVICE) Bao gồm các service Socket & Datagram. KIẾN TRÚC CỦA NETTY FRAMWORK Netty xây dựng các winform trên cơ sở các dịch vụ vận chuyển và hỗ trợ webform với các giao thức trên nền web 1. .CHƯƠNG 2.Http & Web Socket: là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách sử dụng một TCP socket để tạo một kết nối hiệu 3 . HỖ TRỢ GIAO THỨC (PROTOCOL SUPPORT) . .Socket & Datagram: Dựa trên giao thức UDP (User Datagram Protocol).Http Tunnel: là một kỹ thuật đóng gói dữ liệu của các giao thức khác ( TCP/IP ) trong một gói tin HTTP để có thể vượt qua tường lửa được được triển khai dưới hình thức client-server. Ngược lại với giao thức TCP thì dữ liệu được truyền theo giao thức UDP. là giao thức hướng thông điệp (message oriented).In-VM Pipe 2. Http Tunnel và In-VM Pipe .

RTSP là một giao thức điều khiển cho việc khởi tạo định hướng việc vận chuyển các dòng dữ liệu đa phương tiện từ máy chủ đa phương tiện. lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào. giao thức tạo luồng thời gian thực.Google Protobuf: là một cachsdđể mã hóa cấu trúc dữ liệu. tách rời.Legacy Text. . .quả và ít tốn kém.RTSP: Real Time Streaming Protocol. Binary Protocol with Unit Testability 3. TLS.Universal Communication API .Zlib/ gzip compression: 2 công nghệ nén nhằm giúp tăng hiệu năng hệ thống. .. Google sử dụng Protocol Buffers cho gần như tất cả các giao thức RPC nội bộ của mình và các định dạng. là viết tắt của Transport Layer Security.Zero-copy-capable Rich Byte Buffer 4 . Liên kết này đảm bảo tất cả các dữ liệu trao đổi giữa máy chủ web và trình duyệt luôn được bảo mật và an toàn.Extensible Event Model: Cho phép ta tách biệt rõ ràng các concern. Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web. LÕI (CORE) . SL đảm bảo rằng tất cả các dữ liệu được truyền giữa các máy chủ web và các trình duyệt được mang tính riêng tư.Larg file transfer: .SSL-StartTLS: SSL là viết tắt của từ Secure Sockets Layer. SSL là một chuẩn công nghiệp được sử dụng bởi hàng triệu trang web trong việc bảo vệ các giao dịch trực tuyến với khách hàng của họ. . Đây là một tiêu chuẩn an ninh công nghệ toàn cầu tạo ra một liên kết được mã hóa giữa máy chủ web và trình duyệt. . .

5 .buffer .CHƯƠNG 3. 2. CENTRAL INTERFACE FOR ALL I/O OPERATIONS .The core channel API which is asynchronous and event-driven abstraction of various transports such as a NIO Channel. CÁC API TRONG NETTY FRAMEWORK 1.netty.the fundamental data structure to represent a low-level binary and text message. LOW-LEVEL DATA REPRESENTATION .Abstraction of a byte buffer .io.io.netty.channel .

io.A channel registry which helps a user maintain the list of open Channels and perform bulk operations on them. .local . ..netty.io.channel. 6 .channel.channel.A virtual Channel that helps wrapping a series of handlers to unit test the handlers or use them in non-I/O context.A virtual transport that enables the communication between the two parties in the same virtual machine.netty.io.netty.embedded .group .

netty.rxtx .channel. .netty..Abstract SCTP socket interfaces which extend the core channel API.channel.io.io.channel.A serial and parallel port communication transport based on RXTX.Old blocking I/O based channel API implementation .NIO-based channel API implementation recommended for a large number of connections (>= 1000).oio .netty. .io. 7 .nio .recommended for a small number of connections (< 1000). .io.sctp .channel.netty.

channel.Abstract TCP and UDP socket interfaces which extend the core channel API.socket .NIO-based socket channel API implementation .io. 8 .channel.netty.sctp.socket.recommended for a large number of connections (>= 1000).netty.recommended for a small number of connections (< 1000).Old blocking I/O based SCTP channel API implementation .recommended for a large number of connections (>= 1000).channel.oio .netty.NIO-based SCTP Channel API implementation .channel.sctp.netty.io.nio .. .io.io. . .nio .

recommended for a small number of connections (< 1000). 3.Là lớp phụ trợ với các API có khả năng thực thi một cách dễ dàng việc khởi động các channel ở cả client và cả phía server. .netty.channel.channel.oio . 9 .netty.io.netty.channel.Old blocking I/O based socket channel API implementation .io.io.UDT Transport for NIO Channels.io.bootstrap .nio .. CLIENT & SERVER BOOTSTRAPPING UTILITIES .udt.socket.udt . .netty.UDT Transport.

.netty.bytes .io.4.netty. 10 .codec.netty.handler. REUSABLE I/O EVENT INTERCEPTORS .handler.Extensible decoder and its common implementations which deal with the packet fragmentation and reassembly issue found in a stream-based transport such as TCP/IP.codec .handler.Encoder and decoder which transform a Base64-encoded String or ByteBuf into a decoded ByteBuf and vice versa.codec.base64 . .io.io.Encoder and decoder which transform an array of bytes into a ByteBuf and vice versa.

io.io. 11 .handler.codec.codec. decoder and their related message types for HTTP.handler.compression . and Snappy.Encoder and decoder which compresses and decompresses ByteBufs in a compression format such as zlib.netty.http .netty. . gzip.Encoder..

netty.HTTP multipart support.multipart ..http. 12 .handler.codec.io.

.netty.handler.io.Decoder and Encoder which uses JBoss Marshalling.http.websocketx .handler.netty.codec.io. decoder. handshakers and their related message types for Web Socket data frames..codec.marshalling . 13 .Encoder.

.Encoder and decoder which transform a Google Protocol Buffers Message into a ByteBuf and vice versa.netty.Encoder.codec. .netty.netty. .Decoder and encoders to manage message completion and multi-streaming codec in SCTP/IP.handler..handler.codec.io.protobuf . 14 .codec.codec.io.handler.rtsp .io.serialization .An RTSP extension based on the HTTP codec.handler.sctp .netty. decoder and their compatibility stream implementations which transform a Serializable object into a byte buffer and vice versa.io.

spdy . 15 .socks .netty..io.handler.handler.Encoder.io.Encoder.codec. decoder and their related message types for Socks.netty. .codec. session handler and their related message types for the SPDY protocol. decoder.

handler. 16 .io..string .Encoder and decoder which transform a String into a ByteBuf and vice versa.codec.netty.

.SSL · TLS implementation based on SSLEngine . .netty.Implementation of a Traffic Shaping Handler and Dynamic Statistics.io. 17 .Logs a io.handler.netty.ssl .netty.Adds support for read and write timeout and idle connection notification using a Timer.io.io.traffic .handler.io.handler.timeout .Writes very large data stream asynchronously neither spending a lot of memory nor getting OutOfMemoryError.handler. .handler.stream .netty. .io.channel.logging .netty.ChannelEvent for debugging purpose.netty.

util .concurrent .io. 18 .5.util. .Utility classes for concurrent / async tasks. MISCELLANEOUS .netty.Utility classes used across multiple packages.netty.io.

19 .

PIPELINE Pipeline được dựng trên 1 channel để tối ưu hóa đường truyền. Bằng cách phân luồng. BYTEBUF Chia dữ liệu đọc và ghi thành các phần riêng rẽ ByteBuf nhiều loại Thực thi Direct và Heap Có khả năng thay đổi kích thước để phù hợp đường truyền Có sự hỗ trợ cho reference-counting Method-Chaining 2. CHANNEL Client chỉ kết nối qua 1 channel và mỗi channel chỉ gắn với 1 kết nối. 1. 20 . chúng ta sẽ nói qua một chút về các khái niệm trong netty framework.CHƯƠNG 4. CÁC KHÁI NIỆM TRONG NETTY FRAMEWORK Ở phần này. 3.

21 .

Bước 4. giải nén ra. sau đó vào phần libraries.io/downloads. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG VỚI NETBEAN Bước 1.xx (x. chúng ta sẽ được 1 thư mục. chọn button Add JAR/Folder 22 . trong hình minh họa.CHƯƠNG 5. vào trong netbean. là bản 4.0. sau khi tải về.x. vào Project của bạn. chúng ta tìm và tải Netty từ trang http://netty. trong đó có 1 file có tên netty-all-x. chúng tôi sử dụng bản mới nhất vào thời điểm làm bài báo cáo. Bước 3.html Bước 2.x.xx là tên phiên bản bạn tải về.13).

ấn Open. Ở trên của sổ hiện lên. 23 . Bước 6. và chọn nó. nhấn OK. Trở lại màn hình libraries.Bước 5. ta tìm đến thư mục chứa file netty đã nói ở trên.

Vậy là chúng ta đã hoàn thành các bước để có thể sử dụng netty framework trong netbean. 24 .

CHƯƠNG 6. 25 . DEMO VÀ HƯỚNG DẪN CHI TIẾT DEMO Demo và cách thức thực hiện chương trình chúng em sẽ trình bài vào buổi thuyết trình.