Tải bản đầy đủ (.doc) (41 trang)

BÁO CÁO ĐỒ ÁN 4ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNHHỘI THOẠI SỬ DỤNG RMI

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.11 MB, 41 trang )

ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT-HÀN

BÁO CÁO ĐỒ ÁN 4
ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH

HỘI THOẠI SỬ DỤNG RMI

Sinh viên thực hiện : Huỳnh Văn Niên – 18IT2
Giảng viên hướng dẫn: TS. Lý Quỳnh Trân


Đà Nẵng, tháng 10 năm 2020


ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT-HÀN

BÁO CÁO ĐỒ ÁN 4

ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH HỘI
THOẠI SỬ DỤNG RMI


Đà Nẵng, tháng 11 năm 2020


Lời mở đầu
Trong thế kỉ 21 này, đánh dấu một sự đột phá của kỉ nguyên mạng và Internet, ngày
càng xuất hiện càng nhiều các hệ thống mạng như LAN, WAN, INTERNET… cùng
với đó là sự phát triển của các giao thức mạng hỗ trợ trong việc truyền thông, chia sẻ


thơng tin giữa các máy tính với nhau. Giữa một thế giới mà không gian mạng không
ngừng ngày càng mở rộng, thì phát triển các mơ hình hệ thống mạng ngày càng phải
cải thiện để đáp ứng các nhu cầu khắt khe từ phía người dùng, một trong số đó có hệ
thống phân tán, một hệ thống cho thấy những ưu điểm vượt trội và không ngừng được
nâng cấp.
Qua việc tìm hiểu các giao thức mạng, kĩ thuật lập trình trong các hệ thống
phân tán, em thấy tiềm năng phát triển của kĩ thuật lập trình phân tán RMI nhằm giúp
phân bổ tài nguyên và có thể thực hiện cùng lúc nhiều bài toán khác nhau.
Với mong muốn rút ngắn thời gian và khoảng cách trị chuyện, trao đổi thơng
tin giữa các người dùng, chương trình được tạo ra dựa theo mơ hình phân tán và sử
cơng nghệ RMI để thực hiện các dịch vụ trao đổi thông tin trực tuyến.
Bắt nguồn từ ý tưởng này cùng với những gợi ý của TS. Lý Quỳnh Trân, em đã
thực hiện đồ án:
“XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI SỬ DỤNG RMI”

Cấu trúc đồ án bao gồm:
 Chương 1: Cơ sở lý thuyết
 Chương 2: Phân tích thiết kế hệ thống
 Chương 3: Kết quả xây dựng chương trình

1


Lời cảm ơn
Để hoàn thành tốt đề tài tốt nghiệp này, ngồi sự nỗ lực của bản thân, em cịn nhận
được sự quan tâm giúp đỡ của nhiều tập thể và cá nhân.
Trước hết, em xin gửi tới toàn thể các thầy, cô giáo trong Đại học Công nghệ thông
tin và Truyền thông – Đại học Đà Nẵng lời cảm ơn chân thành nhất. Đặc biệt, em xin
bày tỏ lòng biết ơn sâu sắc tới Giáo viên hướng dẫn –TS. Lý Quỳnh Trân đã tận tâm
hướng dẫn em trong suốt q trình thực tập và hồn thiện đề tài.

Qua đây, em xin chân thành cảm ơn ban lãnh đạo và thầy giáo hướng dẫn cùng bạn bè
đã tạo mọi điều kiện thuận lợi có được những kiến thức thực tế cần thiết.
Cuối cùng em kính chúc q thầy, cơ dồi dào sức khỏe và thành công trong sự
nghiệp, đạt được nhiều thành công tốt đẹp

2


MỤC LỤC
Giới thiệu ................................................................................7
Mục tiêu....................................................................................................................7
Đối tượng nghiên cứu................................................................................................7
Phạm vi nghiên cứu...................................................................................................7
Dự đoán kết quả........................................................................................................7

Chương 1 Cơ sở lý thuyết......................................................8
1.1 Tổng quan về lập trình mạng............................................................................8
1.1.1 Lập trình mạng là gì?.................................................................................8
1.1.2 Phân loại mạng máy tính...........................................................................8
1.1.3 Các loại kiến trúc mạng phổ thơng............................................................8
1.1.4 Mơ hình mạng...........................................................................................9
1.2 Giao thức mạng..............................................................................................13
1.2.1 Giao thức TCP (Transmission Control Protocol).....................................13
1.2.2 Giao thức UDP (User Datagram Protocol)..............................................13
1.3 Lập trình phân tán đối tượng với RMI...........................................................14
1.3.1 Thế nào là lập trình phân tán?.................................................................14
1.3.2 Kĩ thuật lập trình RMI.............................................................................14
1.3.3 Ứng dụng của hệ thống phân tán.............................................................17
1.4 Ngôn ngữ lập trình Java.................................................................................17
1.4.1 Khái niệm................................................................................................17

1.4.2 Thế mạnh của ngơn ngữ Java..................................................................18
1.5 Cơng cụ lập trình - Eclipse IDE for Java Developers.....................................19
1.5.1 Tổng quan về Eclipse..............................................................................19
1.5.2 Tính năng ưu việt của eclipse..................................................................20

Chương 2 Phân tích thiết kế hệ thống................................20
2.1 Tổng quan về bài toán....................................................................................20
2.1.1 Giới thiệu bài toán...................................................................................20
2.1.2 Đối tượng sử dụng...................................................................................21
2.1.3 Mục tiêu của chương trình.......................................................................21
2.1.4 Các chức năng của chương trình.............................................................21
2.2 Phân tích thiết kế hệ thống.............................................................................21
2.2.1 Mơ hình bài toán......................................................................................21
2.2.2 Cách thức hoạt động................................................................................22
2.2.3 Các biểu đồ Usecase................................................................................25
2.2.4 Biểu đồ Lớp.............................................................................................26
2.2.5 Các biểu đồ hoạt động.............................................................................27
2.2.6 Biểu đồ tuần tự........................................................................................28
2.2.7 Thuật tốn và quy trình thực hiện............................................................28

Chương 3 Kết Quả Xây Dựng Chương Trình....................32
3.1 Chương trình demo........................................................................................32
3.2 Kết luận..........................................................................................................35
3.2.1 Đánh giá về công nghệ............................................................................35
3.2.2 Đánh giá về ứng dụng..............................................................................35
Tài liệu tham khảo...............................................................................................35
3


DANH MỤC CÁC BIỂU ĐỒ


Biểu đồ UseCase của người dùng ............................................................................................................25
Biểu đồ lớp của chương trình ..................................................................................................................26
Biểu đồ hoạt động đăng nhập .................................................................................................................27
Biểu đồ hoạt động nhắn tin .....................................................................................................................27

Biểu đồ tuần tự xử lý yêu cầu cho client .....................................................................28

4


DANH MỤC HÌNH
Mơ hình OSI và TCP/IP .............................................................................................................................10
Mơ hình client-server và p2p ...................................................................................................................11
Khái niệm về RMI .....................................................................................................................................15
Một số thuật ngữ trong RMI ...................................................................................................................15
Truyền tin trong RMI ................................................................................................................................16
Ngơn ngữ lập trình Java ..........................................................................................................................18
Phần mềm lập trình eclipse ....................................................................................................................20
Mơ hình bài tốn RMI ..............................................................................................................................22
Gửi yêu cầu và nhận phản hồi .................................................................................................................23
Tương tác giữa stub và skeleton ..............................................................................................................24

Callback giữa client và server .....................................................................................24
Khởi động Server .....................................................................................................................................32
Thơng báo kích hoạt khơng thành cơng ..................................................................................................32
Nhập nickname ........................................................................................................................................32
Thông báo lỗi không đăng nhập được ....................................................................................................33
Giao diện ứng dụng Nguyễn Văn A .........................................................................................................33
Giao diện ứng dụng Nguyễn Văn B .........................................................................................................34

Chức năng gửi tin nhắn ...........................................................................................................................34
Chức năng gửi file ....................................................................................................................................35

Chức năng online ........................................................................................................36

5


DANH MỤC CỤM TỪ VIẾT TẮT
STT

Cụm từ

Viết tắt

OOP

3

Remote Method Invoke –
tạm dịch là triệu gọi phương thức từ xa
Object-oriented programming (Lập trình
hướng đối tượng)
Java Virtual Machine – máy ảo java

4

Graphic User (Giao diện người dùng)

GUI


5

Packet InterNet Groper

PING

1
2

6

RMI

JVM


Giới thiệu
Trong những năm gần đây, lập trình mạng ln là một trong những nội dung quan
trọng trong lĩnh vực công nghệ phần mềm. Nhờ sự phát triển vượt bậc trong lĩnh vực
mạng máy tính, những phần mềm máy tính dùng cho doanh nghiệp hiện nay sử dụng
rất nhiều trên mơi trường mạng đặc biệt là Internet. Mạng máy tính là nơi các kĩ thuật
liên quan tới mơ hình client-server, mơ hình phân tán hay mơ hình hợp tác được triển
khai. Các ứng dụng mạng xử lý tập trung hoặc phân tán, tận dụng tối đa sức mạnh của
các hệ thống phần cứng để mang lại hiệu quả cao.
Trong báo cáo đồ án này, em sẽ nghiên cứu và sử dụng kĩ thuật lập trình phân tán
RMI để xây dựng một chương trình hội thoại trực tuyến giữa các người dùng với nhau
trong một mạng LAN nhằm tìm hiểu cơ sở lý thuyết và cách thức hoạt động lập trình
RMI.


Mục tiêu
Nghiên cứu cơ sở lý thuyết, nguyên lý hoạt động, giao thức mạng được sử dụng trong
kĩ thuật lập trình RMI.
Xây dựng chương trình có các chức năng trị chuyện trực tuyến theo thời gian thực,
gửi tệp cho nhau…

Đối tượng nghiên cứu
-

Cơng nghệ lập trình RMI
Ứng dụng lập trình RMI vào chương trình hội thoại trực tuyến

Phạm vi nghiên cứu
Chương trình mơ phỏng q trình hoạt động ở các hệ thống mạng LAN

Dự đoán kết quả
-

Nắm được các kiến thức về RMI cũng như ngơn ngữ lập trình Java.
Nắm được các bước cấu hình, lập trình RMI bằng Java.
Demo thành cơng chương trình, hồn thiện và phát triển một số chức năng

7


Chương 1

Cơ sở lý thuyết

1.1 Tổng quan về lập trình mạng

1.1.1 Lập trình mạng là gì?
Lập trình mạng là vấn đề liên quan đến nhiều lĩnh vực kiến thức khác nhau. Từ
kiến thức sử dụng ngơn ngữ lập trình, phân tích thiết kế hệ thống, kiến thức hệ thống
mạng, mơ hình xây dựng chương trình ứng dụng mạng, kiến thức về cơ sở dữ liệu...
cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liên quan khác như mạng
điện thoại di động, hệ thống GPS, các mạng BlueTooth, …
Cụ thể lập trình mạng liên quan trực tiếp đến việc các chương trình giao tiếp
với các chương trình khác trong mạng máy tính
Ngồi ra lập trình mạng cịn có thể được định nghĩa bằng công thức sau:
LTM = KTM + MH + NN
 LTM: Lập trình mạng
 KTM: Kiến thức mạng truyền thơng (mạng máy tính, PSTN, ...)
 MH: Mơ hình lập trình mạng
 NN: Ngơn ngữ lập trình mạng
Hiện nay, lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các
ứng dụng doanh nghiệp. Một chương trình mạng được viết ra để các chương trình trên
các máy tính khác nhau có thể truyền tin với nhau một cách hiệu quả và an toàn cho
dù chúng được cài đặt trên mạng LAN, WAN hay mạng toàn cầu Internet, đây là điều
căn bản đối với sự thành công của nhiều hệ thống.
1.1.2 Phân loại mạng máy tính
Dựa theo phạm vi phân bố của mạng, người ta có thể phân ra các loại mạng như
sau:
- GAN (Globa Area Network)
- WAN (Wide Area Network)
- MAN (Metropolitan Area Network)
- LAN (Local Area Network)
1.1.3 Các loại kiến trúc mạng phổ thơng
• Ring Topology:
8





Bus Topology:



Start Topology:

1.1.4 Mơ hình mạng
Để dữ liệu có thể được trao đổi giữa hai hay nhiều người dùng trong mạng máy
tính hiện nay, chúng ta cần một phương pháp có tính hệ thống. Phương pháp này cho
phép dữ liệu được trao đổi một cách hiệu quả và được sắp đặt sẵn. Để thực hiện được
phương pháp đó ta cần những mơ hình được thiết lập sẵn trong mạng máy tính hay
cịn được gọi là mơ hình mạng máy tính. Những mơ hình này chịu trách nhiệm cung
cấp những quy tắc, giao thức để vận chuyển dữ liệu giữa người nhận và người gửi, tạo
điều kiện cho dữ liệu được truyền đi một cách mượt mà, có hệ thống.
Mơ hình tham chiếu
Kiến trúc mạng phân lớp được tổ chức trong các mơ hình tham chiếu, trong số
này, được biết đến nhiều nhất là mơ hình tham chiếu Open System Interconnection
(OSI) và mơ hình tham chiếu TCP / IP.
9


Mơ hình OSI là một mơ hình lý thuyết và các giao thức liên kết với các lớp của
nó hiếm khi được sử dụng. Tuy nhiên, bản thân mơ hình được sử dụng rộng rãi để
trình bày các khái niệm được sử dụng trong mạng.
Trái ngược với OSI, mơ hình TCP / IP ít được sử dụng hơn cho các mục đích lý
thuyết, nhưng các giao thức liên quan đến nó được sử dụng rộng rãi trong thực tế.


Mơ hình OSI và TCP/IP

Mơ hình tham chiếu OSI bao gồm bảy tầng: Vật lý, Liên kết dữ liệu, Mạng, Truyền
tải, Phiên, Trình bày và Ứng dụng.
• Tầng vật lý (Physical) chịu trách nhiệm truyền các bit thơ qua kênh truyền
thơng.
• Tầng liên kết dữ liệu (Data Link) phụ trách một số nhiệm vụ như độ tin cậy,
kiểm soát luồng và kiểm sốt truy cập phương tiện để truyền dữ liệu điểmđiểm.
• Tầng mạng (Network) chủ yếu phụ trách việc định tuyến các gói thơng qua các
mạng con
• Tầng giao vận (Transport) cung cấp các dịch vụ truyền thông dữ liệu cho các
tầng trên
• Tầng phiên (Session) cho phép người dùng thiết lập các phiên giữa chúng, mỗi
phiên cung cấp các dịch vụ như điều khiển hộp thoại và đồng bộ hóa
• Tầng trình bày (Presentation) liên quan đến cú pháp và ngữ nghĩa của thơng tin
(dữ liệu) được trao đổi.
• Tầng ứng dụng (Application) chứa nhiều giao thức dành riêng cho các ứng
dụng của người dùng.

10


Khơng giống như OSI, mơ hình tham chiếu TCP / IP chỉ có bốn tầng: Host-toNetwork, Internet, Transport và Application.
• Tầng Host-to-Network tương ứng với tầng Liên kết dữ liệu và tầng Vật lý từ
mơ hình OSI. Các giao thức được sử dụng ở tầng này là dành riêng cho công
nghệ mạng được sử dụng để kết nối thiết bị người dùng vật lý và thiết bị mạng
• Tầng Internet tương ứng với tầng mạng của mơ hình tham chiếu OSI và tương
tự như tầng này, nó chịu trách nhiệm định tuyến các gói dữ liệu thơng qua các
mạng con để định ra điểm đến. Giao thức được sử dụng rộng rãi nhất ở tầng
này là Giao thức Internet (IP)

• Tầng Giao vận của mơ hình tham chiếu TCP / IP tương ứng với cùng tầng của
mơ hình OSI và cung cấp các dịch vụ tương tự. Các giao thức nằm ở tầng này
là Giao thức điều khiển truyền (TCP) và Giao thức sơ đồ người dùng (UDP).
• Tầng Ứng dụng của mơ hình TCP / IP tương tự như tầng ứng dụng của mơ hình
OSI. Các giao thức nằm ở tầng này bao gồm nhưng không giới hạn ở Giao
thức truyền tải tệp (FTP), giao thức thư điện tử (SMTP, IMAP, POP), Giao thức
truyền siêu văn bản (HTTP), Hệ thống tên miền (DNS), Secure Shell (SSH)…
Mơ hình ứng dụng
Mơ hình ứng dụng mạng là mơ hình thể hiện sự thoả thuận về mặt nhiệm vụ
giữa các thành phần, ở đây chúng ta sẽ bàn về 2 mơ hình được sử dụng nhiều là clientserver, peer to peer (p2p).

Mơ hình client-server và p2p

Mơ hình chủ-khách (client-server):
11


Trong mơ hình chủ-khách ứng dụng được chia làm hai thành phần: một thành
phần chuyên phục vụ các yêu cầu gửi đến từ các thành phần khác, gọi là thành phần
server; một hoặc nhiều thành phần đưa ra yêu cầu sử dụng dịch vụ, gọi là thành phần
client.
Trong mơ hình này, server luôn hoạt động (chế độ luôn mở) để chờ phục vụ
client. Chương trình server phải hoạt động trên máy có địa chỉ IP cố định.
Client có thể hoạt động ở chế độ luôn mở (always-on) hoặc mở không thường xuyên
(sometimes-on). Các client không giao tiếp trực tiếp với nhau mà chỉ giao tiếp với
server. Chương trình client phải biết được địa chỉ IP của máy chủ.
Việc giao tiếp giữa client và server được thực hiện dưới hình thức trao đổi các
thơng điệp (message):
• Client gửi thơng điệp u cầu (request message) cho server để mô tả công việc
cần thực hiện.

• Khi nhận được thơng điệp này, server sẽ phân tích và xác định cơng việc phải
thực hiện.
• Nếu quá trình xử lý sinh ra kết quả cần trả cho client thì server sẽ gửi cho client
thơng điệp trả lời (reply message).
• Định dạng và ý nghĩa của các thông điệp trao đổi giữa client và server được
quy định bởi giao thức dùng trong ứng dụng.
Mơ hình peer to peer:
Trong kiến trúc ngang hàng (còn gọi là kiến trúc peer-to-peer hay viết tắt là
P2P), tất cả các thành phần của hệ thống đều thực hiện các nhiệm vụ giống nhau,
khơng có người phục vụ (server) chun biệt.
Mỗi ứng dụng chạy trên một máy gọi là peer. Ứng dụng trên mỗi đôi máy (các
peer) trực tiếp tiến hành truyền thông với nhau mà không phải thông qua một server
trung gian nào.
Hiện nay các ứng dụng đòi hỏi lưu lượng dữ liệu lớn thường hoạt động theo mơ
hình P2P: ứng dụng phân phối file (BitTorrent, µTorrent), ứng dụng chia sẻ file
(eMule, LimeWire), điện thoại Internet (Skype), truyền hình IP (PPLive).

12


1.2 Giao thức mạng
Các giao thức mạng (protocol) là tập hợp các quy tắc được thiết lập nhằm xác
định cách để định dạng, truyền và nhận dữ liệu sao cho các thiết bị mạng máy tính - từ
server và router tới endpoint - có thể giao tiếp với nhau, bất kể sự khác biệt về cơ sở
hạ tầng, thiết kế hay các tiêu chuẩn cơ bản giữa chúng.
Để gửi và nhận thông tin thành công, các thiết bị ở cả hai phía của một trao đổi
liên lạc phải chấp nhận và tuân theo các quy ước giao thức. Hỗ trợ cho các giao thức
mạng có thể được tích hợp vào phần mềm, phần cứng hoặc cả hai.
1.2.1 Giao thức TCP (Transmission Control Protocol)
TCP là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP,

các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà
qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển
giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt
giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng
thời chạy trên cùng một máy chủ.
TCP hoạt động ở tầng vận tải (Transport) của mơ hình OSI 7 tầng.
1.2.2 Giao thức UDP (User Datagram Protocol)
UDP cũng là một trong các giao thức cốt lõi của bộ giao thức TCP/IP, nó là
một giao thức truyền tải khơng kết nối. Khơng như giao thức TCP (yêu cầu kết nối
trước khi truyền thơng) nó cung cấp chức năng cơ bản cần thiết cho các ứng dụng để
gửi các biểu đồ IP đóng gói mà khơng cần phải thiết lập kết nối.
UDP khơng cung cấp sự tin cậy và thứ tự truyền nhận như giao thức TCP, các
gói dữ liệu có thể đến khơng đúng thứ tự hoặc bị mất mà khơng có thông báo. Tuy
nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu
khắt khe về thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với
việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu.
Nhiều ứng dụng Internet quan trọng sử dụng UDP, bao gồm: Hệ thống tên miền
(DNS), nơi các truy vấn phải nhanh chóng và chỉ bao gồm một yêu cầu duy nhất theo
sau một gói trả lời duy nhất, các ứng dụng Chat Voice, video…
UDP hoạt động ở tầng vận tải (Transport) của mơ hình OSI 7 tầng.

13


1.3 Lập trình phân tán đối tượng với RMI
1.3.1 Thế nào là lập trình phân tán?
Thơng thường mã lệnh của một chương trình khi thực thi được tập trung trên cùng một
máy, đây là cách lập trình truyền thống. Sự phát triển như vũ bão của mạng máy tính
đặc biệt là mạng Internet tồn cầu, đã khiến các chương trình truyền thống này khơng
cịn đáp ứng được u cầu nữa. Các chương trình bây giờ u cầu phải có sự hợp tác

xử lý, tức là mã lệnh của nó đã không tập trung trên một máy mà được phân tán trên
nhiều máy. Khi một ứng dụng có mã lệnh thực thi được phân tán trên nhiều máy thì
chương trình đó được gọi là chương trình phân tán và việc lập trình để tạo ra các
chương trình này được gọi là lập trình phân tán. Có rất nhiều cơng nghệ lập trình phân
tán như: DCOM, CORBA, RMI, EJB ... trong đó RMI là cơng nghệ thuần Java và dễ
lập trình nhất.
1.3.2 Kĩ thuật lập trình RMI
Khái niệm
RMI là một cơ chế cho phép một đối tượng đang chạy trên một máy ảo Java
này (Java Virtual Machine) gọi các phương thức của một đối tượng đang tồn tại trên
một máy ảo Java khác (JVM).
Hay nói cách khác RMI là cách thức giao tiếp giữa các đối tượng Java có mã
lệnh cài đặt (bao gồm cả phương thức và thuộc tính) nằm trên các máy khác nhau có
thể triệu gọi lẫn nhau.
Hình sau mơ hình triệu gọi đối tượng phân tán. Trên máy A các đối tượng A1,
A2 gọi các phương thức của nhau được gọi là triệu gọi phương thức cục bộ (local
method invoke) đây là cách lập trình hướng đối tượng truyền thống vẫn sử dụng,
tương tự các đối tượng C1, C2, C3 là các đối tượng cục bộ.
Tuy nhiên các đối tượng Java có thể triệu gọi phương thức của một đối tượng
nằm trên một máy khác dựa vào giao thức triệu gọi từ xa RMI. Trong mơ hình dưới
đây thì lời triệu gọi phương thức của đối tượng C2 (nằm trên máy C) từ đối tượng A1
(nằm trên máy A) là lời gọi phương thức từ xa.

14


Khái niệm về RMI 1

Một số thuật ngữ trong RMI
 Giao tiếp Remote: Một giao tiếp khai báo các phương thức cho phép gọi từ xa.

Trong Java giao tiếp Remote có các đặc điểm sau:
• Thừa kế giao tiếp có sẵn: java.rmi.Remote.
• Mỗi phương thức trong giao tiếp Remote phải được khai báo để đưa ra
ngoại
lệ
RemoteException
nhờ
mệnh
đề
throws
java.rmi.RemoteException và có thể có các ngoại lệ khác.
 Đối tượng Remote: một đối tượng được tạo ra để cho phép những đối tượng
khác trên một máy JVM khác gọi tới nó.
 Phương thức Remote: Đối tượng Remote chứa một số các phương thức, những
phương thức này có thể được gọi từ xa bởi các đối tượng trong JVM khác.

Một số thuật ngữ trong RMI 1

Các đặc tính của RMI
• RMI là mơ hình đối tượng phân tán của Java, nó giúp cho việc truyền thơng
giữa các đối tượng phân tán được dễ dàng hơn
• RMI là API bậc cao được xây dựng dựa trên việc lập trình socket

15








RMI không những cho phép chúng ta truyền dữ liệu giữa các đối tượng trên các
hệ thống máy tính khác nhau và còn gọi được các phương thức trong các đối
tượng ở xa.
Việc truyền dữ liệu giữa các máy khác nhau được sử lý một cách trong suốt bởi
máy ảo Java (Java virtual machine)
RMI cung cấp cơ chế callback, nó cho phép Server triệu gọi các phương thức ở
Client

Truyền tin trong RMI
• Java sử dụng rmic.exe để tạo ra các lớp trung gian
• RMI sử dụng lớp trung gian để truyền tin là Skeleton và Stub
• Lớp Stub dùng ở client
• Lớp Skeleton dùng ở Server
• Truyền thơng giữa stub và skeleton sử dụng TCP socket
• Cập nhật thơng tin tại các client thông qua cơ chế callback của RMI

Truyền tin trong RMI 1

16


Cách thức hoạt động của RMI
- Server RMI phải đăng kí với một dịch vụ tra tìm và đăng kí tên (rmiregistry)
- Sau khi server được đăng kí, nó sẽ chờ các yêu cầu RMI từ các client
- Nếu một dịch vụ chuyển từ server này sang một server khác, client chỉ cần tra
tìm trình đăng kí để tìm ra vị trí mới
- Các client RMI sẽ gửi các thơng điệp RMI để gọi một phương thức trên đối
tượng từ xa
1.3.3 Ứng dụng của hệ thống phân tán

Công nghệ thông tin và viễn thơng ngày càng phát triển, địi hỏi nhu cầu về xử
lý thông tin ngày càng cao, nhanh hơn nhiều lần tốc độ phát triển của tài nguyên phần
cứng và phần mềm. Có nhiều vấn đề đặt ra mà các hệ thống tập trung thông thường
không đáp ứng được, do tốc độ xử lý còn hạn chế. Xây dựng một hệ thống phân tán có
khả năng xử lý đồng thời một bài tốn trên nhiều máy tính là một hướng giải quyết
khả thi và đã được chứng minh tính hữu dụng. Hệ thống phân tán cịn tạo nhiều thuận
lợi trong việc chia sẻ thơng tin trên tồn thế giới.
Mục đích chính của hệ thống phân tán là kết nối người sử dụng và tài nguyên
một cách trong suốt, mở, và có thể nới rộng được. Một cách lý tưởng thì hệ thống này
có khả năng chịu lỗi tốt hơn và mạnh hơn nhiều hệ thống tổ hợp máy tính độc lập
khác.
Lập trình phân tán được sử dụng hầu hết ở hầu hết các hệ thống phân tán và
chúng được sử dụng ở nhiều hệ thống hiện nay như:
• Hệ thống Web Server: khi bạn duyệt web, trình duyệt của bạn chạy trên
máy tính của bạn giao tiếp với những máy chủ web khác nhau và cung
cấp cho bạn các trang web mà bạn yêu cầu. Rất có thể trình duyệt của bạn
dùng qua một máy chủ proxy để truy cập đến nội dung các trang web
chứa trên máy chủ web nhanh chóng và an tồn hơn.
• Hệ thống DNS Server: Để có thể xác định những máy chủ này, trình duyệt
phải dùng hệ thống tên miền phân tán DNS. Trình duyệt có thể truy cập
tới tất cả những máy chủ này trên Internet thông qua hệ thống các router
mà chính bản thân chúng cũng tạo nên một hệ thống phân tán khổng lồ.
• Một số ứng dụng mạng như các trò chơi trực tuyến nhiều người chơi kết
nối với nhau qua nhiều máy chủ, các dịch vụ điện tốn đám mây, hệ thống
điều khiển trong cơng nghiệp, …

17


1.4 Ngơn ngữ lập trình Java

1.4.1 Khái niệm
Java một ngơn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class).
Khác với phần lớn ngơn ngữ lập trình thơng thường, thay vì biên dịch mã nguồn thành
mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn
thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment)
chạy.
Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James
Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java
Standard Edition là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó,
nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau. Ví
dụ: J2EE cho các ứng dụng doanh nghiệp, J2ME cho các ứng dụng di động.

Ngơn ngữ lập trình Java

1.4.2 Thế mạnh của ngôn ngữ Java
 Java là một môi trường độc lập (Independent Platform)

18


Do cấu trúc của Java nên ta có thể soạn thảo chương trình trên bất kỳ hệ thống
nào. Sau khi đã được biên dịch thành tệp tin lớp (*.class) ứng dụng có thể thực
thi ở bất kỳ hệ thống nào. Đó là đặc tính mà các ngơn ngữ khác khơng có.
 Java là một ngơn ngữ lập trình hướng đối tượng thuần túy (Pure ObjectOriented Programming)
Java là một ngôn ngữ lập trình hướng đối tượng thuần túy, mọi thứ trong Java
đều là đối tượng.
 Java là một ngơn ngữ có tính khả chuyển (Portibility)
Java có tính khả chuyển đối với cả mã nguồn và bản thân mã biên dịch
(bytecode)
 Java là mơi trường an tồn

Khi phát triển các ứng dụng phân tán thì một trong nhừng vấn đề được quan
tâm hàng đầu là an toàn hệ thống. Java được thiết kế để đảm bảo an toàn cho
người dùng Java trên mạng.
 Java cung cấp cho người lập trình một thư viện khủng lồ
Java cung cấp cho người lập trình một thư viện khổng lồ các hàm chuẩn, gọi là
core API. Các hàm chuẩn này được đặt trong các gói.
 Java có cơ chế quản lý bộ nhớ tự động
Quản lý bộ nhớ là một trong những vấn đề phức tạp đối với C và C++. Khi thực
hiện chương trình người lập trình chịu trách nhiệm khởi tạo các vùng nhớ, sau
khi dùng phải giải phóng các vùng nhớ này. Chỉ cần một lỗi nhỏ có thể làm cạn
kiệt tài nguyên dẫn đến treo hệ thống. Java đã loại bỏ gánh nặng này cho người
lập trình. Các vùng nhớ được tự động giải phóng nếu như nó khơng tham chiếu
đến bất kỳ đối tượng nào đang hoạt động.
 Chi phí phát triển ứng dụng bằng Java thấp
Khi phát triển ứng dụng dựa trên cơng nghệ Java thì sẽ có rất nhiều công cụ
phát triển và dịch vụ được cung cấp miễn phí.

1.5 Cơng cụ lập trình - Eclipse IDE for Java Developers
1.5.1 Tổng quan về Eclipse
Eclipse là 1 công cụ hỗ trợ lập trình mã nguồn mở được phát triển bởi IBM.
Eclipse như một mơi trường phát triển Java tích hợp (IDE), với Eclipse chúng ta có
thể mở rộng hơn mã nguồn bằng cách chèn thêm các plugins cho project (PDE- Plugin Development Environment). Mặc dù Eclipse được viết bằng ngôn ngữ lập trình
Java, nhưng việc sử dụng nó khơng hạn chế chỉ cho ngơn ngữ Java. Ví dụ, Eclipse hỗ
19


trợ sẵn hoặc có thể cài thêm các plugins để hỗ trợ cho các ngơn ngữ lập trình như C/C
+ + và COBOL. Ngồi ra, cịn rất nhiều ngơn ngữ khác như PHP, Groovy, ...
Eclipse còn hỗ trợ cho lập trình viên code theo các mơ hình phát triển như MVC, tạo
thêm các lib hỗ trợ phát triển phần mềm.


Phần mềm lập trình eclipse

1.5.2 Tính năng ưu việt của eclipse
 Hỗ trợ việc xây dựng nhiều công cụ.
 Hỗ trợ một tập hợp không hạn chế các nhà cung cấp công cụ, bao gồm cả các
nhà cung cấp phần mềm độc lập (ISV).
 Hỗ trợ các công cụ thao tác các kiểu nội dung bất kỳ (bao gồm cả HTML, Java,
C, JSP, EJB, XML, và GIF).
 Hỗ trợ cả môi trường phát triển ứng dụng GUI lẫn không dựa trên GUI.
 Chạy trên nhiều hệ điều hành, bao gồm cả Windows và Linux.
 Lợi dụng tính phổ biến của ngơn ngữ Java để viết các công cụ.

20


Chương 2
2.1

Phân tích thiết kế hệ thống

Tổng quan về bài tốn

2.1.1 Giới thiệu bài tốn
Xây dựng chương trình hội thoại trực tuyến sử dụng cơng nghệ lập trình RMI:
-

Thiết lập mơ hình phân tán đơn giản với 1 server và client

-


Chương trình sử dụng giao thức TCP để truyền thơng giữa stub trên client với
skeleton trên server
Bài toán thực hiện trên địa chỉ localhost (127.0.0.1)

-

2.1.2 Đối tượng sử dụng
Chương trình phục vụ cho những con người tại các khu vực làm việc khác nhau,
chung 1 mạng LAN với nhau và có nhu cầu trao đổi thơng tin, chẳng như bộ phận kế
toán trao đổi với bộ phận nhân sự tại 1 cơng ty.
2.1.3 Mục tiêu của chương trình
Xây dựng chương trình hội thoại trực tuyến với mục tiêu mơ phỏng các chức năng cơ
bản, nhằm giúp nhiều người dùng có thể trao đổi thơng tin với nhau một cách nhanh
chóng nhất.
2.1.4 Các chức năng của chương trình
-

2.2

Người dùng yêu cầu đăng nhập vào hệ thống hội thoại với nickname
Các chức năng cơ bản: Nhắn tin, gửi file, hiển thị số người trực tuyến
Hiển thị tin nhắn lên màn hình, thơng báo lỗi nếu có sự cố

Phân tích thiết kế hệ thống

2.2.1 Mơ hình bài tốn
Nhằm mơ phỏng chính xác q trình hoạt động của chương trình, bài tốn được xây
dựng theo mơ hình client-server.


21


×