MỤC LỤC CHƯƠNG MỘT: GIỚI THIỆU NỘI DUNG ĐỀ TÀI 3 I. Hệ THốNG QUảN LÝ THƯ VIệN. 3 1. Nhiệm vụ của một hệ thống quản lý thư viện : 3 2. Tổ chức của đa số hệ thống thư viện hiện nay : 3 3. Hướng phát triển của hệ thống thư viện hiện đại : 4 II. HƯớNG THựC THI CủA Đề TÀI : 5 CHƯƠNG HAI: PHÂN TÍCH VÀ LỰA CHỌN MÔ HÌNH SỬ DỤNG 6 I. CÁC CấU HÌNH CƠ Sở Dữ LIệU CLIENTSERVER : 6 1. Mô hình cơ sở dữ liệu tập trung (Centralized database model): 6 2. Mô hình cơ sở dữ liệu theo kiểu file – server( File – server database model) : 7 3. Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model) : 7 4. Mô hình cơ sở dữ liệu ClientServer (ClientServer database model) : 8 5. Distributed database model (Mô hình cơ sở dữ liệu phân tán): 9 II. MÔ HÌNH ĐƯợC Sử DụNG : 9 1. Server: 10 2. Database : 10 CHƯƠNG BA: KIẾN TRÚC MẠNG VÀ MÔ HÌNH TCPIP 11 I. KIếN TRÚC MạNG VÀ NHữNG VấN Đề LIÊN QUAN: 11 1. Sự phân cấp Protocol: 11 2. Kiến trúc mạng 11 II. MÔ HÌNH TCPIP (TRANSMISSION CONTROL PROTOCOL INTERNET PROTOCOL): 14 1. Hosttonetwork layer (Physical layer): 15 2. Internet layer: 15 3. Transport layer: 15 4. Application layer (Process layer): 16 CHƯƠNG BỐN: CƠ CHẾ TRUYỀN NHẬN TRONG JAVA 17 I. CÁC KIếN THứC CƠ BảN Về NETWORKING 17 II. NETWORKING: 20 1. Giao tiếp giữa phần hiện thực client và Browser ở máy local: 21 2. Sockets 22 3. Threads , Synchronization và Exceptions: 28 CHƯƠNG NĂM: CƠ SỞ DỮ LIỆU 33 I. JDBC: 33 1. JDBC là gì ? 33 2. Cấu trúc JDBC : 34 3. ODBC và JDBC : 35 4. Sử dụng JDBC driver : 35 II. SỬ DỤNG JDBC ĐỂ TRUY SUẤT CƠ SỞ DỮ LIỆU: 36 1. Đang ký Cơ sở dữ liệu vơi JDBC: 36 III. KếT NốI TớI CƠ Sở Dữ LIệU: 36 IV. TRUY SUấT CƠ Sở Dữ LIệU: 37 V. ĐốI TƯợNG RESULTSET: 37 VI. ĐốI TƯợNG RESULTSETMETADATA: 39 VII. ĐốI TƯợNG DATABASEMETADATA: 40 VIII. LấY THÔNG TIN TRÊN TABLE: 40 CHƯONG SÁU: THIẾT KẾ CƠ SỞ DỮ LIỆU 42 I. GIỚI THIỆU CÔNG CỤ HỖ TRỢ THIẾT KẾ UML: 42 1. Khái quát phương thức UML: 42 2. Chiến lược phương pháp học: 45 II. HIệN THựC THIếT Kế CHƯƠNG TRÌNH BằNG RATIONAL ROSE: 53 CHƯƠNG BẢY: HIỆN THỰC CHI TIẾT 54 I. NGUYÊN TắC HOạT ĐộNG: 54 1. Các loại User và quyền, cách đăng ký: 54 2. Cơ chế login. 55 3. Cơ chế mượn sách. 55 4. Cơ chế xử lý vi phạm. 55 II. MÔ Tả CƠ Sở Dữ LIệU: 55 III. MÔ Tả CHƯƠNG TRÌNH: 59 1. Tổng quan: 59 2. Mô tả chi tiết về cơ chế và quá trình cập nhật dữ liệu : 61 3. Mô tả chi tiết các dữ liệu đặc biệt. 78 4. Cơ chế timeout : 79 5. Server 80 6. Client: 80 7. Giao tiếp giữa client và server: 81 CHƯƠNG TÁM: KIẾN TRÚC MỚI VÀ HƯỚNG PHÁT TRIỀN CHƯƠNG TRÌNH 83 I. PHƯƠNG THứC RMI 83 1. Đặc điểm RMI 83 2. Phát triển mã cho RMI: 83 II. KếT QUả CHƯƠNG TRÌNH: 84 1. Những điểm chương trình làm được : 84 2. Những điểm chưa làm được và hướng giải quyết: 84 III. HƯớNG PHÁT TRIểN CHƯƠNG TRÌNH : 85 CHƯƠNG CHÍN: SOURCE CHƯƠNG TRÌNH 86 I. SERVER: 86 II. CLIENT: 143 TÀI LIỆU THAM KHẢO 267
Trang 1quản lý thư viện trên mạng
MỤC LỤC
CHƯƠNG MỘT: GIỚI THIỆU NỘI DUNG ĐỀ TÀI 3
I HỆ THỐNG QUẢN LÝ THƯ VIỆN 3
1 Nhiệm vụ của một hệ thống quản lý thư viện : 3
2 Tổ chức của đa số hệ thống thư viện hiện nay : 3
3 Hướng phát triển của hệ thống thư viện hiện đại : 5
II H ƯỚNG THỰC THI CỦA ĐỀ TÀI : 6
CHƯƠNG HAI: PHÂN TÍCH VÀ LỰA CHỌN MÔ HÌNH SỬ DỤNG 7
I CÁC CẤU HÌNH CƠ SỞ DỮ LIỆU CLIENT/SERVER : 7
1 Mô hình cơ sở dữ liệu tập trung (Centralized database model): 7
2 Mô hình cơ sở dữ liệu theo kiểu file – server( File – server database model) : 8
3 Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model) : 9
4 Mô hình cơ sở dữ liệu Client/Server (Client/Server database model) : 9
5 Distributed database model (Mô hình cơ sở dữ liệu phân tán): 12
II MÔ HÌNH ĐƯỢC SỬ DỤNG : 12
6 Server: 13
7 Database : 13
CHƯƠNG BA: KIẾN TRÚC MẠNG VÀ MÔ HÌNH TCP/IP 15
III K IẾN TRUC MẠNG VÀ NHỮNG VẤN ĐỀ LIÊN QUAN : 15
8 Sự phân cấp Protocol: 15
9 Kiến trúc mạng 16
IV M Ô HÌNH TCP/IP (T RANSMISSION C ONTROL P ROTOCOL / I NTERNET P ROTOCOL ):.19 10 Host-to-network layer (Physical layer): 21
11 Internet layer: 21
12 Transport layer: 22
13 Application layer (Process layer): 23
CHƯƠNG BỐN: CƠ CHẾ TRUYỀN NHẬN TRONG JAVA 24
V C ÁC KIẾN THỨC CƠ BẢN VỀ N ETWORKING .24
VI NETWORKING: 29
14 Giao tiếp giữa phần hiện thực client và Browser ở máy local: 29
15 Sockets 31
16 Threads , Synchronization và Exceptions: 40
CHƯƠNG NĂM: CƠ SỞ DỮ LIỆU 47
I JDBC: 47
17 JDBC là gì ? 47
18 Cấu trúc JDBC : 48
19 ODBC và JDBC : 50
20 Sử dụng JDBC driver : 51
II SỬ DỤNG JDBC ĐỂ TRUY SUẤT CƠ SỞ DỮ LIỆU: 51
21 Đang ký Cơ sở dữ liệu vơi JDBC: 51
VII K ẾT N ỐI T ỚI C Ơ SỞ DỮ LIỆU : 52
VIII TRUY SUẤT CƠ SỞ DỮ LIỆU: 53
IX ĐỐI TƯỢNG RESULTSET: 53
X Đ ỐI T ƯỢNG R ESULT S ET M ETA D ATA : 56
XI ĐỐI TƯỢNG DATABASEMETADATA: 57
XII LẤY THÔNG TIN TRÊN TABLE: 58
CHƯONG SÁU: THIẾT KẾ CƠ SỞ DỮ LIỆU 60
Trang 2XIII GIỚI THIỆU CÔNG CỤ HỖ TRỢ THIẾT KẾ UML: 60
22 Khái quát phương thức UML: .60
23 Chiến lược phương pháp học: 65
XIV H IỆN THỰC THIẾT KẾ CHƯƠNG TRÌNH BẰNG R ATIONAL R OSE : 76
CHƯƠNG BẢY: HIỆN THỰC CHI TIẾT 78
XV NGUYÊN TẮC HOẠT ĐỘNG: 78
24 Các loại User và quyền, cách đăng ký: 78
25 Cơ chế login 79
26 Cơ chế mượn sách 79
27 Cơ chế xử lý vi phạm 80
XVI MÔ TẢ CƠ SỞ DỮ LIỆU: 80
XVII MÔ TẢ CHƯƠNG TRÌNH: 86
28 Tổng quan: 86
29 Mô tả chi tiết về cơ chế và quá trình cập nhật dữ liệu : 87
30 Mô tả chi tiết các dữ liệu đặc biệt 116
31 Cơ chế timeout : 116
32 Server 118
33 Client: 119
34 Giao tiếp giữa client và server: 120
CHƯƠNG TÁM: KIẾN TRÚC MỚI VÀ HƯỚNG PHÁT TRIỀN CHƯƠNG TRÌNH 123
XVIII PHƯƠNG THỨC RMI 123
35 Đặc điểm RMI 123
36 Phát triển mã cho RMI: 123
XIX K ẾT QUẢ CHƯƠNG TRÌNH : 124
37 Những điểm chương trình làm được : 124
38 Những điểm chưa làm được và hướng giải quyết: 125
XX HƯỚNG PHÁT TRIỂN CHƯƠNG TRÌNH : 126
CHƯƠNG CHÍN: SOURCE CHƯƠNG TRÌNH 128
XXI SERVER: 128
XXII CLIENT: 213
TÀI LIỆU THAM KHẢO 397
Trang 3CHƯƠNG MỘT: GIỚI THIỆU NỘI DUNG ĐỀ TÀI
I Hệ thống quản lý thư viện.
1 Nhiệm vụ của một hệ thống quản lý thư viện :
Một hệ thống quản lý thư viện có nhiệm vụ quản lý kho tư liệu mà thư viện hiện có, phục vụ công tác tra cứu, nghiên cứu của độc giả Hệ thống quản lý thư viện phải nắm giữ được số lượng sách trong thư viện, phân loại sách theo từng chương mục cụ thể để có thể
dễ dàng mã hoá, tiện cho việc truy tìm Ngoài ra hệ thống cũng phải biết được tình trạng tài liệu hiện tại, phải được cập nhật thông tin mỗi khi bổ sung các tư liệu mới hoặc thanh lý các tư liệu không có giá trị Đối với việc phục vụ tra cứu, hệ thống phải đưa ra mục lục phân loại các sách có trong thư viện, sao cho độc giả dễ dàng tìm được những tư liệu cần thiết, bên cạnh đó hệ thống cũng phải quản lý được những độc giả có yêu cầu mượn tư liệu Thông thường việc phân loại sách và quản lý độc giả là những công việc phức tạp nhất trong hệ thống quản lý thư viện
2 Tổ chức của đa số hệ thống thư viện hiện nay :
Các hệ thống thư viện của chúng ta hiện nay thường được tổ chức và hoạt động theo cách như sau :
1 Bổ sung, bảo quản và thanh lý sách :
Sách nhập về được đăng ký tại phòng phân loại – biên mục Tại đây cuốn sách sẽ được xem xét nội dung, thể loại qua đó phân loại cuốn sách theo chuyên mục sẵn có trong thư viện Đồng thời cuốn sách cũng được gắn với một mã số để tiện cho việc tìm kiếm, qua mã số này nhân viên thư viện có thể biết được cuốn sách nằm ở
vị trí nào trong kho lưu trữ Đôi khi một cuốn sách có hai loại mã số, một để phục vụ cho việc sắp xếp và tìm kiếm trong kho, một để quản
lý về thời gian sách nhập vào thư viện, tiện cho việc bảo quản, thanh
lý Sau khi cuốn sách có mã số, nó sẽ được cung cấp một thẻ mục
Trang 4lục, trên đó thường có tên sách, nội dung, tác giả, nhà xuất bản, năm xuất bản… Đối với hệ thống tra cứu sách thủ công, thẻ mục lục là một tấm cạc được đặt trong hệ thống mục lục của thư viện Với các
hệ thống có trang bị máy tính, đó là những record trong cơ sở dữ liệu của thư viện Theo thời gian, những cuốn sách bị hư hỏng hoặc nội dung không còn phù hợp nữa sẽ được đem ra thanh lý, loại bỏ khỏi
hệ thống
2 Phục vụ bạn đọc :
Khi có nhu cầu tìm hiểu tư liệu, độc giả sẽ đăng ký làm thẻ với thư viện và sẽ được cấp phiếu đăng ký Sau khi điền một số thông tin cá nhân và được chứng nhận của cơ quan có thẩm quyền, phiếu đăng ký sẽ được thư viện xác nhận và lưu giữ, đồng thời độc giả cũng được cấp thẻ thư viện Trên thẻ thư viện có mã số bạn đọc, qua đó thư viện có thể tìm lại thông tin về độc giả nhanh chóng khi cần thiết, và nói chung thư viện sẽ quản lý bạn đọc qua mã số này
Khi có nhu cầu nghiên cứu, bạn đọc sẽ dò tìm mã số của tư liệu mình muốn qua hệ thống mục lục theo chủ đề, nội dung, tác giả bằng tay hoặc bằng máy tính (nếu có) Tiếp theo bạn đọc phải đăng
ký mượn sách với thư viện qua phiếu mượn sách Trên đó phải ghi rõ tên và mã số bạn đọc, tên và mã số sách mượn, ngày mượn và ngày trả Sau khi xác nhận tính đúng đắn của phiếu, nhân viên thư viện sẽ căn cứ vào mã số cuốn sách để tìm ra cuốn sách trong kho tư liệu và đem cho độc giả Định kỳ, nhân viên thư viện phải kiểm tra lại các phiếu mượn sách để thống kê số sách mượn, sách còn trong thư viện, qua đó thông báo cho độc giả biết cuốn sách nào đã hết, lúc nào sẽ
có khi độc giả yêu cầu Nhân viên cũng phải kiểm tra những độc giả nào vi phạm quy chế, chẳng hạn đã mượn quá số lượng sách cho phép, sách mượn quá hạn trả, làm mất sách để có biện pháp xử lý thích ứng
Trang 53 Nhược điểm của hệ thống quản lý thư viện trên :
Hệ thống trên dùng nhiều đến giấy tờ, vì vậy việc bảo quản, truy tìm mất nhiều thời gian Hệ thống dễ mắc phải sai sót cũng như chưa tiện lợi với bạn đọc Công việc quản lý độc giả rất khó khăn khi
số lượng bạn đọc lớn, bởi việc kiểm tra thời gian mượn trả sách, số lượng sách mượn là thủ công, vì vậy rất dễ thất thoát tư liệu Việc phân loại sách và tạo ra mục lục cần khá nhiều thời gian Ngay cả đối với một số thư viện dùng hệ thống máy tính để phục vụ tra cứu
và quản lý cũng còn nhiều nhược điểm như : giao diện người sử dụng phức tạp, phần mềm chỉ sử dụng trên máy đơn hoặc mạng cục
bộ, tổ chức cơ sở dữ liệu thường bị hạn chế về dung lượng cũng như
về tốc độ vì đa số không phải là những cơ sở dữ liệu chuẩn của các hãng phần mềm Mặc dù có máy tính thì việc đăng ký mượn sách cũng phải tiến hành bằng tay do đó chưa tận dụng hết được các ưu điểm của máy tính
3 Hướng phát triển của hệ thống thư viện hiện đại :
Ngày nay cùng với sự phát triển của máy tính, sự ra đời của mạng Internet, các hệ thống thư viện sẽ có nhiều đổi mới Đa số các công việc sẽ được tiến hành trên máy tính, từ việc phân loại, tra cứu cho đến mượn sách sẽ được tiến hành trên máy tính với các ưu điểm
là nhanh hơn, chính xác hơn và thuận lợi hơn Người ta có thể không cần phải đến thư viện để tra cứu sách mà có thể phải làm tại nhà, với điều kiện là máy tính của anh ta kết nối vào mạng có hệ thống máy tính của thư viện Việc quản lý bạn đọc tiến hành bằng máy tính sẽ đơn giản và chính xác hơn nhiều Thậm chí, có thể thực hiện một thư viện "từ xa", nghĩa là bạn đọc có thể đọc cuốn sách mà mình thích ngay tại nhà, thông qua mạng vi tính Mặt khác, với sự hỗ trợ của công nghệ mutlimedia trên máy tính, độc giả có thể sẽ không còn cảm thấy khô khan khi đọc những trang sách trên máy tính nữa, mà
có thể có các đoạn nhạc, phim, ảnh và từ điển thuật ngữ liên kết, tương tự như các trang Web sống động…
Trang 6II Hướng thực thi của đề tài :
Hiện nay có rất nhiều các phần mềm phục vụ cho việc quản lý thư viện được viết bằng nhiều ngôn ngữ khác nhau Từ những phần mềm đầu tiên chỉ có thể sử dụng trên máy đơn, nghĩa là cả cơ sở dữ liệu là chương trình truy xuất phải được cài đặt trên cùng một máy đến các phần mềm sử dụng trên mạng, nghĩa là các máy truy xuất tới cùng một cơ sở dữ liệu được cài đặt sẵn trên một maý thì những phần mềm này đều mắc phải những nhược điểm là phải có phần mềm đi kèm mới sử dụng được Và thường thì những phần mềm này
do thư viện quản lý, vì thế độc giả muốn sử dụng thì phải đến thư viện
Nếu như chúng ta có thể truy xuất cơ sở dữ liệu của thư viện thông qua mạng máy tính mà không cần phải cài đặt bất cứ phần mềm chuyên biệt nào thì thật thuận tiện Ngày nay nhờ sự tiến bộ của các ngôn ngữ lập trình và các tiện ích trên mạng, chúng ta có thể làm được điều này Và đề tài sẽ đưa ra một hướng thực thi việc truy xuất cơ sở dữ liệu từ xa thông qua một công cụ hổ trợ sẵn của mạng Internet là các trình duyệt Web Việc hiện thực sẽ được áp dụng đối với hệ thống thư viện như là một thí dụ điển hình Chương tiếp theo chúng ta sẽ xem xét các mô hình quản lý cơ sở dữ liệu và sẽ chọn mô hình cũng như ngôn ngữ thực thi
Trang 7CHƯƠNG HAI: PHÂN TÍCH VÀ LỰA CHỌN MÔ HÌNH
SỬ DỤNG
I Các cấu hình cơ sở dữ liệu Client/Server :
Nhìn chung mọi ứng dụng cơ sở dữ liệu đều bao gồm các phần:
1 Thành phần xử lý ứng dụng (Application processing components)
2 Thành phần phần mềm cơ sở dữ liệu (Database software components)
3 Bản thân cơ sở dữ liệu (The database itself).Các mô hình về xử lý cơ sở dữ liệu khác nhau là bởi các trường hợp của ba loại thành phần nói trên định vị ở đâu Thông thường có năm mô hình kiến trúc dựa trên cấu hình phân tán về truy nhập dữ liệu của hệ thống máy tính Client/Server :
4 Mô hình cơ sở dữ liệu tập trung (Centralized database model)
5 Mô hình cơ sở dữ liệu theo kiểu file-server(File – server database model)
6 Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model)
7 Mô hình cơ sở dữ liệu Client/Server (Clent/Server database model)
8 Mô hình cơ sở dữ liệu phân tán (Distributed database model)
1 Mô hình cơ sở dữ liệu tập trung (Centralized database
model):
Trong mô hình này các thành phần xử lý ứng dụng, phần mềm
cơ sở dữ liệu và bản thân cơ sở dữ liệu đều ở trên cùng một bộ xử lý
Trang 8Ví dụ người dùng máy tính cá nhân có thể chạy các chương trình ứng dụng có sử dụng phần mềm cơ sở dữ liệu Oracle để truy nhập tới cơ sở dữ liệu nằm trên điã cứng của máy tính cá nhân đó Từ khi các thành phần ứng dụng, phần mềm cơ sở dữ liệu và bản thân cơ sở
dữ liệu cùng nằm trên một máy tính thì ứng dụng đã thích hợp với
2 Mô hình cơ sở dữ liệu theo kiểu file – server( File – server database model) :
Trong mô hình cơ sở dữ liệu theo kiểu file – server các thành phần ứng dụng và phần mềm cơ sở dữ liệu ở trên một hệ thống maý tính và các file vật lý tạo nên cơ sở dữ liệu nằm trên hệ thống maý tính khác Một cấu hình như vậy thường được dùng trong môi trường cục bộ, trong đó một hay nhiều hệ thống máy tính đóng vai trò của server, lưu dữ các file dữ liệu cho hệ thống máy tính khác thâm nhập tới Trong môi trường file – server, phần mềm mạng được thi hành
và làm cho phần mềm ứng dụng cũng như phần mềm cơ sở dữ liệu trên hệ thống của người dùng cuối coi các file hoặc cơ sở dữ liệu trên file server thực sự như là trên máy tính chính họ
Mô hình file server rất giống với mô hình tập trung Các file
cơ sở dữ liệu nằm trên máy khác vơí các thành phần ứng dụng và phần mềm cơ sở dữ liệu Tuy nhiên các thành pphần ứng dụng và các phần mềm cơ sở dữ liệu có thể có cùng một thiết kế để vận hành một môi trường tập trung Thực chất phần mềm mạng đã làm cho phần
Trang 9mềm ứng dụng và phần mềm cơ sở dữ liệu tưởng rằng chúng đang truy xuất cơ sở dữ liệu trong môi trường cục bộ Một môi trường như vậy có thể phức tạp hơn mô hình tập trung bởi vì phần mềm mạng có thể phải thực hiện cơ chế đồng thời cho phép nhiều người sử dụng cuối có thể truy nhập vào cùng cơ sở dữ liệu.
3 Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model) :
Trong một mô hình khác trong đo một cơ sở dữ liệu ở xa có thể được truy cập bởi phần mềm cơ sở dữ liệu, được gọi là xử lý dữ liệu từng phần Với mô hình này, người sử dụng có thể tại một máy tính cá nhân kết nối với hệ thống máy tính ở xa nơi có dữ liệu mong muốn Người sử dụng sau đó có thể tác động trực tiếp đến phần mềm chạy trên máy ở xa và tạo yêu cầu để lấy dữ liệu từ cơ sở dữ liệu đó Người sử dụng cũng có thể chuyển dữ liệu từ máy tính ở xa về chính máy tính của mình và vào điã cứng và có thể thực hiện việc sao chép bằng phần mềm cơ sở dữ liệu trên máy cá nhân
Với cách tiếp cận này, người sử dụng phải biết chắc chắn là
dữ liệu nằm ở đâu và làm như thế nào để truy nhập và lấy dữ liệu từ một máy tính ở xa Phần mềm ứng dụng đi kèm cần phải có trên cả hai hệ thống máy tính để kiểm soát để kiểm soát sự truy cập và chuyển dữ liệu giữa hai hệ thống Tuy nhiên, phần mềm cơ sở dữ liệu chạy trên hai máy không cần biết rằng việc xử lý cơ sở dữ liệu
từ xa đang diễn ra vì người sử dụng tác động tới chúng một cách độc lập
4 Mô hình cơ sở dữ liệu Client/Server (Client/Server database model) :
Trong mô hình cơ sở dữ liệu Client/Server, cơ sở dữ liệu nằm trên một máy khác với một máy có thành phần xử lý ứng dụng Nhưng phần mềm cơ sở dữ liệu được tách ra giữa hệ thống Client chạy các chương trình ứng dụng và hệ thống Server lưu trữ dữ liệu
Trang 10Trong mô hình này, các thành phần xử lý ứng dụng trên hệ thống Client đưa ra yêu cầu cho phần mềm cơ sở dữ liệu trên máy client, phần mềm này sẽ kết nối với phần mềm cơ sở dữ liệu chạy trên Server Phần mềm cơ sở dữ liệu trên Server sẽ truy cập vào cơ sở dữ liệu và gửi trả kết quả cho máy Client.
Mới nhìn , mô hình cơ sở dữ liệu Client/Server có vẻ giống như mô hình file-server, tuy nhiên mô hình Client/Server có rất nhiều thuận lợi hơn mô hình file-server Với mô hình file- server, thông tin gắn với sự truy cập cơ sở dữ liệu vật lý phải chạy trên toàn mạng Một giao tác yêu cầu nhiều sự truy cập dữ liệu có thể gây ra tắc nghẽn lưu lượng truyền trên mạng
Giả sử một người dùng cuối tạo một query để lấy dữ liệu tổng
số, yêu cầu đòi hỏi lấy dữ liệu từ 1000 bản ghi, với cách tiếp cận server nội dung của tất cả 1000 bản ghi phải đưa lên mạng, vì phần mềm cơ sở dữ liệu chạy trên máy người sử dụng phải truy cập từng bản ghi để thỏa mãn yêu cầu của người sử dụng Với cách tiếp cận
file-cơ sở dữ liệu Client/Server, chỉ có query khởi động ban đầu và kết quả cuối cùng đưa lên mạng, phần mềm cơ sở dữ liệu chạy trên máy lưu giữ cơ sở dữ liệu sẽ truy nhập các bản ghi cần thiết, xử lý chúng
và gọi các thủ tục cần thiết để đưa ra kết quả cuối cùng
4 Fron-end software
Trong mô hình cơ sở dữ liệu Client/Server, thường nói đến các phần mềm front-end software và back-end software Front-end software được chạy trên một máy tính cá nhân hoặc một workstation
và đáp ứng yêu cầu đơn lẽ riêng biệt, phần mềm này đóng vai trò của Client trong ứng dụng cơ sở dữ liệu Client/Server và thực hiện các chức năng hướng tới nhu cầu người dùng cuối cùng, phần mềm Front-end software thường được chia thành các loại sau :
9 End user database software : Phần mềm cơ sở
dữ liệu này có thể được thực hiện bởi người sử dụng cuối trên chính hệ thống của họ để truy
Trang 11nhập các cơ sở dữ liệu cục bộ nhỏ cũng như kết nối với các cơ sở dữ liệu lớn hơn trên cơ sở dữ liệu Server.
10 Simple query and reporting software : Phần mềm này được thiết kế để cung cấp các công cụ
dễ dùng hơn trong việc lấy dữ liệu từ cơ sở dữ liệu và tạo các báo cáo đơn giản từ cơ sở dữ liệu
đã có
11 Data analysis software : Phần mềm này cung cấp các hàm về tìm kiếm, khôi phục, chúng có thể cung cấp các phân tích phức tạp cho người dùng
12 Application development tools : Các công cụ này cung cấp các khả năng về ngôn ngữ mà các nhân viên hệ thống thông tin chuyên nghiệp sử dụng để xây dựng các ứng dụng cơ sở dữ liệu của họ Các công cụ ở đây bao gồm các công cụ
về thông dịch, biên dịch đơn đến các công cụ CASE (Computer Aided Software Engineering), chúng tự động tất cả các bước trong quá trình phát triển ứng dụng và sinh ra chương trình cho các ứng dụng cơ sở dữ liệu
13 Database administration Tools : Các công cụ này cho phép người quản trị cơ sở dữ liệu sử dụng máy tính cá nhân hoặc trạm làm việc để thực hiện việc quản trị cơ sở dữ liệu như định nghĩa các cơ sở dữ liệu, thực hiện lưu trữ hay phục hồi
Trang 125 Back-end software
Phần mềm này bao gồm phần mềm cơ sở dữ liệu Client/Server và phần mềm mạng chạy trên máy đóng vai trò là Server cơ sở dữ liệu
5 Distributed database model (Mô hình cơ sở dữ liệu phân tán):
Cả hai mô hình File – Server và Client/Server đều giả định là
dữ liệu nằm trên một bộ xử lý và chương trình ứng dụng truy nạp dữ liệu nằm trên một máy khác, còn mô hình cơ sở dữ liệu phân tán lại giả định bản thân cơ sở dữ liệu có ở trên nhiều máy khác nhau
II Mô hình được sử dụng :
Qua các mô hình cơ sở dữ liệu trên, dễ thấy mô hình Client/Server là mô hình phù hợp các yêu cầu đặt ra nhất Vấn đề ở đây là chúng ta sẽ hiện thực mô hình này bằng ngôn ngữ gì và hiện thực như thế nào Các ngôn ngữ lập trình có thể xây dựng những giao diện đẹp và thuận tiện thì thường không có cơ sở dữ liệu tốt đi kèm, và thường hạn chế khả năng khi sử dụng trên mạng diện rộng Các phần mềm về cơ sở dữ liệu có thể sử dụng mô hình Client/Server thì thường đòi hỏi có tính chuyên nghiệp cao Và hầu hết các biện pháp này thì đều có nhược diểm là phải có sự cài đặt trên máy đơn trước khi móc nối với Server Ngôn ngữ Java đưa ra một hướng giải quyết đơn giản các vấn đề trên Với việc thực thi các Apllet nhúng trong trang Web, chúng ta không cần có bất cứ một sự cài đặt nào mà vẫn sử dụng được các tính năng của chương trình (Với điều kiện là có một trình duyệt Web và máy tính đã được nối mạng) Do tính năng mạng là được cung cấp sẵn nên Java có thể dùng trên mạng Internet dễ dàng Với tính độc lập nền, người sử dụng không phải e ngại việc phần mềm không tương thích với hệ điều hành của mình Đặc biệt là Java có thể kết nối với hầu hết các
cơ sở dữ liệu chuẩn của các hãng phần mềm thông qua JDBC, vì vậy
Trang 13cơ sở dữ liệu của hệ thống có thể xây dựng bằng hệ cơ sở dữ liệu chuẩn, chẳng hạn Oracle để quản lý dữ liệu một cách chặt chẽ( Ở đây chúng ta sẽ dùng cơ sở dữ liệu là Ms Access trong môi trường Window 95) Mô hình quản lý thư viện được xây dựng như sau :
Người quản lý thư viện sẽ thông qua một Applet để quản lý
hệ thống thư viện Chương trình này sẽ cho phép administrator bổ sung sách vào thư viện, hủy bỏ sách, đăng ký bạn đọc, quản lý việc mượn sách của bạn đọc Nếu thực hiện việc đọc sách từ xa, thì chương trình này sẽ tạo ra "tài khoản" để độc giả có thể truy cập tư liệu qua mạng Cũng có thể đưa chức năng quản lý, phân loại các trang Web vào hệ thống dữ liệu của thư viện
Người sử dụng sẽ tra cứu hệ thống mục lục của thư viện thông qua một applet trên một trang Web Như vậy chỉ cần một trình duyệt hiểu Java là người đọc có thể tra cứu mục lục thư viện tại bất cứ đâu Applet này sẽ tạo ra hệ thống menu cho phép người đọc lựa chọn cách thức tra cứu sách : theo tên sách, theo tác giả, nhà xuất bản, theo nội dung,… Tuy nhiên nếu người đọc muốn mượn sách về nhà, thì phải liên hệ với người quản lý thư viện và thực hiện việc làm thủ tục mượn sách thông qua Applet của Administrator đã nói ở trên Tương lai nếu chúng ta lưu trữ tất cả các tư liệu trên đĩa từ thì có thể cho phép người đọc đọc tư liệu từ xa qua applet này, tất nhiên là sau khi người đọc đã đăng ký và được cấp một mật khẩu cho phép truy cập
6 Server:
Đây là một chương trình Server đúng nghĩa Chương trình này
có nhiệm vụ sẽ lắng nghe và phục vụ các yêu cầu của User và Administrator, là cầu nối trung gian tới cơ sở dữ liệu
7 Database :
Cơ sở dữ liệu sẽ gồm hai phần : một dùng để quản lý sách và một dùng quản lý độc giả Với việc sử dụng Access để tạo ra cơ sở
Trang 14dữ liệu thì nói chung không có vấn đề gì phức tạp Việc thiết kế chi tiết cơ sở dữ liệu sẽ được đưa ra trong phần sau.
Trang 15CHƯƠNG BA: KIẾN TRÚC MẠNG VÀ MÔ HÌNH TCP/IP III Kiến truc mạng và những vấn đề liên quan:
Protocol layer N
Protocol layer N-1
Protocol layer 2
Protocol layer 1Layer N/N-1
Interface
Trang 169 Kiến trúc mạng
Mạng được tổ chức thành một loạt các lớp, mỗi một lớp có nhiệm vụ cung cấp các dịch vụ cho lớp bên trên của nó và có thể gọi các dịch vụ mà lớp bên dưới nó cung cấp Việc liên lạc giữa các lớp trong mạng phải theo một số luật hay quy ước nào đó gọi là nghi thức (protocol)
15 Khả năng truyền dữ liệu:
2 Mô hình OSI (Open System Interconnection
SVTH: Nguyeãn Thò Huyeàn Vy Trang 16
Communication Subnet Boundary
Internal subnet protocol
Trang 17Ý nghĩa của các lớp:
1 Physical layer:
Trang 18Ở lớp này, thông tin được truyền giữa 2 máy (kết nối vật lý với nhau ) là các chuỗi bit thông qua kênh truyền.
2 Data link layer:
Lớp này có nhiệm vụ chia nhỏ dữ liệu đưa xuống từ lớp Network thành các frame dữ liệu (frame thường dài từ vài trăm byte đến vài ngàn byte) để truyền đi và tổ chức nhận sao cho đúng thứ tự các frame Cung cấp khả năng truyền không lỗi trên đường truyền vật lý cho các lớp cao hơn Vấn đề đặt ra ở đây là phải xác định cơ chế để xác nhận một frame có truyền thành công hay không (Acknowledge Frame), xử lý nhiễu (truyền lại)
3 Network layer:
Điều khiển hoạt động của Subnet, tức là tìm đường cho một packet
đi từ nguồn đến đích (truyền dữ liệu giữa hai máy bất kỳ trong mạng)
Vấn đề lớn nhất của lớp này là tìm đường (Routing), giải quyết đụng
độ (Collision), giải quyết vấn đề địa chỉ (Addressing), vấn đề tính tiền (Accounting)
4 Transport layer:
Chức năng cơ bản của lớp này là chia nhỏ gói dữ liệu được đưa từ lớp bên trên xuống thành những đơn vị nhỏ hơn để truyền qua mạng với sự đảm bảo là dữ liệu sẽ tới nơi một cách chính xác (kiểm tra số sequence, error detection: kiểm tra lỗi, flow control) Lớp này cung cấp cho các lớp bên trên phương tiện để truyền các message độc lập với các lớp bên dưới (end to end layer: hai hệ thống thực sự kết nối với nhau)
5 Session layer:
Cung cấp những phương tiện cho phép hai thực thể của lớp ứng dụng
có thể tổ chức và đồng bộ cuộc đối thoại và quản lý sự trao đổi thông tin giữa chúng (các dịch vụ để các quá trình có thể trao đổi với nhau, tạo và kết thúc kết nối giữa các quá trình trên các máy khác nhau)
6 Presentation layer:
Trang 19Lớp này biểu diễn những thông tin được truyền (được hiểu là cú pháp và ngữ nghĩa), nó đồng nhất các thông tin giữa các hệ thống khác nhau Ngoài ra, nó còn cung cấp dịch vụ thao tác trên dữ liệu như nén và mã hóa (compression & cryptography).
Do đặc tính của mô hình OSI là một mô hình tham khảo, việc
áp dụng mô hình OSI vào thực tế là khó có thể thực hiện (hiệu suất kém vì dữ liệu muốn đi từ máy này sang máy kia trong mạng thì phải qua tất cả các lớp của mô hình OSI ở cả hai máy), nó chỉ là một tiêu chuẩn để các nhà phát triển dựa theo đó mà phát triển các mô hình khác tối ưu hơn Có rất nhiều các mô hình khác nhau, tuy nhiên, hiện nay trên thế giới cùng với sự phát triển như vũ bão của mạng Internet, mô hình TCP/IP là được sử dụng phổ biến nhất
Bộ Protocol TCP/IP bao gồm:
22 TCP (Transmission Control Protocol): một protocol có cầu nối (connection-oriented) cung cấp khả năng truyền dòng dữ liệu không lỗi, hai chiều (full duplex) cho các quá trình của người
sử dụng
23 UDP (User Datagram Protocol): một protocol không thiết lập cầu nối (connectionless) cho các quá trình của user (không giống như TCP, nó
Trang 20không đảm bảo dữ liệu khi truyền đi có đến nơi chính xác không).
24 ICMP (Internet Control Message Protocol):
Protocol xử lý lỗi và điều khiển thông tin giữa các gateway và các host
25 IP (Internet Protocol): IP là protocol cung cấp dịch vụ phân phối các packet cho TCP, UDP và ICMP
26 ARP (Address Resolution Protocol): Protocol ánh xạ một địa chỉ internet thành vào trong một địa chỉ phần cứng
27 RARP (Reverse Address Resolution Protocol):
Protocol ánh xạ một địa chỉ phần cứng vào trong (thành) một địa chỉ internet
Mô hình TCP/IP được phân ra thành bốn lớp, trong đó hai lớp dưới
(1 và 2) của mô hình OSI được gộp lại thành một lớp gọi là lớp
Host-to-network; hai lớp Session và Presentation của OSI không có
trong mô hình giao thức TCP/IP
Trang 21Tương tự như mô hình OSI, trong mô hình TCP/IP, dữ liệu từ một máy cũng đi từ lớp Application xuống Transport, rồi xuống tiếp lớp Internet, sau cùng đi tới lớp Host-to-network (ứng với data link layer của OSI), thông qua đường dây vật lý đến một máy khác trong mạng, dữ liệu ở đây sẽ đi ngược từ dưới lên (tức là từ lớp Host-to-network đến lớp Application của máy thứ 2) Cũng như mô hình OSI, ở đây, giữa các lớp của hai máy giao tiếp với nhau thông qua một protocol, giữa lớp này với lớp kia của một máy giao tiếp trực tiếp với nhau gọi là Interface Lớp bên dưới cung cấp các dịch vụ cho lớp bên trên.
10 Host-to-network layer (Physical layer):
Kết nối host với network sao cho chúng có thể chuyển các message tới các địa chỉ IP
Tùy theo dịch vụ mà ta dùng một trong hai cách trên (TD: khi
dữ liệu cần truyền đi là các đoạn film hay âm thanh thì nên dùng Connectionless)
Nhiệm vụ của lớp này là đảm bảo cho các host chuyển các packet của chúng vào mạng bất kỳ và chuyển chúng đến đích mà không phụ thuộc vào vị trí của đích đến
Trong mô hình TCP/IP, người ta đưa ra khái niệm IP address
để định địa chỉ các host trên mạng (IP address là 1 tập hợp số 4 byte
có dạng A.B.C.D, mỗi một byte có giá trị từ 0 đến 255; tuy nhiên
Trang 22hiện nay số 4 byte là không đủ đáp ứng nhu cầu phát triển của Internet nên người ta lại đưa ra các khái niệm mới như Expanded IP gồm 8 bytes để tăng số đường địa chỉ lên).
29 UDP (User Datagram Protocol): là một Connectionless Protocol được xây dựng cho các ứng dụng không muốn sử dụng cách truyền theo một thứ tự của TCP mà muốn tự mình thực hiện điều đó (tùy theo mục đích của ứng dụng mà người ta dùng UDP hay không)
Số hiệu port:
Một process của một máy có thể liên lạc với một máy khác trong mạng qua địa chỉ IP Tuy nhiên, với địa chỉ như vậy không đủ cho một process của máy này liên lạc với một process của một máy khác Và vì vậy, TCP/UDP đã dùng 16 bits để có thể đặc tả nên một
số hiệu port
Như vậy, để hai process của hai máy bất kỳ trong mạng có thể giao tiếp được với nhau thì mỗi frame ở cấp Network có IP gồm:
+ Protocol (TCP/UDP)
+ Địa chỉ IP của máy nguồn
+ Số hiệu port của process ở máy nguồn.+ Địa chỉ IP của máy đích
Trang 23+ Số hiệu port của process ở máy đích.Thí du: {Tcp, 172.28.11.83, 6000, 172.28.11.241, 7000};
13 Application layer (Process layer):
Chứa các dịch vụ như trong các lớp Session, Presentation, Application của mô hình OSI TD: Telnet là một virtual terminal cho phép user xâm nhập vào một host ở xa và làm việc ở đó như đang làm việc trên một máy local, FTP là một công cụ hữu hiệu để chuyển file từ máy này sang máy kia trên mạng, SMTP (Simple Mail Transfer Protocol) cũng là một dạng của FTP nhưng được phát triển theo các đặc điểm riêng, DNS (Domain Name Service) dùng để biến đổi (ánh xạ) các tên host thành các địa chỉ IP của nó, …
Trang 24CHƯƠNG BỐN: CƠ CHẾ TRUYỀN NHẬN TRONG JAVA
V Các kiến thức cơ bản về Networking
Các máy tính chạy trên mạng Internet truyền thông với nhau dùng các Protocol TCP, UDP Mô hình mạng 4 lớp được mô tả bằng hình vẽ dưới đây :
Application(HTTP,ftp,telnet)Transport(TCP/IP,UDP)Network(IP,…)Link(device driver)
Khi bạn viết các chương trình Java có truyền thông qua mạng, điều này có nghĩa là bạn đang lập trình ở lớp application Nhìn chung, bạn không cần quan tâm tới các protocol TCP và UDP -Thay vì vậy, bạn có thể dùng các lớp trong package java.net Các lớp này cung cấp việc truyền thông qua mạng độc lập hệ thống Tuy nhiên, bạn cần hiểu rõ sự khác biệt giữa TCP và UDP để xác định rõ những lớp nào trong thư viện Java mà bạn sẽ sử dụng
Khi hai chương trình muốn truyền dữ liệu cho nhau một cách đáng tin cậy, chúng thiết lập một connection và gửi data qua lại thông qua connection đó Điều này giống như một cuộc điện thoại nếu bạn muốn nói chuyện với tôi ở HCM City, một connection được
Trang 25thông qua connection bằng cách nói với người kia thông qua đường điện thoại Giống như các công ty điện thoại, TCP đảm bảo rằng data được gửi từ một đầu connection tới đầu kia không mất mát và đúng thứ tự (nếu không, một lỗi sẽ được thông báo)
Định nghĩa: TCP là một protocol dựa trên connection, cung cấp các
data flow tin cậy giữa 2 máy tính
Những ứng dụng yêu cầu một kênh truyền point-to-point, đáng tin cậy đều dùng TCP Hyper Text Transfer Protocol (HTTP), File Transfer Protocol (ftp), và Telnet (telnet) là những ứng dụng đòi hỏi một kênh truyền đáng tin cậy Thứ tự gửi và nhận phải đảm bảo
là điều kiện buộc phải có đối với những ứng dụng này khi dùng HTTP để đọc từ một URL, dữ liệu cần phải nhận được theo đúng thứ
tự mà nó được gửi đi, nếu không mọi thứ sẽ đảo lộn cả lên
Tuy nhiên, cũng có những ứng dụng không đòi hỏi tính độ cậy quá cao Điều này lại có lợi về hiệu suất
Một ví dụ của loại kênh truyền này là lệnh ping Mục đích của lệnh ping là kiểm tra việc truyền nhận data giữa hai chương trình qua mạng Thực ra, lệnh ping cần biết các package bị rơi rớt hay sai thứ
tự để xác địng chất lượng một connection Do đó một kênh truyền đáng tin cậy sẽ không thích hợp với loại dịch vụ này
UDP protocol cung cấp việc truyền thông không đảm bảo giữa hai ứng dụng trên mạng UDP không dựa trên connection như TCP UDP gửi những package độc lập với nhau, gọi là datagrams, từ ứng dụng này tới ứng dụng kia Việc gửi những datagram giống như việc gửi thư thông qua bưu điện Thứ tự phân phát không quan trọng
và khộng đảm bảo, và các message độc lập với nhau
Định nghĩa:
UDP là một protocol, gửi những package độc lập, gọi là các datagrams, từ máy này tới máy khác, không đảm bảo chắc chằn sẽ thành công UDP không dựa trên connection như TCP
Trang 26Nói một cách tổng quát, một máy tính nối mạng là một connection vật lý đối với mạng đó Tất cả dữ liệu gửi cho một máy tính thông qua conection đó Tuy nhiên, dữ liệu có thể được gửi cho những ứng dụng khác nhau trên máy đó Vậy thì làm cách nào máy tính biết ứng dụng nào sẽ nhận dữ liệu được gửi đến? Điều này được giải quyết thông qua việc sử dụng Ports, mỗi ứng dụng mạng có một port tương ứng
Dữ liệu truyền qua mạng có kèm theo thông tin địa chỉ nhằm xác định máy tính và port đích Mỗi máy tính được xác định bằng một địa chỉ IP 32-bits, IP protocol dùng địa chỉ này để phân phát dữ liệu đúng cho từng máy Port được xác định bằng một số 16-bits, các protocol TCP và UDP dùng port number để phân phát data tới đúng cho từng ứng dụng
Trong việc truyền nhận data dựa trên connection, một ứng dụng thiết lập môt connection với một ứng dụng khác bằng cách gắn một socket cho mỗi port number Điều này có ý nghĩa đăng ký ứng dụng với hệ thống để ứng dụng có thể nhận tất cả data được gửi đến cho port đó Không thể có hai ứng dụng dùng chung một port Mọi cố gắng gắn một socket với một port đã dùng đều sẽ thất bại.Trong việc truyền nhận data dựa trên datagram, datagram chứa port number của ứng dụng đích mà nó gửi tới
Trang 27Thông qua những lớp trong package java.net, những chương trình Java có thể dùng TCP hay UDP để truyền nhận data qua Internet Các lớp URL, URLConnection, Socket và ServerSocket dùng TCP Các lớp DatagramPacket và DatagramServer dùng UDP.
Java sử dụng HTTP để phân phát các Applet đa nền, có thể chạy trong môi trường Browser Nhìn chung, đây là công dụng chính của Java : tạo ra các trang HTML có nội dung động Tuy nhiên, đây
Trang 28chỉ là mặt ngoài của cái mà Java có thể làm được thực sự Các package và kiến trúc Java cho phép nó được dùng như một kiến trúc động, có thể chủ động dùng nguồn code, data, và input thông qua Internet Bằng cách tổng hợp các Java-package, programmers có thể phối hợp chương trình của mình cùng các protocol Telnet, FTP, NNTP, WWW để tạo ra các ứng dụng mạng, thay vì chỉ chạy trên một máy như trước đây.
Net-Java tương tác với Internet theo cách riêng của nó, dữ liệu kéo
về dưới dạng các file bytecode (.class), các file khác như ảnh, audio hay input từ việc tương tác với các user khác Chức năng này được giao tiếp chính thông qua mội trường Browser support Java; mặc dù vậy, interpreter cũng có thể sử dụng các connection mạng Nhằm đáp ứng hai khả năng quan trọng là tính có thể mở rộng và tính đa nền, Java đã cung cấp một kiến trúc hướng đôí tượng không bị ràng buộc bởi việc hiện thực chương trình được compile từ trước khi thực thi (dạng file EXE) Ngoài ra, để đáp ứng được những yêu cầu của người sử dụng, Java phải đảm bảo tính an toàn, hiệu xuất cao Tuy nhiên, cho đến thời điểm hiện tại, tốc độ thực thi một chương trình Java còn quá chậm Hy vọng điều này sẽ được cải thiện hơn khi có những phần cứng support Java riệng biệt
Các tính chất an toàn, đa nền, của ngôn ngữ Javađược giải quyết bằng interpreted design Bằng cách Compile code ra dạng máy
ảo, và tạo ra memory layout tại thời điểm chạy chương trình thay vì tại thời điểm compile, Java có khả năng truy xuất điều kiện của code trước khi nó được thực thi trên một máy client
Tất cả những ưu điểm trên phải trả giá cho hiệu suất thực thi chương trình thấp Tuy nhiên, điều này đã được khắc phục phần nào bằng cách tạo code trung gian dưới dạng bytecode, cung cấp khả năng thực hiện chương trình Multithread khá dễ dàng, và đặc biệt hơn là chiến lược quản lý bộ nhớ với việc dọn rác tự động
Trang 29Sau đây là một số hiểu biết cơ bản về networking ,Threads, Synchronization, Exceptions và Java-Security do ngôn ngữ Java cung cấp
VI Networking:
Việc sử dụng những khả năng networking do Java support khá dễ dàng so với C và C++ Applet được nhúng trong các file HTML Để chạy những Applet qua mạng, việc trước tiên cần là là load các trang HTML này về máy cục bộ Các applet được nhúng trong các trang HTML thông qua phần khai báo APPLET Ngoài những lớp được hiện thực bới applet, những lớp thư viện khác do Browser cung cấp
Việc load các file ảnh và file audio được thực hiện thông qua lớp URL (package java.net) Lớp này biểu hiện một Uniform Resource Locator, là địa chỉ của tài nguyên nào đó trên mạng Lấy ví
dụ, để load một file ảnh từ mạng, chương trình Java đầu tiên cần tạo một URL chứa địa chỉ chỉ tới file ảnh đó, sau đó dùng một số hàm cần thiết để connect và truy xuất file ảnh đó
Nhìn chung, điểm nổi bật của Networking do Java mang lại là tính tiện lợi và dễ sử dụng Điều này có thể hiểu rõ hơn trong phần giới thiệu về URLs, Socket ở những phần sau của tài liệu này
14 Giao tiếp giữa phần hiện thực client và Browser ở máy
local:
c URLs
Nếu bạn từng giao tiếp với World Wide Web, hẳn bạn không
lạ gì với khái niệm URL và chắc bạn cũng đã dùng các URL để truy xuất các trangHTMLtrênWeb URL là từ viết tắt của Uniform Resource Locator , là một tham chiếu (một địa chỉ ) tới một tài nguyên trên Internet
Nếu bạn chưa quen, thì tốt hơn hãy xem (dù không chính xác hoàn toàn) URL là tên của một file trên mạng vì hầu hết các URL
Trang 30tham chiếu tới 1 file trên máy nào đó trên mạng Tuy nhiên, bạn nên nhớ rằng URL có thể tham chiếu tới bất kỳ tài nguyên mạng nào, chẳng hạn như database queries và command output.
Sau đây là một ví dụ về URL :
http://java.sun.com/
Tất cả các URL đều có 2 phần tử chính :
1.Kiểu Protocol
2.Tên tài nguyên
Cách dễ nhất để tạo một URL là dùng một chuỗi làm đối số cho URL cconstructor:
URL u = new URL("http://java.sun.com");
Đây là một URL tuyệt đối vì nó đặc tả toàn bộ tên tài nguyên Một constructor hữu dụng khác là một URL tương đối :URL data = new URL(u,"conference/conference.html");
URL này đặc tả file conference.html, nằm trong thư mục conference của URL u
Trong chương trình, URL được sử dụng để load file chứa các nhóm hiện đang tồn tại, file chứa danh sách các user trong một nhóm, log file (file chứa thời điểm các user login, logout; các nhóm được tạo ra, delete), file help Để phát triển đề tài này thành các đề tài khác yêu cầu thêm một số chức năng như truyền nhận file, truy xuất cơ sở dữ liệu và cập nhật ngay ở client khi dữ liệu ở server có thay đổi, cần phải có những kiến thức thêm nữa về cách sử dụng URL trong Java Tài liệu này có một phần phụ lục ở phía sau về cách dùng URL trong Java Nếu quan tâm, bạn có thể tham khảo
Trang 31kết với browser, applet gọi hàm getAppletContext Hàm này trả về một đối tượng kiểu AppletContext
Một số hàm liên quan đến việc Applet yêu cầu hiển thị một URL bên trong browser:
30 public AppletContext getAppletContext()Tạo ra một handle (context của applet) trên môi trường browser của applet Trong hầu hết các browser, ta có thể dùng thông tin này để điều khiển browser mà applet đang chạy trên đó
31 public abstract void showDocument(URL url, String target)
Yêu cầu browser chứa applet show trang web xác định bởi thông số url Thông số target chỉ ra nơi hiển thị trang web đó (Bạn
có thể xem thêm các giá trị có thể có của target trong thư viện API của Java)
15 Sockets
Ta sử dụng các URLs và URLConnections để truyền thông qua mạng ở cấp cao và dành cho một mục đích đặc biệt :truy xuất tài nguyên trên Internet Đôi khi chương trình của ta đòi hỏi việc truyền thông qua mạng ở mức thấp hơn, ví dụ như khi ta viết một ứng dụng Client/Server (cụ thể là phần mềm này đã thực hiện điều đó)
Trong những ứng dụng client/server, server cung cấp một dịch vụ nào đó, chẳng hạn như xử lý các database queries, gửi giá cả chứng khoán hiện tại, Client dùng dịch vụ do server cung cấp để hiển thị kết quả cho User, tạo ra những chỉ dẫn cần thiết cho người đầu tư, Việc truyền dữ liệu giữa client và server phải đáng tin cậy, không bị mất và không được tới sai thứ tự do server gửi
TCP cung cấp kênh truyền đáng tin, point-to-point, mà những ứng dụng client/server trên Internet sử dụng Những lớp Socket và ServerSocket trong java.net package hỗ trợ cho việc thực hiện các kênh truyền TCP độc lập hệ thống
Trang 32Một Socket là một end-point của một liên kết giữa hai chương trình chạy trên mạng Các lớp socket được sử dụng để thể hiện connection giữa một chương trình client và một chương trình Server Package java.net cung cấp hai lớp : Socket và ServerSocket tương ứng với client và server.
Chương trình Server thường listen ở một port riêng biệt, đợi các connection request từ các chương trình client Khi có một connection request, client và server thiết lập một connection mà qua
đó chúng sẽ trao đổi dữ liệu với nhau Suốt quá trình connecton, client được gán cho một port number cục bộ, và bind một socket cho
nó Client truyền (nhận) dữ liệu cho server bằng các ghi (đọc) socket Tương tự, server nhận một port number local mới (nó cần một port number mới để nó có thể tiếp tục listen các connetion request khác ở port ban đầu) Server cũng bind một socket cho port cục bộ của nó
và liên lạc với client tương ứng thông qua socket này
e Sử dụng Socket ở Client
Dưới đây là một chương trình ngắn minh họa việc sử dụng Socket ở Client Trong ví dụ, client thiết lập một connection với Echo server (port = 7), ớ máy ResearchCC dùng lớp Socket trong thư viện API của Java Client nhập một hàng từ standard input stream, gửi cho Echo server Echo server nhận được, gửi trả hàng này về lại client Client đọc hàng này và xuất lại ra màn hình
Việc sử dụng Socket trong chương trình Client của phần mềm này có đôi chút phức tạp hơn nhưng những ý tưởng chính là hoàn toàn giống nhau
import java.io.*;
import java.net.*;
public class EchoTest {
public static void main(String[] args) {
Socket echoSocket = null;
Trang 33is = new DataInputStream(echoSocket.getInputStream()); } catch (UnknownHostException e) {
System.err.println("Don't know about host: ResearchCC"); } catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: ResearchCC");
Trang 34Giải thích chương trình trên :
Ba hàng sau trong khối try của phương thức main() buộc phải
có Chúng thiết lập socket connetion giữa client-server và mở input, outputstream trên socket tạo ra:
echoSocket = new Socket("ResearchCC", 7);
os = new DataOutputStream(echoSocket.getOutputStream());
is = new DataInputStream(echoSocket.getInputStream());
Hàng đầu tạo ra một đối tượng Socket , đặt tên là echoSocket Socket constructor được sử dụng ở đây yêu cầu tên máy và port number mà ta muốn connect tới Chương trình ví dụ dùng host name ResearchCC Đối số thứ hai là port number Port 7 là port mà Echo server listen
Hàng thứ hai và thứ ba mở một output stream và một input stream trên socket vừa thiết lập EchoTest đơn thuần chỉ cần write tới output stream và read từ input stream để truyền dữ liệu với server thông qua socket Nếu bạn chưa quen với các stream trong Java, bạn
có thể xem thêm phần các Stream cũng trong đề tài này
Phần kế đọc từ standard input stream của EchoTest một hàng mỗi lần EchoTest write ngay input text (theo sau bởi một newline character) tới output stream :
Trang 35Hàng cuối trong vòng lặp while đọc một hàng từ input stream Phương thức readLine() block cho tới khi server echo thông tin trở
về cho EchoTest Khi readLine() return, EchoTest in hàng thông tin
ra standard output Vòng lặp while tiếp tục EchoTest đọc input từ user, gửi nó cho Echo server, nhận trả lời từ server, và hiển thị nó cho tới khi user đánh vào một end-of-input character
Khi user đánh vào một end-of-input character, vòng lặp while kết thúc, chương trình tiếp tục thực thi ba hàng kế:
2 Mở input stream và outputstream ứng vớ socket đó
3 Read và write tới stream tùy thuộc vào nghi thức của server
try {
Trang 36serverSocket = new ServerSocket(4444);
Bước kế tiếp, Server accept một connection request từ một client :
Socket clientSocket = null;
1 Mở một input và output stream ứng với socket
2 Read và write tới socket
Trong đề tài, có nhiều client đồng thời đưa ra các connection request với server tại port mà server listen (port 4444) Có hai cách
để giải quyết vấn đề này :
1 Các connection request được xếp hàng, và Server phải accept các connection tuần tự
2 Phục vụ các connection request đồng thời bằng việc dùng các thread Mỗi thread xử lý một connection
Trang 37Đề tài đã chọn cách thứ hai để hiện thực vì nó hợp lý hơn: mọi user cần phải được xử lý bình đẳng như nhau.
Giải thuật cho phần này như sau :
public InetAddress getInetAddress()
Trả về remote IP address mà socket này connect với Từ trị trả về này, có thể gọi hàm getHostName từ lớp InetAddress để lấy hostName tương ứng Hàm này được gọi trong chương trình khi server cần lấy hostName của client connect với nó
public InputStream getInputStream() throws IOException
Trả về một input stream thực hiện việc đọc dữ liệu từ socket này
public OutputStream getInputStream() throws IOException
Trang 38Trả về một output stream thực hiện việc ghi dữ liệu tới socket này Lớp ServerSocket
public ServerSocket(int port) throws IOException
Tạo ra một server socket trên port được đặc tả bởi thông số port Nếu port = 0 thì tạo ra một server socket trên bất kỳ port nào trống.Chiều dài hàng đợi lớn nhất cho các yếu cầu connection là 50 Nếu một yêu cầu connection đến trong khi hàng đợi đầy, thì yêu cầu đó sẽ
bị từ chối
public Socket accept() throws IOException
Listen một yêu cầu connection đối với socket này và chấp nhận nó Phương thức này bị block cho tới khi connection được thực hiện
Public void close() throws IOException
Close socket lại (áp dụng cho cả Socket và ServerSocket)
33 Các Stream:
Class BufferedInputStream
Là một input stream Public BufferedInputStream(InputStream in)Hàm constructor Tạo ra một input stream có đệm để đọc data từ input stream được khai báo Kích thước beffer ngầm định là 512-byte Ta có thể khi báo kích thước buffer bằng constructor khác
Class DataInputStream
Ứng dụng sử dụng một data input stream để đọc các kiểu dữ kiệu nguyên thủy của Java từ một input stream lớp dưới , với đặc tính độc lập máy Ứng dụng dùng data out put stream để ghi data mà sau này
sẽ được đọc bởi một data input stream
public DataInputStream(InputStream in)
Hàm constructor Tạo ra một data input stream để đọc data từ input stream được khai báo Trong chương trình, sử dụng thông
InputStream là một BufferedInputStream được sinh ra từ input
stream nhận được từ socket tương ứng
public final String readLine() throws IOException
Trang 39Đọc hàng text kế từ data input stream gọi nó Phương thức này đọc thành công các bytes từ input stream lớp dưới cho đến khi hết một hàng Ký hiệu chấm dứt dòng được xác định bằng các ký tự sau : ký
tự CR ('\r') , ký tự newline ('\n'), một ký tự CR theo sau bởi một ký tự newline , hay kết thúc của stream input Phương thức này bị block khi xảy ra một trong ba tình huống sau: một ký tự newline được đọc, một ký tự CR và byte đi liền sau nó được đọc (để xem có phải là ký
tự newline hay không) , dò thấy dấu hiệu chấm dứt một stream, hay mot IOException được sinh ra
Các kiến thức về output stream, buffered output stream cũng tương
tự như input stream
Class PrintStream
Một print stream hiện thực một output stream filter, cung cấp các phương thức tiện lợi cho việc print các kiểu dữ liệu khác nhau
public PrintStream(OutputStream out)
Xây dựng một print stream mà sẽ viết output của nó tới một output stream lớp dưới được đặc tả
public void println(String s)
Print một chuỗi tới output stream lớp dưới của Print Stream gọi hàm này
7 Java Security
Các application không thực hiện tính bảo mật như applet Với một Java-application, nó có thể đọc và ghi file, giao tiếp với thiết bị, connect với các socket, Nhưng với Java-applet thì không như vậy Có nhiều việc mà Java-applet không được phép làm,
Java-và nhiều tài nguyên mà Java-applet chỉ nên hạn chế truy xuất
Các applet có thể quan hệ tới mô hình Client/Server cổ điển theo cách : Web server là server của applet Nó gửi applet tới máy client Máy client là máy trên đó client chạy thực sự Điều đó có nghĩa là khi ta browse một trang HTML có nhúng applet, máy của ta là client
Trang 40Điều này làm rõ việc xác định những việc mà applet không được phép làm.
Nếu một applet được load qua mạng, nó không được phép :
1 Đọc , ghi , xóa, đổi tên file, tạo thư mục, liệt kê nội dung thư mục , kiểm tra sự tồn tại của file, trên client file system
2 Khai báo bất kỳ hàm điều khiển mạng nào, định nghĩa các lớp trên client file system, thiết lập connection với một chương trình chạy trên một máy khác máy chứa applet đó
Những điều trên dẫn đến hạn chế của chương trình: chỉ có thể đặt Server cùng một máy với Client, và cũng là máy chạy Web server
16 Threads , Synchronization và Exceptions:
h Multithread
Có lẽ ta đã quen thuộc với khái niệm multitasking : khả năng
có nhiều hơn một chương trình hoạt động dường như cùng một thời điểm Những chương trình multithreaded mở rộng khái niệm mutitasking ở một mức thấp hơn: một chương trình có thể có thể chạy nhiều đoạn tính toán dường như cùng lúc (mỗi đoạn tính toán thường được gọi là một thread) Mỗi thread coi như chạy trong một ngữ cảnh riêng biệt: mỗi thread dường như có CPU của riêng nó, với các thanh ghi, bộ nhớ và code cho riêng nó Cũng cần phân biệt khác nhau quan trọng giữa multiple processes và multiple threads: mỗi thread có tập các biến của riêng nó, còn các thread dùng chung data trong chương trình mà chúng thuộc về Điều này nghe có vẻ mạo hiểm Tuy nhiên, nó cho phép tạo ra overhead thấp hơn khi tạo và xóa các thread so với việc sinh ra các process mới Điều này cũng giải thích tại sao tất cả các hệ điều hành hiện đại đều support multithreading
Có lẽ trong Java sức mạnh lớn nhất ngoài việc hướng đối tượng là khả năng multithreading Điều đặc biệt là do support multithreading trong cả ngôn ngữ và các thư viện lớp nên việc sử dụng đặc tính này dễ dàng hơn rất nhiều