Có thể nói đến đó là vấn đề về tài nguyên dùng chung, đặc biệt là tàinguyên thông tin và chiến lược khai thác chúng.Và đến với môn học “Lập trình mạng máy tính nâng cao”, tôi được tìm hi
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Đà Nẵng, tháng 05/2012
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 3
CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ PHÂN TÁN LẬP TRÌNH MẠNG VÀ CƠ SỞ DỮ LIỆU PHÂN TÁN 4
1 HỆ PHÂN TÁN 4
1.1 Tổng quan về hệ tin học 4
1.2 Hệ tin học phân tán 5
1.2.1 Định nghĩa 5
1.2.2 Các thực thể trong hệ phân tán 5
1.2.3 Đặc điểm của hệ phân tán 5
1.2.4 Các ưu điểm của tài nguyên dùng chung trong hệ phân tán 6
2 LẬP TRÌNH MẠNG 7
2.1 Địa chỉ IP 7
2.2 Giao thức TCP và giao thức UDP 7
2.4 Giao tiếp theo mô hình client/server 8
2.4.1 Giao tiếp theo mô hình client/server 8
2.4.2 Các chương trình thường chạy trên máy client 8
2.4.3 Các chương trình thường chạy trên máy server 8
2.5 Lập trình đối tượng phân tán 9
2.5.1 Thiết lập môi trường triệu gọi từ xa 9
2.5.2 Mô hình tính toán Client/Server 9
3 CƠ SỞ DỮ LIỆU PHÂN TÁN 10
CHƯƠNG II: KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG JAVA KẾT NỐI CƠ SỞ DỮ LIỆU VỚI JDBC 12
1 SƠ LƯỢC VỀ JAVA 12
2 RMI VÀ LẬP TRÌNH PHÂN TÁN HƯỚNG ĐỐI TƯỢNG TRONG JAVA 12
2.1 Khái niệm chung 12
2.2 Gọi phương thức từ xa và các vấn đề phát sinh 13
2.3 Vai trò các lớp trung gian STUB và SKELETION 14
2.4 Cài đặt ứng dụng phân tán của RMI 15
2.5 Cơ chế gọi hàm từ xa của các đối tượng RMI một cách tổng quát 16
2.6 Bộ đăng ký (Registry) 17
3 GIỚI THIỆU JDBC (Java DataBase Connectivity) 18
3.1 Lớp DriverManager 19
3.2 Giao diện Connection 19
3.3 Giao diện Statement 19
3.4 Giao diện ResultSet 20
CHƯƠNG III: CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU KHI CẬP NHẬT TRONG CÁC CƠ SỞ DỮ LIỆU PHÂN TÁN TẠI CÁC NGÂN HÀNG 21
1 ĐẶT VẤN ĐỀ 21
2 XÂY DỰNG CƠ SỞ DỮ LIỆU PHÂN TÁN 21
3 XÂY DỰNG BỘ PHÂN PHỐI KẾT NỐI SERVER 22
4 XÂY DỰNG CÁC PHƯƠNG THỨC TRÊN SERVER 22
5 XÂY DỰNG GIAO DIỆN PHÍA CLIENT 23
Trang 3hệ thống hoàn chỉnh, tối ưu Có thể nói đến đó là vấn đề về tài nguyên dùng chung, đặc biệt là tàinguyên thông tin và chiến lược khai thác chúng.
Và đến với môn học “Lập trình mạng máy tính nâng cao”, tôi được tìm hiểu các vấn đề
về lập trình các ứng dụng trên mạng cục bộ và mạng Internet, đặc biệt là kỹ thuật lập trình mạngphân tán đối tượng trong Java, các cách để giải quyết một bài toán tin học cụ thể Để hiểu rõ hơnvấn đề xử lý thông tin và đảm bảo sự gắn bó dữ liệu trên hệ phân tán, tôi đã chọn đề tài:
Hãy vận dụng các thuật toán để xây dựng giải pháp cho hệ thống ngân hàng với n server (n 2) quản lý m đủ lớn các tài khoản của khách hàng với yêu cầu hệ phải đảm bảo gắn bó mạnh.
Trong phạm vi tiểu luận của mình, tôi thực hiện những vấn đề sau:
Chương I: Các khái niệm cơ bản về hệ phân tán, lập trình mạng và cơ sở dữ liệu phân tán
Chương 2: Kỹ thuật lập trình hướng đối tượng trong Java kết nối cơ sở dữ liệu với JDBC
Chương 3: Chương trình đảm bảo gắn bó dữ liệu khi cập nhật trong các cơ sở dữ liệu phân tán tạicác ngân hàng
Tôi xin chân thành cám ơn Thầy PGS.TS Lê Văn Sơn đã hướng dẫn tôi hoàn thành đề tài
này Mặc dù đã nghiên cứu kỹ phần lý thuyết để có được cách giải quyết bài tập đúng đắn, phùhợp với yêu cầu đề tài, nhưng tôi không thể tránh khỏi những sai sót, kính mong được sự đónggóp ý của thầy giáo hướng dẫn và các anh chị trong lớp để bài tiểu luận được hoàn thiện tốt hơn
Đà Nẵng, Tháng 05 năm 2012
Học viên thực hiện Nguyễn Thanh Trung
Trang 4CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ PHÂN TÁN LẬP TRÌNH
MẠNG VÀ CƠ SỞ DỮ LIỆU PHÂN TÁN
1 HỆ PHÂN TÁN
1.1 Tổng quan về hệ tin học
Một cách tổng quát, hệ tin học có thể bao gồm các thành phần cơ bản như phần cứng, hệđiều hành, các chương trình ứng dụng và người sử dụng (NSD) … và có thể được mô tả như hìnhI.1 sau:
Các thiết bị phần cứng bao gồm các thiết bị xử lý trung tâm, bộ nhớ và các thiết bị ngoại viđóng vai trò là một trong hai loại tài nguyên cơ sở của hệ thống tin học Các chương trình ứngdụng là thành phần tiếp theo sau hệ điều hành được hiểu như là các phần mềm cơ sở phục vụ choviệc triển khai các ứng dụng cụ thể như chương trình dịch, hệ quản trị cơ sở dữ liệu, các chươngtrình trợ giúp sử dụng các thiết bị chuyên dụng, các trò chơi điện tử
Người sử dụng (NSD) ở đây được hiểu theo nghĩa rộng, dưới góc độ của hệ điều hành, cóthể là các nhà chuyên môn, các máy tính, các hệ tự động vận hành, gắn với máy tính đang khaithác hệ thông qua lệnh điều khiển theo một thuật toán nào đó nhằm đạt được mục tiêu xác định từtrước
Hệ điều hành các máy tính và mạng máy tính gọi tắt là hệ điều hành được đặt sát phần cứng,
nó gắn kết chặt chẽ với phần thiết bị bởi một hệ thống các chương trình, điều khiển và sắp xếpnhằm khai thác phần cứng phục vụ cho các chương trình ứng dụng khác nhau của NSD khác nhauvới kết quả và hiệu năng chấp nhận được
Như vậy, hệ tin học bao gồm ba thực thể: phần cứng, phần mềm và dữ liệu, được mô tả ởhình I-2
Trang 5Hệ thống truyền thông
Hình I-3: Các thực thể của hệ tin học phân tán
Vậy hệ thống tin học (Informatic System) là một hệ thống bao gồm hai thành phần cơ bảnphần cứng (hardware) và phần mềm (software) gắn bó hữu cơ với nhau và có khả năng xử lýthông tin
1.2 Hệ tin học phân tán
1.2.1 Định nghĩa
Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ thống xử lýthông tin bao gồm nhiều bộ xử lý hoặc bộ vi xử lý nằm tại các vị trí khác nhau được liên kết vớinhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành
1.2.2 Các thực thể trong hệ phân tán
Hệ phân tán gồm 4 thực thể:
1.2.3 Đặc điểm của hệ phân tán
Đặc điểm cần nhấn mạnh của hệ là các hệ xử lý thông tin thành phần:
Không dùng chung hoặc chia sẻ bộ nhớ
Trang 6Không sử dụng chung đồng hồ xung nhịp
Chúng liên lạc với nhau thông qua mạng truyền thông
Mỗi hệ xử lý có bộ xử lý, bộ nhớ và hệ điều hành riêng của nó
Thành phần của hệ phân tán bao gồm các hệ thống cục bộ trong đó mỗi một hay nhiều hệthống phát các yêu cầu thông tin còn các hệ khác trả lời các yêu cầu có liên quan đến phần dữ liệucủa mình Nói một cách tổng quát là trong hệ luôn luôn diễn ra việc thực hiện các công việc docác hệ thống yêu cầu Các hệ thống truyền thống như hệ rời rạc hay tập trung không thể đáp ứngnhanh chóng và chính xác các yêu cầu thông tin từ xa với lưu lượng thông tin lớn
1.2.4 Các ưu điểm của tài nguyên dùng chung trong hệ phân tán
Hệ tin học phân tán thực hiện hàng loạt các chức năng phức tạp nhưng chức năng cơ bảnnhất là đảm bảo cung cấp cho người sử dụng khả năng truy cập có kết quả đến các tài nguyên vốn
có và rất đa dạng của hệ thống như tài nguyên dùng chung
Việc định nghĩa các tài nguyên của hệ như tài nguyên dùng chung sẽ mang đến cho hệnhững hiệu năng tốt trong khai thác ứng dụng:
- Tăng tốc độ bình quân trong tính toán xử lý
- Cải thiện tình trạng luôn sẵn sàng của các loại tài nguyên
- Tăng độ an toàn cho dữ liệu
- Đa dạng hóa các loại hình dịch vụ tin học
- Bảo đảm tính toàn vẹn của thông tin
Tuy nhiên nó cũng dẫn đến hàng loạt các vấn đề khó khăn trong việc thiết lập hệ liên quanviệc cấp phát tài nguyên dùng chung cho các tiến trình
Điều quan trọng là để đảm bảo các chức năng, yêu cầu nêu ra trên, hệ tin học phân tán cầnphải có các cơ chế kỹ thuật đủ mạnh nhằm đồng bộ hóa hoạt động của các tiến trình và sự trao đổithông tin với nhau sao cho hệ thống tránh được các trường hợp có thể dẫn đến bế tắc
1.2.5 Các thao tác chuẩn của hệ phân tán
- Tiếp nhận và ghi yêu cầu chỉ dẫn
- Dịch yêu cầu để có các thông tin cần thiết Thực hiện một số công việc của hệ thống cục bộnhư kiểm tra quyền truy cập thông tin, lập hóa đơn dịch vụ
- Gửi kết quả cho hệ thống đã phát yêu cầu
Trang 72 LẬP TRÌNH MẠNG
2.1 Địa chỉ IP
Để hai hay nhiều máy tính kết nối được với nhau thì chúng phải có chung giao thức(protocol) Trên Internet, việc hai máy có thể trao đổi được với nhau đa số đều dựa vào giao thứcTCP/IP, theo giao thức này mỗi máy sẽ được đặt cho một số riêng biệt được gọi là địa chỉ IP, các
số IP này là duy nhất và không máy nào được trùng nhau, khi muốn máy của mình có địa chỉ IP
để tham gia vào hệ thống Internet toàn cầu như một máy chủ ta phải đăng ký với tổ chức InterNIC(Internet Network Information Center) để nhận một số IP riêng biệt Tuy nhiên, để gần gũi vớicon người và có ý nghĩa hơn người ta hay dùng tên thay cho địa chỉ IP, với mỗi hệ thống đều có
sự chuyển đổi trực tiếp từ tên thành địa chỉ IP thích hợp trước khi dữ liệu được gửi đi
2.2 Giao thức TCP và giao thức UDP
Giao thức TCP (Transmission Control Protocol) gửi từng gói dữ liệu đi, nơi nhận theo giaothức này phải có trách nhiệm thông báo và kiểm ra xem dữ liệu đã đến đủ hay chưa hoặc có lỗihay không có lỗi Trước khi chuyển dữ liệu bao giờ cũng có sự kết nối giữa máy gửi và máy nhận
Do phải đảm bảo dữ liệu được truyền chính xác và luôn duy trì kết nối nên sử dụng giao thức TCPcần phải mất thêm một số tài nguyên của hệ thống
Ngược lại giao thức UDP (User Datagram Prorocol) không đáng tin cậy lắm, không có sựkết nối trước giữa máy gửi và máy nhận, giao thức này cho rằng máy nhận luôn ở trạng thái sẵnsàng để tiếp nhận dữ liệu gửi đến Nếu dữ liệu gửi đến bị lỗi trong quá trình truyền hay khôngnhận được đầy đủ thì giao thức UDP không có thông tin phải hồi cho máy gửi Tuy nhiên, giaothức UDP không đòi hỏi nhiều tài nguyên của hệ thống
Do đặc tính của hai giao thức như vậy, nên giao thức TCP thường được sử dụng cho cácdịch vụ như truyền tập tin, các dịch vụ trực tuyến trên Internet đòi hỏi độ tin cậy cao… Giao thứcUDP thường được dùng trong các ứng dụng không đòi hỏi sự chính xác cao như: dịch vụ báo giờ,dịch vụ báo thông tin…
2.3 Dịch vụ từ máy chủ (server) và khái niệm cổng (port)
Khi kết nối vào máy chủ, ta có thể yêu cầu máy chủ cung cấp nhiều dịch vụ khác nhau như:tìm kiếm thông tin, gửi nhận E-mail… Mỗi dịch vụ đều có qui ước riêng cho các cách gửi/ nhận
dữ liệu Giao thức TCP hay UDP chỉ chịu trách nhiệm đưa dữ liệu từ một máy tính này đến máytính khác, còn dữ liệu đó sẽ được gửi cho dịch vụ nào thì phải thông qua một qui định nữa là cổng(port) Mỗi chương trình dịch vụ sẽ sử dụng một cổng khác nhau để truy xuất thông tin Cổng làmột số nguyên từ 1 đến 16383 Máy chủ sẽ qui định cổng cho mỗi dịch vụ, thông tin giữa máy
Trang 8khách và máy chủ phải sử dụng cổng tương ứng thì mới trao đổi thông tin được, hầu hết cácchương trình dịch vụ nổi tiếng đều có qui định cổng chuẩn riêng:
2.4 Giao tiếp theo mô hình client/server
2.4.1 Giao tiếp theo mô hình client/server
Có rất nhiều dịch vụ hỗ trợ trên Internet như E-mail, nhóm tin (newsgroup), chuyển tập tin(file transfer), đăng nhập từ xa (remote login), truy tìm thông tin trên Web… Những mô hình nàyđược kiến trúc theo mô hình khách/chủ (client/server) Các chương trình ở máy khách (client) nhưtrình duyệt Web (web browser), chương trình gửi nhận E-mail…; các chương trình dịch vụ trênmáy chủ (server) như web server, mail server… sẽ xử lý những yêu cầu này và gửi kết quả ngược
về cho máy khách, thông thường một dịch vụ trên máy chủ phục vụ cho rất nhiều yêu cầu củamáy khách
2.4.2 Các chương trình thường chạy trên máy client
Nhìn chung, các chương trình trên máy khách thực hiện những nhiệm vụ sau:
- Kết nối máy chủ
- Nhận dữ liệu hay yêu cầu của người sử dụng
- Gửi dữ liệu hoặc yêu cầu của người sử dụng đến máy chủ để lưu trữ hoặc xử lý
- Trình bày kết quả trả về từ máy chủ cho người sử dụng
2.4.3 Các chương trình thường chạy trên máy server
Các chương trình được thiết kế chạy trên máy chủ thực hiện những nhiệm vụ sau:
- Lắng nghe các kết nối từ máy khách gửi đến
- Tiếp nhận những yêu cầu từ phía máy khách
- Xử lý những yêu cầu từ phía máy khách
- Gửi trả kết quả về cho máy khách
Trang 9Như vậy, một chương trình ở trên máy chủ đóng vai trò như một dịch vụ (service) phục vụcho máy khách.
2.5 Lập trình đối tượng phân tán
Lập trình đối tượng phân tán là một trong những vấn đề nóng bỏng của công nghệ phầnmềm hiện nay, cộng đồng những người lập trình bắt đầu nghĩ rằng đối tượng có ở mọi nơi Nhữngđối tượng này được hỗ trợ trao đổi với nhau theo những giao thức chuẩn trên mạng Java là mộttrong những ngôn ngữ đi tiên phong trong việc giải quyết vấn đề lập trình phân tán Ví dụ, có mộtđối tượng ở máy khách (client), ở đó người sử dụng cần phải điền dữ liệu vào mẫu báo cáo Đốitượng này có thể gửi một thông điệp cho đối tượng trên máy chủ (server) trên mạng để yêu cầucung cấp các thông tin cần thiết, đối tượng trên máy chủ truy cập vào các cơ sở dự liệu để có đượcnhững thông tin mà máy khách yêu cầu và gửi lại cho đối tượng trên máy khách
2.5.1 Thiết lập môi trường triệu gọi từ xa
Để thực hiện được việc triệu gọi từ xa thì ta phải chạy chương trình ở trên cả máy khách vàmáy chủ
Những thông tin cần thiết cũng phải được cài đặt tách biệt ở máy khách và máy chủ Tuynhiên không nhất thiết phải có hai máy tính riêng biệt Nhờ có máy ảo Java, khi mở cửa sổ DOS-Prompt (môi trường DOS dưới Window) để chạy chương trình Java, chương trình này được xemnhư chạy trên một máy (ảo) độc lập Do đó, nếu hai chương trình Java chạy ở trong hai cửa sổriêng thì có thể xem như là chúng thực hiện trên hai máy khác nhau
2.5.2 Mô hình tính toán Client/Server
Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa chương trình phục vụ
(Server) với chương trình khách (Client) Chương trình khách gửi một yêu cầu tới cho chươngtrình phục vụ, và chương trình này xử lý dữ liệu để trả lời cho chương trình khách Như vậy,chương trình khách muốn gửi được yêu cầu thì trước hết phải tìm cách kết nối với Server Server
có thể chấp nhận hay từ chối sự kết nối này Một khi sự kết nối đã được thiết lập thì Client vàServer trao đổi với nhau thông qua Sockets Các lớp trong gói java.net cung cấp các phương thức
để kết nối mạng và trao đổi tin giữa các máy với nhau theo mô hình Client/Server
Socket chính là lớp (trừu tượng) thực hiện sự trao đổi giữa Server và Client Java xem sựtrao đổi giữa Server và Client dựa trên Socket gần giống như các thao tác vào/ra, nghĩa là cácchương trình có thể đọc, ghi vào Socket dễ dàng như chúng đọc, ghi lên tệp dữ liệu Lớp Servertạo ra sự kết nối từ máy Client tới Server thông qua các phương thức tạo lập đối tượng
Lớp ServerSocket dùng để tạo kết nối từ máy Server tới máy Client Đối tượng của lớp nàyđược tạo ra trên Server và lắng nghe những kết nối từ máy Client theo cổng xác định Server phải
Trang 10chạy thường trực trước khi Client bắt đầu thực hiện Server chờ sự yêu cầu kết nối của Client Đểthiết lập được một Server, ta phải tạo ra một đối tượng, ví dụ ServerSocket của lớp Server, gắn nóvới một cổng nào đó và lắng nghe xem có Client nào cần kết nối hay không Các Socket được xácđịnh tương ứng với địa chỉ của máy và cổng
serverSock = new ServerSocket(Integer.parseInt(txtPort.getText()));
Trong đó port là số hiệu của cổng nằm giữa 0 và 1023 Cổng cho phép trao đổi tin giữa haichương trình
Tất cả các lớp cơ bản cho việc giao tiếp và làm việc với mạng đều nằm trong gói Java.net,như lớp socket API (Application Program Interface)
Socket API của Java cung cấp các công cụ để truy cập đến các giao thức mạng chuẩn được
sử dụng để giao tiếp giữa các Host trên mạng Internet Socket API là công cụ mức thấp nhất,chúng ta có thể sử dụng socket cho bất kỳ kiểu giao tiếp Client/Server nào và các ứng dụng nganghàng trên mạng nhưng chúng ta phải cài đặt các giao thức ứng dụng mức thấp để điều khiển vàthông dịch dữ liệu
Socket là giao diện lập trình mức thấp cho các giao tiếp hướng mạng Chúng gửi các dòng
dữ liệu giữa các ứng dụng có thể hoặc không nằm trên cùng một host Gói java.net hỗ trợ mộtgiao diện hướng đối tượng, đơn giản hóa socket nên việc giao tiếp mạng trở nên dễ dàng hơn.Java cung cấp các socket để hỗ trợ cho 3 lớp phân biệt của các giao thức bên dưới: Socket,DatagramSocket, MulticastSocket
Lớp Socket sử dụng giao thức hướng kết nối TCP/IP, đảm bảo dữ liệu không bị mất trongquá trình truyền
Lớp ServerSocket được sử dụng để thu nhận các kết nối từ client của server ServerSocketchỉ được tạo một lần và nhận các kết nối đến từ các client Phương thức accept của ServerSocket
sẽ đợi cho đến khi có kết nối đến và trả về một đối tượng Socket
3 CƠ SỞ DỮ LIỆU PHÂN TÁN
Một cơ sở dữ liệu phân tán là tập hợp nhiều cơ sở dữ liệu có liên đới logic và được phân bố
trên một mạng máy tính Từ đó ta định nghĩa: Hệ quản trị cơ sở dữ liệu phân tán (DDMS) là một
hệ thống phần mềm cho phép quản lý các cơ sở dữ liệu phân tán và làm cho việc phân tán trở nên
“vô hình” đối với người sử dụng.
Môi trường của hệ quản trị cơ sở dữ liệu phân tán được mô tả qua hình I-4
Trang 12CHƯƠNG II: KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG JAVA
KẾT NỐI CƠ SỞ DỮ LIỆU VỚI JDBC
1 SƠ LƯỢC VỀ JAVA
Java là một ngôn ngữ lập trình đơn giản, hướng đối tượng, hỗ trợ lập trình phân tán, thôngdịch và biên dịch, mạnh mẽ bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả và linh động
Sự hỗ trợ lập trình hướng đối tượng là cốt lõi của Java Mọi câu lệnh của Java đều tác độngđến các đối tượng mà đặc trưng của chúng là lớp (class), đối tượng là thể hiện (instance) của lớp
và phương thức (method) là một thao tác hoặc được thực hiện bởi chính nó, hoặc thực hiện khi cóyêu cầu từ môi trường (thông điệp từ đối tượng khác)
Java hỗ trợ các ứng dụng phân tán bằng các lớp mạng java.net, một chương trình Java có thể
là sự kết hợp của rất nhiều tập tin *.class nằm rải rác trên nhiều vùng vật lý khác nhau như ổ đĩahay các máy chủ ở những vị trí khác nhau trên Internet Ngôn ngữ Java cung cấp các công cụ đủmạnh để thiết kế bất kỳ ứng dụng nào theo mô hình khách chủ (client/server) và phân tán(distributed)
Java là một ngôn ngữ thông dịch trên cơ sở đã biên dịch trước thành bytecode nên nó trở nênkhả chuyển Java được thiết kế cho mục đích đa nền, nên mã lệnh của chương trình Java sau khibiên dịch là một dạng tập tin nhị phân được gọi là bytecode, có phần mở rộng là *.class, và nóđược triệu gọi thực thi trong máy ảo Java (JVM – Java Virtual Machine) JVM là một kiến trúccủa bộ xử lý nhưng thực thi theo cơ chế phần mềm thay vì phần cứng, chính vì lý do này màchương trình Java *.class có thể chạy như nhau trên nhiều hệ điều hành khác nhau
Vì dùng trình thông dịch nên Java là một ngôn ngữ rất năng động Trong khi thực thi, môitrường Java có thể tự mở rộng để liên kết với các lớp mới nằm rải rác trên các máy chủ khác nhau
Đó cũng là thuận lợi lớn của Java so với các ngôn ngữ lập trình khác
2 RMI VÀ LẬP TRÌNH PHÂN TÁN HƯỚNG ĐỐI TƯỢNG TRONG JAVA
2.1 Khái niệm chung
Java RMI (Remote Method Invocation): Là một cơ chế gọi hàm từ xa đã được thực hiện vàtích hợp trong ngôn ngữ Java, là phương pháp lập trình hướng đối tượng
RMI 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 (bao gồm phương thức và thuộc tính) nằm trên các máy khác nhau có thểtriệu gọi lẫn nhau
Trang 13Computer AA2
A1
Computer CC1
Tuy nhiên, đối tượng Java có thể gọi phương thức của đối tượng nằm trên một máy khác dựa
vào giao thức triệu gọi từ xa RMI.
Hình II-1: Mô hình triệu gọi các đối tượng từ xa 2.2 Gọi phương thức từ xa và các vấn đề phát sinh
Triệu gọi phương thức từ xa phức tạp hơn triệu gọi phương thức cục bộ Các đối tượng trênhai Server khác nhau hoạt động trên hai tiến trình khác nhau cho nên việc tham chiếu biến, địa chỉđối tượng là khác nhau
Ví dụ: Khi truyền con trỏ cho một phương thức ở xa, trên máy đang sử dụng sẽ tồn tại nhưngtrên Server khác (nơi đối tượng thực thi phương thức) sẽ không có bất kỳ vùng nhớ nào được cấpphát cho con trỏ
Trên máy cục bộ lời gọi hàm, các tham số truyền cho hàm thường được đặt vào ngăn xếp(stack)
Tham số truyền cho phương thức của đối tượng ở xa được đóng gói và chuyển qua mạng đểđến được phương thức thực sự