Thử nghiệm và đánh giá hiệu năng một số phương pháp truy nhập cơ sở dữ liệu WEB - Pdf 25


2
MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC 2
TÓM TẮT NỘI DUNG Error! Bookmark not defined.
MỞ ĐẦU 4
Chương 1 : Lập trình phân tán truyền thống bằng Java 15
1.1. Sơ lược về ngôn ngữ Java 15
1.2. Khái niệm lập trình phân tán 17
1.3. Các phương pháp lập trình phân tán phi thủ tục 18
1.3.1. Phương pháp lập trình socket trong Java 18
1.3.2. Phương pháp lập trình servlet 25
1.4. Các phương pháp lập trình phân tán hướng thủ tục 32
1.4.1. Lập trình RMI 32
1.4.2. Lập trình CORBA trong Java 38
1.5. Kết luận 48
Chương 2 : Tác tử di động 49
2.1. Tổng quan về tác tử di động 49
2.2. Các khái niệm cơ bản về tác tử di động 50
2.2.1. Tác tử và môi trường 50
2.2.2. Khởi tạo và hủy bỏ tác tử 51
2.2.3. Di chuyển tác tử 52
2.2.4. Giao tiếp giữa các tác tử 54
2.3. Lập trình tác tử di động Java với Aglets 55
2.3.1. Tác tử di động với Java 55
2.3.2. Kiến trúc Aglet 57
2.4. Lập trình tác tử di động Java với JADE 61
2.4.1. Giới thiệu sơ lược về JADE 61
2.4.2. Tạo tác tử 63
2.4.3. Xử lý sự kiện 67

Phụ lục 1 : Các cổng giao tiếp 111
Phụ lục 2 : Một số giao diện chính của chương trình 112
Phụ lục 3 : Một số đoạn mã nguồn chương trình 120 4

MỞ ĐẦU

Công nghệ Web đã mang lại cho xã hội nhiều lợi ích to lớn trên nhiều lĩnh vực
ngay từ khi nó ra đời, trong đó phải kể đến sự cung cấp thông tin của những trang
Web trên mạng, thông qua các trang Web người ta tìm kiếm được các thông tin
mong muốn một cách thuận lợi, nhanh chóng, chính xác mà không phải lo lắng đến
các trở ngại về khoảng cách không gian và thời gian.
Trong thời đại bùng nổ thông tin hiện nay thì các trang Web tĩnh không còn
đáp ứng được nhu cầu cập nhật thông tin ngày càng cao của con người, vì vậy
chúng đã dần được thay thế bởi các trang Web động. Sự hoạt động của các trang
Web động thường được kết hợp với một cơ sở dữ liệu mà ta thường gọi là cơ sở dữ
liệu Web.
Các phương pháp truy nhập cơ sở dữ liệu Web dựa trên ngôn ngữ lập trình
Java như Java socket, servlet, RMI và Java CORBA [21] đều hoạt động theo mô
hình truyền thông báo và kiến trúc clients/server, chúng có nhược điểm chung phải
duy trì kết nối giữa máy client và máy server trong quá trình truy nhập cơ sở dữ
liệu, dẫn đến chiếm dụng đường truyền và làm lãng phí băng thông.
Những năm gần đây, một công nghệ mới đã ra đời và có những bước phát
triển mạnh mẽ, đó là công nghệ tác tử. Riêng tác tử di động trong nhiều trường hợp
đã chứng tỏ là giải pháp cực kỳ hữu hiệu cho các vấn đề xử lý phân tán. Một trong
các vấn đề về xử lý phân tán được đề cập và giải quyết trong luận văn này là sử
dụng tác tử di động để truy nhập nhiều cơ sở dữ liệu Web.
Tác tử di động là những chương trình có khả năng tự di chuyển cùng với mã

xử lý phân tán. Có nhiều phương pháp xử lý phân tán truyền thống như:

6
- Mã lệnh có thể tham chiếu : Một tiến trình đang hoạt động trên máy này
gửi thông báo đến một máy khác kích hoạt việc thực hiện một mã lệnh nào đó nằm
sẵn trên máy đó. Các mô hình truyền thông báo, gọi thủ tục từ xa và gọi phương
thức từ xa đều thực hiện theo cơ chế này.
- Mã lệnh có thể dịch chuyển : Một tiến trình đang hoạt động trên máy nguồn
gửi thông báo đến máy đích để máy đích thực hiện một mã lệnh nào đó do máy
nguồn chuyển tới.
- Mã lệnh theo yêu cầu : Một tiến trình đang chạy trên máy A gửi một thông
báo đến máy B yêu cầu lấy về để thực hiện trên máy A một mã lệnh nào đó nằm
trên máy B.
- Mã lệnh di động : Một tiến trình đang hoạt động trên máy nguồn di chuyển
đến máy đích và tiếp tục thực hiện ở đó.
Tác tử di động có cái gì đó giống với mã lệnh di động nhưng các khái niệm
này không hoàn toàn đồng nhất với nhau. Mã lệnh di động là một cơ chế thực hiện
phân tán, còn thuật ngữ tác tử di động lại dùng để chỉ các tác tử hoạt động theo
chính cơ chế này. Tác tử di động là những chương trình không bị ràng buộc với nơi
chúng bắt đầu thực hiện. Chúng có thể di chuyển từ nơi này sang nơi khác trên
mạng. Tính di động cho phép chúng đến được những nơi thích hợp nhất cho việc
thực hiện nhiệm vụ. Tác tử có thể được xem như là đối tượng chứa dữ liệu và mã
lệnh, đồng thời có mục đích và tính chủ động nhất định trong hoạt động.
 Tác tử di động trong quản trị mạng Internet [2]: Với tốc độ phát triển như vũ
bão của mạng Internet, hệ thống quản lý mạng trở nên rất phức tạp. Các sự cố trên
mạng luôn luôn có nguy cơ xảy ra: việc tràn dữ liệu trên mạng đòi hỏi người quản
lý giám sát cần đưa ra giải pháp xử lý hữu hiệu. Lỗi cần phải được chẩn đoán một
cách nhanh chóng, chính xác và được tự động sửa hoặc thông báo đến người điều
hành và đưa ra một số khuyến nghị về cách giải quyết. Trong mạng Internet, người
điều hành mạng thường phải làm việc từ xa với rất nhiều thiết bị (thường là ngồi ở

Cả hai loại tác tử netlet và deglet cùng tuân theo một cách bảo mật cung cấp

8
trước nào đó có thể được cho phép thực hiện các hoạt động trên các thiết bị mạng .
Mỗi một netlet "tích cực" có thể được sử dụng để giải quyết một vấn đề nào đó một
cách tự động theo cách khôi phục ngay tức thì khi có thể. Người quản lí mạng sẽ
được thông báo về sự kiện xảy ra hoặc được cảnh báo nếu như sự khôi phục tự động
của tác tử không thực hiện được hoặc yêu cầu sự trợ giúp từ phía người điều hành.
Mức độ kĩ thuật của mạng sẽ giảm được phần nào các lỗi xuất hiện trên mạng.
Trong khi với các deglet, mà các tác vụ được uỷ quyền khi cần thiết thông qua sự
giao tiếp của tác tử với thực thể uỷ quyền thì với netlet, chúng có thể được gán cho
các tác vụ dựa theo quyền ưu tiên do người thiết kế tự đặt hoặc được khởi động tự
động như là một phần trong mạng, kết cấu tổ chức và mật độ các netlet được điều
khiển bởi các kĩ thuật bảo mật nào đó (ví dụ, tần suất di chuyển đến các nút mạng
có thể được đo và sử dụng để tái tạo hoặc kết thúc các netlet)
Sự bảo dướng duy trì từ xa với các thành phần mạng hỗn hợp Các tác tử di
động cần phải tương tác với các nút mạng thông qua một giao diện mà tại đó cung
cấp đầy đủ các phương tiện: bảo mật, truy nhập gián tiếp đến tài nguyên của nút
mạng và một số dịch vụ đi kèm khác. Giao diện này được gọi là thành phần quản lý
ảo (VMC-Virtual Managed Component): được thiết kế bởi nhà cung cấp thiết bị.
Nó có thể nằm ngay trong thiết bị hoặc trên proxy trong trường hợp thiết bị không
có khả nǎng chấp nhận tác tử di động. Trong thực tế, nhà cung cấp thiết bị mạng
thường trang bị một phương tiên cho VMC là khả nǎng tải được các dữ liệu về trình
điều khiển thiết bị (driver), và điều này làm cho việc quản lý các thiết bị được dễ
dàng hơn. Khi thiết bị được nối mạng, nó sẽ biết được các phương tiện có sẵn được
quảng bá trong mạng. Ví dụ, một tác tử làm nhiệm vụ tìm kiếm có thể sẽ yêu cầu
một danh sách các thiết bị được hỗ trợ trong mạng, người sử dụng dựa vào danh
sách các thiết bị này để kiểm tra một thiết bị cụ thể, nếu như thiết bị có trong danh
sách thì nó được cài đặt ngay trạm. Nó có thể thi hành trên trình duyệt Web hoặc
như một chương trình độc lập. Applet cung cấp dữ liệu và các chức nǎng thành

- Quản lí cấu hình

10
Các dịch vụ. Việc cung cấp dịch vụ (tất nhiên ở đây ta không xét khía cạnh
cấp dịch vụ đến người sử dụng) trong mạng viễn thông cũng như mạng Internet hiện
nay tương đối phức tạp và liên quan đến nhiều thành phần. Công việc này sẽ được
giảm nhẹ khi sử dụng các tác tử di động. Ví dụ, cung cấp PVC trong mạng ATM
(giả sử có mạng IPoATM). Người điều hành sẽ mất rất nhiều thời gian với các khái
niệm phức tạp của PVC để có thể thiết lập được kết nối giữa hai tổng đài ATM, đặc
biệt là hai tổng đài do hai hãng khác nhau cung cấp. Một hệ thống tác tử (hình vẽ
[4]) có thể làm nhiệm vụ này một cách tự động: yêu cầu thiết lập PVC được gán cho
deglet. Các dữ liệu cần thiết được trao đổi giữa các EP (endpoint) deglet lấy thông
tin đó qua VMC sử dụng một loại ontology xác định trứơc. Deglet khác lại thông tin
với người điều hành, các dữ liệu cần thiết được thu gom và hoàn thành kết nối.
Các thành phần mạng. Cấu hình một thiết bị yêu cầu một số các thuộc tính
trong mạng và ở thiết bị phải được đặt tương tự như các thành phần mềm được cài
đặt. Ví dụ, một máy in cần có trình điều khiển nằm trên các trạm làm việc để các
trạm này sử dụng chúng. Hiện nay, người quản lý mạng phải thực hiện tất cả các tác
vụ trên một cách thủ công. Với sự phát triển của công nghệ tác tử thì việc sử dụng
các tác tử di động sẽ đem lại một viễn cảnh các thành phần mạng được thực thi theo
xu hướng cắm và chạy (plug-n-play)
Bây giờ ta phân tích kĩ hơn ví dụ nêu ở trên, cài đặt máy in trong mạng. Tác
vụ này liên quan đến mạng doanh nghiệp gồm một số các trạm làm việc với các yêu
cầu khác nhau: các trình điều khiển cần thiết cho máy in sẽ khác nhau giữa các máy
tính sử dụng Windows và OS/2, giữa các máy Maccintosh và Unix. Bây giờ ta lại
giả sử rằng mạng này lại được nối đến Internet. Để sử dụng được máy in thì các
trạm làm việc cần được cung cấp các trình điều khiển hợp lý. Nếu như máy in có đi
kèm tất cả các trình điều khiển yêu cầu hoặc hệ điều hành đã chứa các trình điều
khiển đó thì công việc cài đặt máy in trên mạng không có gì đáng nói cả, và hoán
toàn có thể quản lí được. Còn trong trường hợp không có các trình điều khiển máy

dụng các tác tử tiên tiến nhất mà không mất mấy công sức, trong khi chúng ta sẽ
phải rất khó khǎn để cập nhật cho các tác tử tĩnh nằm ngay tại nơi cần đo.

12
Các công nghệ hot-swapping (trao đổi thông tin nóng) cũng có thể dựa trên
các đoạn mã di động. Các bảng trao đổi đựoc áp dụng để cập nhật cho các tác tử
quản lí giám sát mạng tĩnh. Nếu các tác tử này là các ứng dụng có thể mở rộng, thì
các module chứa các đoạn mã động (extlet) được sử dụng để cập nhật mà không
tạm ngưng các dịch vụ mà ứng dụng đang cung cấp. Các module di động này không
nhất thiết phải nằm ở thành phần cập nhật, mà chỉ tải về khi cần, không giồng như
việc sử dụng các applet trong các trình duyệt Web. Một lần nữa, tác tử di động lại
chứng tỏ ưu điểm: yêu cầu ít tài nguyên hơn, thêm nữa là quá trình xử lí phân tán,
cách xử lí thông minh phối hợp từ các nguồn tài nguyên khác nhau trong quá trình
đo kiểm, đánh giá.
Một ví dụ cho công nghệ trên, đó là khi server được di chuyển đến môi trường
thực thi tốt hơn, việc quyết định di chuyển sẽ yêu cầu một loạt các phân tích thông
minh của nhiều nhân tố như: yêu cầu dịch vụ, tải trên mạng, tỉ lệ lỗi, chẳng hạn
người điều hành có thể di rời dịch vụ khi nhận thấy tỉ lệ lỗi xuất hiện khi truy nhập
dịch vụ của nó là không chấp nhận được. Một trường hợp khác, server cung cấp các
dịch vụ truyền thông trong một hệ thống phân tán có thể được di chuyển nếu như
các yêu cầu dịch vụ tǎng trong một vùng nào đó. Trong tất cả các trường hợp đó,
server là một tác tử di động không có ràng buộc về kích cỡ, có thể là rất lớn.
Tuy nhiên, khi sử dụng tác tử di động trong việc quản lí hoạt động của mạng,
chúng ta sẽ gặp phải một số vấn đề. Khi sử dụng tràn lan các tác tử di động, mà
không được điều khiển, sẽ gây hiện tượng đầy tràn mạng, chiếm một tỉ lệ lớn trong
tài nguyên mạng. Chính vì thế phần nền cho các tác tử di động hoạt động cần có
một số qui tắc ràng buộc về mật độ tác tử.
- Mạng plug-n-play
Việc sử dụng tác tử di động mở ra một hướng mới cho một mạng thống nhất: mạng
plug-n-play, nó có thể tự động xác định được các thiết bị, các thành phần trong

cổng truyền thông. Phụ lục 2 trình bầy một số giao diện chính của các chương trình

14
sử dụng tác tử di động truy nhập cơ sở dữ liệu Web. Phụ lục 3 trình bầy một số
đoạn mã lệnh trong các phần chính của luận văn.

15
Chương 1 : Lập trình phân tán truyền thống bằng Java
1.1. Sơ lược về ngôn ngữ Java
Java là ngôn ngữ lập trình do hãng Sun Microsystems phát triển và công bố
chính thức vào quý hai năm 1995 [1]. Từ đó, nó đã trở thành một công cụ mạnh mẽ
để phát triển các ứng dụng trên mạng Internet. Ngôn ngữ Java có một số đặc trưng
điển hình sau:
 Tính đơn giản : Ngôn ngữ Java được phát triển từ ngôn ngữ C/C++ và loại bỏ
đi những gì phức tạp của ngôn ngữ này. Ví dụ như trong Java không có khái
niệm đa kế thừa như trong C++. Trình biên dịch và các lớp thư viện có kích
thước rất nhỏ gọn so với các ngôn ngữ lập trình khác.
 Tính hướng đối tượng : Java là ngôn ngữ lập trình thuần hướng đối tượng, do
đó mọi ứng dụng viết trên Java đều phải xây dựng lớp. Trong ngôn ngữ C/C++ ta
có thể xây dựng được hàm dùng chung, không gắn với một lớp thì trong Java chỉ
có thể xây dựng được hàm, gắn với một lớp cụ thể. Việc cho phép đa kế thừa
trong C++ (một lớp con có nhiều lớp cha) gây ra sự khó khăn trong quản lý các
lớp, đã được Java giải quyết bằng khái niệm giao diện.
 Tính phân tán : Trong Java đã thiết kế sẵn hỗ trợ lập trình các ứng dụng phân
tán bằng gói java.net. Ví dụ như với lớp URL của Java, một ứng dụng của
Java có thể dễ dàng được truy xuất từ một máy ở xa. Ngoài ra trong Java còn xây
dựng các lớp thư viện phục vụ cho việc thiết lập kết nối ở mức socket.
 Tính thông dịch : Khác với C/C++, Java là ngôn ngữ lập trình vừa biên dịch
và vừa thông dịch tức là biên dịch mã nguồn và thông dịch để chạy chương trình.
Việc thực hiện chương trình bằng thông dịch giúp tiết kiệm tài nguyên của hệ

các chương trình Java là đáng khích lệ hơn so với tính phức tạp của C/C++.

17
 Tính đa luồng : Ngôn ngữ Java hỗ trợ lập trình ứng dụng đa luồng, cho phép
thực hiện nhiều tiến trình song song và tương tác với nhau, tránh được tính tuần
tự nhàm chán và lãng phí thời gian do phải chờ đợi.
 Tính linh động : Java là ngôn ngữ động, được thiết kế để thích ứng với một
môi trường đang phát triển, các chương trình Java mang nhiều thông tin thực thi
do đó nó có thể tự mở rộng để liên kết với các lớp mới trên một máy chủ ở xa
qua mạng Internet.
Với các đặc trưng tiêu biểu đã nêu ở trên, ngôn ngữ lập trình Java xứng đáng là một
công cụ lý tưởng để các lập trình viên chọn lựa cho việc phát triển các ứng dụng
phân tán.
1.2. Khái niệm lập trình phân tán
Trước khi các máy tính được kết nối mạng, chúng hoạt động một cách độc lập
với nhau. Các chương trình và dữ liệu cần chương trình xử lý phải đặt trên cùng
một máy, có nghĩa là thông thường người ta phải đem các khối dữ liệu cần xử lý
đến nơi có chương trình để xử lý.
Khi mạng máy tính ra đời các máy tính được kết nối với nhau bởi đường
truyền dữ liệu. Các máy tính trong mạng có thể chia sẻ tài nguyên và thiết bị cho
nhau. Hoạt động của các máy tính trong mạng theo hai mô hình chủ yếu là : peer to
peer và clients/server.
Trong mô hình mạng peer to peer, các máy tính trong mạng có thể cho phép
các máy tính khác trong mạng truy nhập vào tài nguyên của mình nhưng chính nó
cũng có thể có nhu cầu truy nhập tài nguyên của các máy tính khác, tức là nó vừa
đóng vai trò của người cung cấp tài nguyên mạng và cũng là người cần sử dụng tài
nguyên mạng.
Trong mô hình mạng clients/server có một hoặc nhiều máy (tùy thuộc vào nhu
cầu quản trị mạng) làm nhiệm vụ cung cấp một số dịch vụ mạng cho các máy tính


19
nối vào chương trình để xử lý hoặc Write, tức là đưa dữ liệu đã xử lý từ chương
trình ra tài nguyên, ví dụ điển hình cho thao tác vào/ra dữ liệu theo mô hình 3 bước
là thao tác với file dữ liệu mà chúng ta khá quen thuộc trong các ngôn ngữ lập trình.
Khi người lập trình muốn thao tác với một file dữ liệu họ tiến hành như sau:
1. Mở file chứa dữ liệu cần sử dụng với các quyền thích hợp.
2. Thực hiện việc đọc dữ liệu từ file ra để xử lý hay đưa dữ liệu đã xử lý ghi
vào file.
3. Đóng file sau khi đã kết thúc sử dụng.
Khi việc trao đổi dữ liệu giữa chương trình với kết nối mạng được đưa vào hệ
thống Unix, người ta mong muốn việc trao đổi dữ liệu giữa các chương trình cũng
sẽ được thực hiện theo mô hình 3 bước trên để tránh cho người lập trình những khó
khăn khi giao tiếp với các tầng bên dưới tầng ứng dụng, để làm được điều đó socket
đã được chọn lựa để sử dụng. Khi hai chương trình muốn giao tiếp với nhau, mỗi
phía sẽ tạo ra một socket, chúng đóng vai trò là các điểm cuối trong một kết nối và
thực hiện nhiệm vụ trao đổi thông tin giữa hai chương trình.
Socket được xem như một tài nguyên hệ thống (dưới góc độ lập trình) mà
chương trình cần giao tiếp, nên chương trình có thể thực hiện giao tiếp với socket
theo mô hình 3 bước giống như việc vào/ra dữ liệu. Như vậy, sự ra đời và phát triển
của socket gắn liền với nhu cầu truyền thông máy tính.
1.3.1.2. Định nghĩa Socket
Có nhiều định nghĩa khác nhau về socket tùy theo cách nhìn nhận của người
sử dụng. Một cách tổng quát nhất có thể định nghĩa Một Socket là một điểm cuối
trong kết nối giữa hai chương trình đang chạy trên mạng.
Theo quan niệm của người phát triển ứng dụng người ta có thể định nghĩa
Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình
yêu cầu dịch vụ và một chương trình cung cấp dịch vụ trên mạng hoặc trên cùng
một máy tính.

20

định đích đến của gói tin:
- Một địa chỉ mạng, để xác định hệ thống (thường là máy tính) sẽ nhận gói tin.
- Một số hiệu cổng để thông báo cho hệ thống đích biết socket nào trên nó sẽ
nhận dữ liệu.
Nhờ hai thông tin này mà gói tin được truyền đến đúng máy tính đích (nhờ
vào địa chỉ mạng) và được dữ liệu được chuyển đến đúng socket đích (nhờ vào số
hiệu cổng của socket).
Các socket thường làm việc theo cặp trong quá trình được các chương trình sử
dụng để trao đổi dữ liệu với nhau qua mạng, một socket đóng vai trò là server,
socket còn lại đóng vai trò như client. Socket phía server được xác định một cổng
cho kết nối mạng, sau đó chờ nghe yêu cầu mà client gửi tới nó trên cổng này, do đó
các chương trình client phải biết trước số hiệu cổng của socket server mà nó cần kết
nối tới. Ví dụ dịch vụ FTP server tạo ra một socket để lắng nghe yêu cầu của client
tại cổng có số hiệu cố định là 21, vì vậy một chương trình client muốn giao tiếp với
FTP server nó cần phải kết nối đến socket có số hiệu cổng 21. Như vậy số hiệu cổng
của socket phía server được xác định bởi chương trình, ngược lại cổng cho socket
phía client được xác định bởi hệ điều hành. Khi một socket phía client gửi một gói
tin cho socket phía server thì trong gói tin đó có chứa hai thông tin về địa chỉ mạng
của hệ thống client và số hiệu cổng của socket phía client, nên phía server hoàn toàn
có thể gửi thông tin trả lời cho client dựa vào hai thông tin này. Quá trình trao đổi
dữ liệu của hai chương trình ứng dụng qua mạng thông qua các socket có thể được
mô tả bằng các bước sau:
1. Chương trình phía server tạo ra một socket, socket này được chương trình
gắn với một số hiệu cổng cố định trên server. Sau khi đựợc tạo ra , socket server sẽ
chờ nghe yêu cầu từ phía client trên số hiệu cổng này.

22
2. Chương trình phía client có nhu cầu kết nối tới chương trình server, nó cũng
tạo ra một socket, socket này được hệ điều hành gán cho một số hiệu một cổng
2

của ứng dụng chạy trên máy client, đồng thời ứng dụng client sẽ cung cấp cho
socket của nó địa chỉ mạng của máy server và số hiệu cổng của dịch vụ mà nó cần
kết nối tới và yêu cầu socket thực hiện kết nối.
Khi server nhận được yêu cầu kết nối từ client, nếu chấp nhận nó sẽ tạo ra một
socket mới được gán một số hiệu cổng bởi hệ điều hành nhưng khác với số hiệu
cổng mà nó đang chờ nghe yêu cầu từ phía client, sở dĩ server làm như vậy bởi vì
nó cần duy trì số hiệu cổng cũ để tiếp tục lắng nghe yêu cầu từ phía client, trong
khi nó cần thêm một socket mới để trả lời yêu cầu của phía client, sau đó dịch vụ
phía server sẽ gửi thông báo chấp nhận kết nối cho client cùng thông tin về số hiệu
cổng mới của socket mà nó dùng để giao tiếp với phía client.

Hình 1.3. Server trả lời yêu cầu của client trên một cổng mới
Với ứng dụng client, nếu kết nối được chấp nhận nghĩa là socket của nó đã
được tạo ra thành công và nó có thể sử dụng socket để giao tiếp với dịch vụ trên
máy server bằng cách đọc và ghi socket theo cách giao tiếp với một tài nguyên
thông thường trên máy tính.
 Socket hỗ trợ giao thức mạng UDP
- Phía Server: Khi một dịch vụ trên máy server hoạt động nó sẽ tạo ra một
socket, dịch vụ sẽ đăng ký cho socket một số hiệu cổng cố định với máy server và
lắng nghe yêu cầu từ phía client trên cổng này. 24
- Phía client: Nó biết địa chỉ mạng của máy server mà dịch vụ đang chạy trên đó và
số hiệu cổng socket server đang chờ nghe yêu cầu từ phía client, khi muốn giao tiếp
với dịch vụ trên máy server, ứng dụng phía client cũng tạo ra một socket chứa địa
chỉ máy client và số hiệu cổng của ứng dụng chạy trên máy client, đồng thời ứng
dụng phía client sẽ cung cấp cho socket của nó địa chỉ mạng của máy server và số
hiệu cổng của dịch vụ mà nó cần giao tiếp.
Khi ứng dụng phía client muốn truyền tin đến dịch vụ trên server nó sẽ chuyển

DatagramSocket
DatagramSocket
Hình 1.5. Các lớp socket trong Java
1.3.2. Phương pháp lập trình servlet
1.3.2.1 Khái niệm servlet
Servlet là một ứng dụng Java chạy phía server. Servlet có thể được nhúng trên
nhiều server khác nhau. Servlet được sử dụng rộng rãi trong các HTTP server.
Servlet là một thay thế hiệu quả cho CGI scripts, chúng cung cấp một cơ chế dễ
dàng tạo ra các tài liệu động và chạy nhanh hơn. Đặc trưng của servlet là lập trình
phía server với các API đặc thù hệ thống, chúng được viết bằng Servlet API, một
chuẩn mở rộng của Java, do đó servlet được dùng để xử lý các yêu cầu HTTP từ
phía client.
Servlet là đối tượng nhúng trên trình chủ Web, thực hiện xử lý yêu cầu và tạo
ra các trang Web động trả về máy khách. Để chạy được servlet cần có các trình chủ
Web hiểu Java và hỗ trợ triệu gọi servlet như Tomcat, JRun, Web logic, JWS,

26
jsdk , mặc dù vậy để biên dịch và tạo ra các lớp servlet (.class) chúng ta chỉ cần
đến trình biên dịch của bộ JDK (Java Development Kit), có bổ sung thêm gói
servlet.jar của trình Web chủ tương ứng mà không cần đến chính các trình
chủ Web.
1.3.2.2. Cấu trúc servlet
Các lớp thư viện của servlet nằm trong gói phần mềm servlet.jar, gói
phần mềm này không được tích hợp sẵn trong bộ JDK mà nó được cung cấp bởi các
trình chủ web như Tomcat, jsdk, , trong đó có các lớp thư viện cần thiết như
GenericServlet, HttpServlet hỗ trợ cho người lập trình có thể xây dựng
các ứng dụng servlet được kế thừa từ những lớp servlet thư viện hiện có. Việc đầu
tiên để xây dựng một ứng dụng servlet là chọn một lớp servlet thư viện hiện có để
kế thừa. Ví dụ như kế thừa từ lớp GenericServlet, đây là lớp cơ bản nhất và là
thủy tổ của các lớp servlet.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status