1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học: Nghiên cứu về Netty Framework

27 1,9K 52
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu về Netty Framework
Tác giả Võ Xuân Ngọc, Nguyễn Đình Hòa, Đào Xuân Hiển
Người hướng dẫn ThS Nguyễn Trác Thức
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh - Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo môn học
Năm xuất bản 2012
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 27
Dung lượng 1,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo môn học: Nghiên cứu về Netty Framework

Trang 1

1

Đề tài: Nghiên cứu về Netty Framework

3 Đào Xuân Hiển 10520212

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

Trang 2

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 Netty framework là gì? 1

1.2 Lịch sử phát triển 1

2 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 DỊCH VỤ VẬN CHUYỂN (TRANSPORT SERVICE) 3

2 HỖ TRỢ GIAO THỨC (PROTOCOL SUPPORT) 3

3 LÕI (CORE) 4

CHƯƠNG 3 CÁC API TRONG NETTY FRAMEWORK 5

1 LOW-LEVEL DATA REPRESENTATION 5

2 CENTRAL INTERFACE FOR ALL I/O OPERATIONS 5

3 CLIENT & SERVER BOOTSTRAPPING UTILITIES 9

4 REUSABLE I/O EVENT INTERCEPTORS 10

5 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

Trang 3

1

1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN NETTY FRAMEWORK 1.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, ví dụ như các giao thức mạng client-server

“Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients”

Có nghĩ rằng, 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, 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, dễ vận hành và bảo trì

Netty được sử dụng để lập trình các socket server đơn giản như UDP và TCP

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, 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, nó cũng mang đến khả năng chạy bên trong một “servlet container” (web container), hỗ trợ cho WebSockets, tích hợp được với Google Protocol Buffers, hỗ trợ 2 chuẩn bả mật SSL/TLS.cũng như giao thức SPDY

1.2 Lịch sử phát triển

Netty framework được phát triển bởi cộng đồng Netty (Netty Project Community)

Vào tháng 6 năm 2004, phiên bản netty 2.1.0 chính thức ra mắt

Vào tháng 11 năm 2011, phiên bản 3.2.7 được ra mắt

Vào tháng 7 năm 2013, phiên bản 4.0.0 được ra mắt Hiện tại phiên bản cuối cùng là 4.0.13 và đang alpha phiên bản 5.0.0

Trang 4

2

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

Với Apache Mina, 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 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

Netty có chu trình phát triển nhanh hơn , 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

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

Trang 5

3

CHƯƠNG 2 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 DỊCH VỤ VẬN CHUYỂN (TRANSPORT SERVICE)

Bao gồm các service Socket & Datagram, Http Tunnel và In-VM Pipe

- Socket & Datagram: Dựa trên giao thức UDP (User Datagram

Protocol), là giao thức hướng thông điệp (message oriented) 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

Ngược lại với giao thức TCP thì dữ liệu được truyền theo giao thức

UDP

- 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

- In-VM Pipe

2 HỖ TRỢ GIAO THỨC (PROTOCOL SUPPORT)

- 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

Trang 6

4

quả và ít tốn kém Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, 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

- SSL-StartTLS: SSL là viết tắt của từ Secure Sockets Layer Đâ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 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 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ư, tách rời 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ọ TLS, là viết tắt của Transport Layer Security

- Google Protobuf: là một cachsdđể mã hóa cấu trúc dữ liệu, 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

- Zlib/ gzip compression: 2 công nghệ nén nhằm giúp tăng hiệu năng hệ thống

- Larg file transfer:

- RTSP: Real Time Streaming Protocol, giao thức tạo luồng thời gian

thực, 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

- Legacy Text, Binary Protocol with Unit Testability

3 LÕI (CORE)

- Extensible Event Model: Cho phép ta tách biệt rõ ràng các concern

- Universal Communication API

- Zero-copy-capable Rich Byte Buffer

Trang 7

5

CHƯƠNG 3 CÁC API TRONG NETTY FRAMEWORK

1 LOW-LEVEL DATA REPRESENTATION

- io.netty.buffer - Abstraction of a byte buffer - the fundamental data structure to represent a low-level binary and text message

2 CENTRAL INTERFACE FOR ALL I/O OPERATIONS

- io.netty.channel - The core channel API which is asynchronous and event-driven abstraction of various transports such as a NIO Channel

Trang 8

- io.netty.channel.local - A virtual transport that enables the

communication between the two parties in the same virtual machine

Trang 9

7

- io.netty.channel.nio - NIO-based channel API implementation -

recommended for a large number of connections (>= 1000)

- io.netty.channel.oio - Old blocking I/O based channel API

implementation - recommended for a small number of connections (< 1000)

- io.netty.channel.rxtx - A serial and parallel port communication

transport based on RXTX

- io.netty.channel.sctp - Abstract SCTP socket interfaces which extend the core channel API

Trang 10

8

- io.netty.channel.sctp.nio - NIO-based SCTP Channel API

implementation - recommended for a large number of connections (>= 1000)

- io.netty.channel.sctp.oio - Old blocking I/O based SCTP channel API implementation - recommended for a small number of connections (< 1000)

- io.netty.channel.socket - Abstract TCP and UDP socket interfaces

which extend the core channel API

- io.netty.channel.socket.nio - NIO-based socket channel API

implementation - recommended for a large number of connections (>= 1000)

Trang 11

9

- io.netty.channel.socket.oio - Old blocking I/O based socket channel API implementation - recommended for a small number of connections (< 1000)

- io.netty.channel.udt - UDT Transport

- io.netty.channel.udt.nio - UDT Transport for NIO Channels

3 CLIENT & SERVER BOOTSTRAPPING UTILITIES

- io.netty.bootstrap - 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

Trang 12

10

4 REUSABLE I/O EVENT INTERCEPTORS

- io.netty.handler.codec - 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

- io.netty.handler.codec.base64 - Encoder and decoder which transform a Base64-encoded String or ByteBuf into a decoded ByteBuf and vice versa

- io.netty.handler.codec.bytes - Encoder and decoder which transform an array of bytes into a ByteBuf and vice versa

Trang 13

11

- io.netty.handler.codec.compression - Encoder and decoder which

compresses and decompresses ByteBufs in a compression format such

as zlib, gzip, and Snappy

- io.netty.handler.codec.http - Encoder, decoder and their related

message types for HTTP

Trang 14

12

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

Trang 15

13

- io.netty.handler.codec.http.websocketx - Encoder, decoder,

handshakers and their related message types for Web Socket data

frames

- io.netty.handler.codec.marshalling - Decoder and Encoder which uses JBoss Marshalling

Trang 16

14

- io.netty.handler.codec.protobuf - Encoder and decoder which transform

a Google Protocol Buffers Message into a ByteBuf and vice versa

- io.netty.handler.codec.rtsp - An RTSP extension based on the HTTP codec

- io.netty.handler.codec.sctp - Decoder and encoders to manage message completion and multi-streaming codec in SCTP/IP

- io.netty.handler.codec.serialization - Encoder, decoder and their

compatibility stream implementations which transform a Serializable object into a byte buffer and vice versa

Trang 17

15

- io.netty.handler.codec.socks - Encoder, decoder and their related

message types for Socks

- io.netty.handler.codec.spdy - Encoder, decoder, session handler and their related message types for the SPDY protocol

Trang 18

16

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

Trang 19

17

- io.netty.handler.logging - Logs a io.netty.channel.ChannelEvent for debugging purpose

- io.netty.handler.ssl - SSL · TLS implementation based on SSLEngine

- io.netty.handler.stream - Writes very large data stream asynchronously neither spending a lot of memory nor getting OutOfMemoryError

- io.netty.handler.timeout - Adds support for read and write timeout and idle connection notification using a Timer

- io.netty.handler.traffic - Implementation of a Traffic Shaping Handler and Dynamic Statistics

Trang 20

18

5 MISCELLANEOUS

- io.netty.util - Utility classes used across multiple packages

- io.netty.util.concurrent - Utility classes for concurrent / async tasks

Trang 21

19

Trang 22

20

CHƯƠNG 4 CÁC KHÁI NIỆM TRONG NETTY FRAMEWORK

Ở phần này, chúng ta sẽ nói qua một chút về các khái niệm trong netty

framework

1 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

Trang 23

21

Trang 24

22

CHƯƠNG 5 HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG VỚI NETBEAN

Bước 1, chúng ta tìm và tải Netty từ trang http://netty.io/downloads.html Bước 2, sau khi tải về, giải nén ra, chúng ta sẽ được 1 thư mục, trong đó có 1 file có tên netty-all-x.x.xx (x.x.xx là tên phiên bản bạn tải về, trong hình minh họa, 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, là bản 4.0.13)

Bước 3, vào trong netbean, vào Project của bạn, sau đó vào phần libraries

Bước 4, chọn button Add JAR/Folder

Trang 26

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

Trang 27

25

CHƯƠNG 6 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

Ngày đăng: 25/05/2014, 17:09

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w