CHƯƠNG TRÌNH ĐẢM BẢO CHỐNG TRÙNG VÉ TÀU HỎA KHI PHÂN TÁN CSDL TRÊN TẤT CẢ CÁC GA TRONG HỆ THỐNG ĐƯỜNG SẮT ( Tiểu luận LẬP TRÌNH MẠNG NÂNG CAO) - Pdf 24


ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

Đề tài:
CHƯƠNG TRÌNH ĐẢM BẢO CHỐNG TRÙNG VÉ
TÀU HỎA KHI PHÂN TÁN CSDL TRÊN TẤT CẢ
CÁC GA TRONG HỆ THỐNG ĐƯỜNG SẮT
GVHD : PGS.TS. Lê Văn Sơn
HVTH : Hồ Hoài Tâm
Nguyễn Văn Thẩm
LỚP : Khoa học máy tính
KHÓA : 11 (2009 – 2011)
Đà Nẵng, tháng 03/2010
Giới thiệu Lập trình mạng nâng cao
GIỚI THIỆU
Ngày nay, ngành công nghệ thông tin trên thế giới đang được phát triển mạnh
mẽ và ngày càng được ứng dụng rộng rải vào nhiều lĩnh vực như: kinh tế, khoa học kỹ
thuật, quân sự, y tế, giao dục và nó đã đáp ứng được nhiều yêu cầu trong những lĩnh
vực này để phục vụ đời sống của con người.
Ở nước ta, hòa nhập chung cùng với sự phát triển của ngành công nghệ thông
tin và ứng dụng của nó vào các lĩnh vực của cuộc sống nhằm phục vụ các nhu cầu
như: nghiên cứu, học tập và lao động của con người. Nhà nước ta đã có những chính
sách cần thiết để đưa ngành công nghệ thông tin vào vị trí then chốt trong chiến lược
phát triển kinh tế của Đất nước.
Đặc biệt ngành công nghệ phần mềm, một lĩnh vực thuộc ngành công nghệ
thông tin, được chú trọng phát triển mạng mẽ để sản sinh ra những phần mềm có giá
trị đáp ứng nhu cầu của người dùng trong nước cũng như nhu cầu sử dụng của các
nước trên thế giới.
Việc áp dụng công nghệ thông tin để quản lý trong ngành đường sắt hiện nay đã

 Xây dựng được mô hình phân tán cho hệ thống đặt vé tàu
 Sữ dụng cơ sở dữ liệu Access để thiết kế cơ sở dữ liệu
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 3
Cơ sở lý thuyết Lập trình mạng nâng cao
Chương 1 : CƠ SỞ LÝ THUYẾT
I. LẬP TRÌNH PHÂN TÁN
I.1. Định nghĩa
Có nhiều cách định nghĩa việc tính toán phân tán theo nhiều kiểu khác nhau.
Những nhà cung cấp đã tạo ra và quảng bá những hệ thống tính toán phân tán trong
nhiều năm, và phát triển những kiến trúc để cho phép xử lý dữ liệu và đối tượng phân
tán trên hệ thống mạng.
Một đặc trưng của tính toán phân tán đã nhận được nhiều sự đồng tình trong
thời gian gần đây và đó là trọng tâm của phần này. Một môi trường mà ta có thể tận
dụng chu trình và không gian rỗi của CPU trong hàng chục, hàng trăm hoặc hàng ngàn
hệ thống mạng để làm việc và phân chia việc xử lý các vấn đề một cách hiệu quả. Sự
phát triển những mô hình xử lý trước đây đã bị giới hạn bởi những băng thông rộng,
kết hợp với việc bảo mật, quản lý và những chuẩn hóa quan trọng. Khi công nghệ
peer-to-peer xuất hiện, một số nhà cung cấp bao gồm những hãng lớn như Intel,
Microsoft và Sun đã tận dụng những công nghệ mới này. Đồng thời, một dự án tính
toán phân tán worldwide mang tính thông minh đã được phát triển trong việc xử lý
thông tin.
Việc gia tăng khản năng làm việc và truyền thông của CPU giúp ích cho sự tính
toán phân tán hiệu quả hơn. Một số ứng dụng trong thực tế vẫn còn bị hạn chế về
những tiêu chuẩn đặc biệt. Vì vậy việc đáp ứng tốt những yêu cầu của khách hàng về
thời gian xử lý phù hợp và việc xử lý phân tán đã đáp ứng được yêu cầu này.
I.2. Tính toán phân tán và lưới tính toán
Khái niệm tính toán phân tán và lưới phân tán. Theo cách nghĩ khác nhau, tính
toán phân tán là lưới tính toán có thể thay thế cho nhau hoặc là tính toán phân tán là
một phần nhỏ của lưới tính toán. Lưới tính toán có thể định nghĩa như là chu trình xử
lý của hàng triệu hệ thống truy cập trong môi trường mạng.

có khối lượng xử lý lớn thành các tác vụ nhỏ hơn để có thể thực hiện ở các máy trạm
(agent). Máy chủ chuyển các gói ứng dụng và gói phần mềm đặc biệt đến các agent và
theo dõi tiến trình xử lý của các agent này. Sau đó các máy trạm chạy thực hiện các
gói ứng dụng. Nhiệm vụ của máy chủ lúc này là tập hợp các kết quả được trả về từ các
máy trạm và tổ chức lại cấu trúc các kết quả trình bày. Điều này thường được hổ trợ từ
cơ sở dữ liệu.
Nếu máy chủ chủ không tiếp nhận việc xử lý từ các máy trạm trong một thời
gian nhất định, có thể máy chủ đã hủy kết nối hệ thống hoặc tạm ngừng cho việc bảo
trì. Các máy chủ này gởi các gói ứng dụng cho hệ thống khác hoặc cho các hệ thống
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 5
Cơ sở lý thuyết Lập trình mạng nâng cao
dự phòng nhằm đảm bảo cho kết quả được trả lại cho trình duyệt một cách nhanh
chóng. Máy chủ cũng thực hiện các chức năng quản lý cần thiết như là việc bảo mật hệ
thống, quản lý các kết nối và địa chỉ IP của máy trạm để tránh sự xung đột.
Sự phức tạp của kiến trúc phân tán phụ thuộc vào các môi trường khác nhau.
Một hệ thống lớn bao gồm nhiều thành phần tham gia hoặc một hệ thống chứa nhiều
tài nguyên phức tạp, các chính sách quản lý, mã hóa dữ liệu nhằm đảm bảo cho sự an
toàn của hệ thống. Nguồn tài nguyên là một điều cần thiết để định nghĩa các mức chức
năng xử lý, bộ nhớ và việc lưu trử của mỗi hệ thống
Các chính sách quản lý được sử dụng nhằm thay đổi độ phức tạp trong các
trường hợp tính toán trong môi trường xử lý phân tán. Người quản trị có thể định
nghĩa công việc nào và người sử dụng có thể truy cập vào hệ thống nào và quyền ưu
tiên đối với người dùng, và thấy rõ tầm quan trọng của mỗi dự án. Rõ ràng vấn đề về
quyền truy cập, bảo mật, mã hóa dữ liệu là cần thiết để ngăn ngừa những truy cập
không hợp pháp nhằm phá hoại hệ thống và dữ liệu trong hệ thống phân tán phải được
bảo đảm an toàn.
Khi ứng dụng lập trình phân tán được tích hợp vào môi trường internet thì nó
phải đáp ứng các tiêu chuẩn và giao thức cho việc truy cập tự động và những tác động
của nguồn tài nguyên trên mạng internet và giữa những kiến trúc phân tán khác nhau.
Hầu hết các giải pháp của tính toán phân tán bao gồm các công cụ, thư viện, các ứng

tác vụ xử lý không tuần tự với khối lượng tính toán dữ liệu lớn. Việc tính toán khối
lượng lớn dữ liệu thường đi đôi với việc tính toán trong quá trình truyền thông nhưng
việc bạn không thể gởi một số lượng lớn dữ liệu đến mỗi trình duyệt trong môi trường
mạng mặc dù bạn có thể làm điều này trong nhiều giờ. Những chương trình với cơ sở
dữ liệu lớn có thể dễ dàng phân tích thì rất thích hợp cho mô hình này.
Rỏ ràng , bất kỳ ứng dụng nào với những tác vụ truy cập đến tập hợp dữ liệu
khổng lồ thì những hệ thống lớn sẽ phù hợp hơn những hệ thống đơn lẻ. Nếu dữ liệu
có liên qua thì một siêu máy tính sẽ phù hợp hơn. Một ứng dụng phân tán sẽ phù hợp
hơn trong tác vụ yêu cầu thời gian xử lý nhanh đối với một hệ thống dữ liệu lớn.
II. VẤN ĐỀ ĐỒNG BỘ HÓA TRONG LẬP TRÌNH PHÂN TÁN
II.1. Đặt vấn đề
Trong tất cả các hệ thống tin học, ta cần phải nghiên cứu các công cụ đủ mạnh
và hiệu quả để có thể đồng bộ hóa các tiến trình. Tính cấp thiết về mặt nguyên lý và
kỷ thuật của vấn đề này thể hiện ở hai nguyên nhân cơ bản sau đây:
1. Nhìn chung, các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độc
lập muốn truy cập vào các tài nguyên với số lượng vốn rất hạn chế hay truy cập vào
thông tin dùng chung cùng một lúc. Trường hợp này gọi là truy cập tương tranh.
Vì vậy, tương tranh là nguyên nhân chính của sự xung đột giữa các tiến trình
muốn truy cập vào tài nguyên dùng chung.
2. Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để giải
quyết các bài toán đặt ra và cho kết quả nhanh chóng nhất. Điều này cho phép tăng
hiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình.
Vì vậy, hợp lực là nguyên nhân chính của sự tác động tương hỗ được lập trình
giữa các tiến trình nhằm cho phép chúng tham gia vào các hoạt động chung.
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 8
Cơ sở lý thuyết Lập trình mạng nâng cao
Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin
qua lại với nhau. Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật toán
loại bỏ tương hổ thông qua các biến cùng tác động trong một vùng nhớ chung. Trong
hệ tin học phân tán, các thông tin cần trao đổi thông qua các kênh thuộc hệ thống viễn

Chuyển qua
A1→A2→B2→B3→B4
B1→B2→B3→A4→A5
A1→A2→B2→B3→A4→A5
Ví dụ về các sự kiện không so sánh
B1 và A1, A2, A3
A3 và B2, B3, B4
Ràng buộc C1 thể hiện rằng trật tự có được bởi quan hệ có trước là tương thích
với các trật tự cục bộ được định nghĩa trong từng trạm.
Ràng buộc C2 nói lên nguyên tắc nhân quả.
Quan hệ có trước xác định một trật tự từng phần trên tập hợp các sự kiện của hệ
và trật tự này được thể hiện trong hình vẽ trên.
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 10
Cơ sở lý thuyết Lập trình mạng nâng cao
II.1.2. Giả định chung các điều kiện
Các phương pháp mà ta giới thiệu trong chương này sẻ xuất phát từ các giả định
với các điều kiện chung như sau:
Các hệ phân tán được xây dựng trên cơ sở các trạm làm việc được mắc nối với
nhau (nối mạng). Mỗi một trạm có bộ nhớ riêng của mình và tuyệt đối không có bộ
nhớ chung.
Ta áp dụng các ký hiệu trong bảng sau:
STT Ký hiệu Giải thích
1 H1
Một trạm trong các trạm đều có thể liên lạc với các
trạm còn lại trong hệ.
2 H2
Không có lỗi truyền thông tin và không mất thông
điệp
3 H3
Trật tự nhận trên trạm j của dãy các thông điệp

trình đề nghị lại ở trên các trạm khác, các yêu cầu và khuyến nghị giải phóng được
truyền cho chương trình cung cấp thông qua hình thức thông điệp chuyển theo các
kênh của hệ thống viễn thông. Chính vì vậy, nhu cầu sắp xếp các yêu cầu này theo một
trật tự nhất định nào đó luôn luôn được đặt ra.
Nếu chỉ có một thông điệp đến chương trình cung cấp thì trật tự đến thể hiện
một trất tự chặt chẽ. Ngược lại, nếu có nhiều thông điệp đến cùng một lúc thì việc sắp
xếp chúng phải theo kiểu loại trừ tương hỗ trong hàng đợi cục bộ của trạm có chứa
chương trình cung cấp. Điều đó cũng cho phép ta có được một trật tự chặt chẽ.
Trật tự có được tại trạm cung cấp có thể không giống như trật tự phát, nếu thời
gian truyền thông được cố định. Đây lại là trường hợp khá phổ biến của mạng máy
tính. Nhưng nếu ta muốn xử lý các thông điệp theo trình tự không tính tới thời gian
truyền, thì cần phải tính đến một trật tự tổng quát của các lần truyền thông điệp từ các
trạm khác nhau.
II.2.2. Cung cấp phân tán
Vì lý do ổn định và hiệu quả mà ta phải phân tán chức năng cung cấp trên nhiều
trạm khác nhau. Sự hoạt động gắn bó với nhau giữa các chương trình cung cấp là rất
cần thiết để đảm bảo cho hoạt động cung cấp được hoàn toàn chính xác
 Thuật toán cung cấp cho hệ phân tán
Một sự hoạt động gắn bó của các chương trình cung cấp phân tán quản lý trên
cùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau, ở đây các
thông điệp được hiểu là các yêu cầu hay khuyến nghị giải phóng tài nguyên.
STT Quy tắc
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 12
Cơ sở lý thuyết Lập trình mạng nâng cao
1 Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật.
2 Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình.
3
Các thông điệp phải được xử lý cùng một trật tự như nhau trong các
chương trình cung cấp.
Quy tắc sau cùng nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên

Ta có thể mở rộng quan hệ → thành quan hệ trật tự chặt chẽ => bằng cách kết
hợp một số khác cố định cho mỗi trạm và bằng cách đánh dấu thời gian cho mỗi sự
kiện a của trạm i bằng cặp (Hi(a),i).
Theo định nghĩa ta có:
II.3.2. Thuyết minh sử dụng
a. Giới thiệu giải thuật loại trừ tương hỗ
Loai trừ tương hỗ có thể được điều khiển trên một trạm trung tâm có nhiệm vụ
nhận tất cả các thông điệp và khuyến nghị giải phóng. Trạm này duy trì một hàng đợi,
sắp xếp các yêu cầu theo trật tự đến và phục vụ cho từng thông điệp một trong trật tự
này.
Phân tán giải thuật này kéo theo việc phân tán các chức năng cung cấp mà cần
phải điều khiển hàng đợi trên trạm. Do vây, một trạm chuyên cho việc tiếp nhận các
yêu cầu và khuyến nghị giải phóng từ tất cả các trạm còn lại. Một trật tự giống nhau
trên các trạm chỉ đạt được, nếu ta áp dụng dấu trong các thông điệp bởi các đồng hồ
logic truyền và đánh số các trạm. Thêm vào đó, để cho một trạm có thể ra quyết định
bằng việc tham chiếu duy nhất vào hàng đợi của mình, nó cần phải được nhận một
thông điệp của từng trạm khẳng định rằng không có thông điệp nào trước các thông
điệp khác mà còn đang quá cảnh trên đường.
Thuật toán loại trừ tương hỗ có thể mô tả theo sơ đồ sau đây.
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 14
a→b <=> Hi(a) < Hi(b)
a => b <=> (Hi(a) < Hi(b))
hay
(Hi(a) = Hi(b) và i < j)
Cơ sở lý thuyết Lập trình mạng nâng cao
 Trạm i của mạng có thể gửi cho các trạm khác thông điệp có dạng
(T,Hi,i), trong đó Hi là dấu của thông điệp có nghĩa là đồng hồ logic của nó và T có thể
nhận một trong ba giá trị REQ, REL và ACQ.
Ba giá trị này xác định bản chất của ba loại thông điệp khác nhau:
STT Thông điệp Giải thích

Để chứng minh điều đó, ta lưu ý rằng khi trạm i quyết định vào đoạn găng, nó không
thể đưa vào trong mạng yêu cầu REQ nào trước bối cảnh sau. Thực tế, khi trạm i vào
đoạn găng có nghĩa là nó đã nhận thông điệp từ tất cả các trạm khác và tất cả các
thông điệp đều sau thông điệp REQ của riêng nó.
Ta kiểm tra các đặc tính sau:
 Trạm i đang ở trong đoạn găng là trạm duy nhất nằm trong đoạn găng
ấy. Thực tế cho thấy thông điệp REQ được phát bởi trạm i vẫn tiếp tục tồn tại trong tất
cả các hàng đợi cho đến khi nó được thay thế bởi thông điệp REL.
 Trạm đã yêu cầu vào đoạn găng phải đảm bảo thời hạn và phải ra khỏi
đoạn găng sau một khoảng thời gian xác định. Thuật toán thể hiện tính đồng đều và
tránh được tổn thất.
c. Ví dụ
Hãy xét một mạng bao gồm ba trạm trong số đó có hai trạm 1 và 2 yêu cầu vào
đoạn găng tại thời điểm 2 của đồng hồ logic của chúng. Tập hợp các thông điệp truyền
giữa chúng với nhau có thể mô tả trong hình vẽ. Trong hình vẽ này, ta cũng có thể tìm
thấy một số trạng thái của các hàng đợi thông điệp.
d. Phản ứng với sự cố
Sư cố xẩy ra với trạm chưa vào được trong đoạn găng không làm rối loạn hoạt
động của giải thuật với điều kiện là nó gây ra việc truyền thông điệp đặc biệt
vang_mat (vắng) cho việc chuyển tải ở mạng giao vận. Do có trang bị như thế, việc
vào đoạn găng trở nên không được nhanh chóng và dễ dàng cho các trạm khác. Nếu
trạm có sự cố đã gửi yêu cầu, thì nó kết thúc với lý do trở thành trước đối với tất cả các
trạm khác.
Khi một trạm lại được đưa vào trong mạng sau khi đã có sự cố và đã được khắc
phục, nó cần phải kiến tạo lại trạng thái hiện hành của các yêu cầu. Để đảm bảo điều
đó, nó phát đi thông điệp vao_lai (xin vào lại) và để trả lời, các trạm gửi hoặc thời gian
của yêu cầu cuối cùng của nó REQ không được thỏa mãn hoặc một thông điệp REL.
Mạng cần phải bổ khuyết cho các trạm bị sự cố bằng cách gửi thông điệp vang_mat.
Khi nó đã nhận tất cả các trả lời cho thông điệp vao_lai, trạm vừa đưa vào đó có thể
bắt đầu lại bằng các yêu cầu.

trên máy cục bộ. Đối với các hàm thư viện như System.out.println()chẳng
hạn thường không cần phải quan tâm đến cách thức mà hàm thư viện này được cài đặt.
Điều mà hầu hết các lập trình viện quan tâm là đối số truyền cho hàm và kết quả trả
về. Vậy có cách nào nạp nội dung của hàm hay đối tượng ở một máy nào đó và gọi
chúng từ một máy khác hay không? Đây chính là nội dung của lập trình phân tán mã
lệnh. RMI (Remote Method Invoke) mang ý nghĩa triệu gọi phương thức từ xa là cách
thức giao tiếp giữa các đối tượng Java có mã lệnh cài đặt nằm trên các máy khác nhau
có thể triệu gọi lẫn nhau. RMI được xem là một kỷ thuật trong lập trình Java nó gồm
có hai chương trình riêng biệt, một chủ (server) và một khách (client). Một chương
trình trên máy chủ có thể tạo ra những đối tượng từ xa. Một chương trình trên máy
khách có thể thu được những sự tham chiếu từ xa tới một hoặc nhiều đối tượng ở xa
trên một chủ và sau đó kéo theo những phương thức trên chúng. RMI cung cấp cơ chế
bởi bất cứ máy chủ và máy khách truyên thông và chuyển thông tin sau và trước.
Những ứng dụng mà ta có thể thấy rỏ được của đối tượng phân tán đó là:
 Xác định một đối tượng từ xa: Những ứng dụng có thể thu được khi
giải quyết vấn đề xử lý các đối tượng ở xa. Vi du như một ứng dụng có thể đăng ký
một đối tượng từ xa với tên gọi đơn giản dể sữ dụng với RMI, thì trước hết ta phải
đăng ký RMI. Sự lựa chọn, một ứng dụng có thể giải quyết công việc đi qua và trả lại
cho một đối tượng ở xa cũng như có thể gọi các bộ phận nhỏ từ xa khác.
 Cách giao tiếp giữa các đối tượng ở xa: Chi tiết của cách giao tiếp với
các đối tượng ở xa đều được điều khiển bởi RMI. Khi đó người lập trình chỉ nhìn vào
sự giao tiếp từ xa giống như gọi một phương thức trong Java.
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 18
Cơ sở lý thuyết Lập trình mạng nâng cao
 Định nghĩa lớp cho các đối tượng: Bởi vì RMI cho phép những đối
tượng sẻ được chuyển sau và về phía trước, nó cung cấp cở chế để tải những định
nghĩa của lớp đối tượng cũng như để truyền dữ liệu của đối tượng.
Sự minh họa trong hình vẽ sau miêu tả một RMI phân phối ứng dụng mà sử
dụng nới đăng ký RMI để thu được những tham chiếu của các đối tượng ở xa. Máy
chủ gọi đăng ký tới một tên gợi nhớ với đối tượng ở xa. Khách hàng xem đối tượng ở

Sử dụng RMI để phát triển một ứng dụng phân tán bao gồm các bước sau:
 Thiết kế và biểu diễn các thành phần ứng dụng phân tán.
 Biên dịch các file nguồn.
 Tạo các lớp có thể truy cập mạng.
 Bắt đầu trình ứng dụng.
a. Thiết kế và biểu diễn các thành phần ứng dụng phân tán
Đầu tiên, xác định rõ cấu trúc ứng dụng bao gồm: các thành phần của các đối
tượng cục bộ và các thành phần có khả năng truy cập từ xa. Bước này bao gồm:
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 20
Cơ sở lý thuyết Lập trình mạng nâng cao
 Định nghĩa các đối tượng từ xa: Một giao diện từ xa chỉ rõ các
phương thức có thể được cải tiến một cách biệt lập với một client. Lập trình client
trong giao diện từ xa chứ không lập trình trong các lớp thể hiện của các giao diện này.
Thiết kế các giao diện bao gồm việc xác định rõ các kiểu của đối tượng sẽ sử dụng như
là các tham số và các giá trị trả về cho các phương thức này. Nếu bất kỳ điều gì của
các lớp hoặc của các giao diện vẫn chưa tồn tại thì bạn cần định nghĩa lại chúng.
 Thực hiện các đối tượng từ xa: các đối tượng phải thực hiện 1 hoặc
nhiều các giao diện từ xa. Lớp đối tượng từ xa có thể bao gồm sự thực hiện của các
phương thức và giao diện khác đã có sẵn. Nếu bất kỳ các lớp cục bộ nào được dùng
như một tham số hoặc các giá trị trả về bất kỳ một thao tác nào trong các phương thức
này thì chúng phải đươc thể hiện tốt nhất.
 Thực hiện các client: các Client sử dụng các giao diện từ xa có thể
được thực hiện tại bất kỳ thời điểm nào sau khi các giao diện từ xa này được định
nghĩa và bao gồm các đối tượng từ xa vừa được triển khai ngay sau đó.
b. Biên dịch các file nguồn
Với bất kỳ chương trình Java nào, bạn đều sử dụng trình biên dịch Javac để
dịch các file nguồn. Các file nguồn này chứa các khai báo của các giao diện từ xa, sự
thể hiện của chúng tới bất cứ các lớp server và lớp client nào khác.
c. Tạo các lớp có thể truy cập mạng
Trong bước này, chắc chắn rằng chúng ta phải lập thành mạng định danh các

Task định nghĩa như thế nào để thực hiện tính toán, trình bày một nhiệm vụ.
Dưới đây là mã nguồn cho giao diện Compute:

package compute;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Compute extends Remote
{
<T> T executeTask(Task<T> t) throws RemoteException;
}
Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 22
Cơ sở lý thuyết Lập trình mạng nâng cao
Bởi việc mở rộng giao diện java.rmi.Remote, giao diện Compute nhận
biết như một phương thức có thể gọi từ máy ảo Java khác. Bất kỳ đối tượng nào thực
hiện giao diện này có thể là một đối tượng từ xa.
Như một giao diện từ xa executeTask là một phương thức của một hệ thống
từ xa. Bởi vậy, đây là phương thức được định nghĩa như hiện thân cho khản năng ném
một java.rmi.RemoteException. Đây là một ngoại lệ được ném ra bởi hệ
thống RMI từ một lời triệu gọi phương thức từ xa để cho biết rằng việc truyền thông
tin bị thất bại hoặc một lỗi ở giao thức đã xuất hiện. Một RemoteException là một
phương thức để kiểm tra ngoại lệ, như vậy bất kỳ mã nguồn nào kéo theo một phương
thức từ xa cần điều khiển ngoại lệ này bởi một hoặc bắt nó khai báo throws trong
mệnh đề của nó. Giao diện thứ hai cần cho công nghệ tính toán là giao diện Task, mà
là phương thức kiểu tham số của executeTask trong giao diện Compute. Giao
diện Compute.Task định nghĩa giao diện giữa công nghệ tính toán và công việc mà
nó cần làm, cung cấp cách thức để bắt đầu công công việc. Dưới đây là mã nguồn của
giao diện Task
package compute
public interface Task<T>
{

Nhóm học viên: Hồ Hoài Tâm – Nguyễn Văn Thẩm Trang 24
Cơ sở lý thuyết Lập trình mạng nâng cao
III.2.2. Thực hiện một giao diên từ xa
Mục này nói về nhiệm vụ của việc thực hiện một lớp cho công nghệ tính toán.
Trong tổng thể, một lớp thực hiện một giao diện từ xa cần phải làm ít nhất những công
việc sau:
 Khai báo những giao diện từ xa được thực hiện.
 Cung cấp một sự thực hiện cho mỗi phương thức từ xa trong những
giao diện từ xa.
Một chương trình server RMI cần tạo ra những đối tượng từ xa ban đầu và đem
chúng tới thực hiện RMI, làm cho chúng trở nên sẵn sàng nhận những lời triệu gọi từ
xa mới. Thủ tục cài đặt này có thể cũng được đóng gói trong một phương pháp của bản
thân lớp thực hiện đối tượng từ xa hoặc bao gồm trong lớp khác trọn vẹn. Thủ tục cài
đặt cần phải làm như sau:
 Tạo ra và cài đặt hệ thống quản lý an toàn
 Tạo ra và đem tới một hoặc nhiều đối tượng từ xa
 Đăng ký ít nhất một đối tượng từ xa với nơi đăng ký RMI cho mục
đích tự nạp chương trình ngồn.
a. Khai báo việc thực hiện những giao diện từ xa
Thực hiện lớp tính toán được khai báo như sau:
public class ComputeEngine implements Compute
Những trạng thái này thực hiện lớp giao diện từ xa Compute và có thể được sử
dụng cho một đối tượng từ xa.
Lớp ComputeEngine định nghĩa một lớp thực hiện đối tượng từ xa mà thực
hiện giao diện từ xa và không có giao diện nào khác. Lớp ComputeEngine cũng
chứa đựng hai phân tử chương trình có thể thực hiện và có thể triệu gọi cục bộ. Trước
hết những phân tử này là một người xây dựng của ComputeEngine. Vị trí của
những phân tử này là một phương thức main được tạo ra sử dụng ComputeEngine
và làm cho nó sẵn sàng tới những trình khách.
b. Những đối tượng chuyển qua trong RMI


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