CORBA VÀ KỸ THUẬT PHÂN TÁN
Trang 1CORBA VÀ KỸ THUẬT PHÂN
TÁN
GVHD:Đỗ Đình Thuận
Trang 2Nội dung trình bày:
Chương 1: Giới thiệu
Trang 3Chương I :Giới thiệu về Corba
Corba trợ giúp quá trình đặc tả các thành phần
Corba hỗ trợ tốt cho các ứng dụng chạy
trên mô hình Client – Server
Với đặc tả Corba, các phần mềm chạy trên server và Client có thể triển khai với nền tảng ngôn ngữ lập trình khác nhau: Java, C++,
Delphi…
Trang 4CORBA 1.0
Ra đời năm 1991 Đáp ứng nhu cầu xây dựng
các mô hình đối tượng phân tán
Bao gồm 2 thành phần cơ bản: IDL + API
IDL = Interface Definition Language
API trợ giúp việc gọi hàm từ xa trong mô hình
phân tán
Hỗ trợ BOA (Basic Object Adapter)
Trang 5CORBA 2.0
Ra đời năm 1996
Được hỗ trợ 2 kĩ thuật:
SUN hỗ trợ công cụ: IDLJ – IDLtoJava
Microsoft hỗ trợ công cụ DCOM – Sau này
được thay thế bởi Dotnet Framework
Trang 6CORBA 3.0
Là phiên bản cuối cùng của CORBA
Chính thức hỗ trợ kiến trúc hướng thành
phần
OpenCCM, MicoCCM, and EJB 3.0 là những
công cụ giúp triển khai các thành phần với
CORBA
Trang 7CHƯƠNG II:CORBA VÀ CÔNG NGHỆ PHÂN TÁN
Trang 8Tìm hiểu về Corba
1.1 Tổng quan.
CORBA (Common Object Request
Broker Architecture) (tạm dịch là Kiến trúc môi giới gọi các đối tượng thông
dụng) là một kiến trúc chuẩn cho các hệ đối tượng phân tán.
Trang 9 Nó cho phép một tập các đối tượng hỗn
hợp, phân tán siêu tương tác với nhau là một chuẩn hết sức quan trọng ra nhằm
cho phép thực hiện kiến trúc "client –
sever" theo phương pháp tiếp cận hướng
sự vật.
Trang 11 Nhược điểm của CORBA
Ngôn ngữ lập trình bậc thấp, rất phức
tạp, khó học, và cần một đội ngũ phát triển có kinh nghiệm.
khó tái sử dụng
Trang 121.2 Mục tiêu của CORBA
các đối tượng tạo ra các lời triệu gọi và nhận kết quả trả lại một cách trong suốt.
Trang 131.2 Mục tiêu của CORBA(tt)
giới yêu cầu đối tượng ORB để định vị
các đối tượng
giao diện với nhiều trường hợp.Tham
chiếu đối tượng xác định một trường hợp
cụ thế.Tham chiếu đối tượng Corba có
thể thực hiện liên tục
Trang 141.3 Đặc trưng thiết kế của CORBA
Một hoặc nhiều quá trình server CORBA có
thể chạy trên cùng một máy
Mỗi quá trình server CORBA chứa một hoặc
nhiều trường hợp về đối tượng CORBA, một hoặc nhiều giao diện CORBA
Đối tượng Corba có thể định vị đến các quá
trình, trong quá trình khác nhau trên cùng một máy hoặc các quá trình khác nhau trên những máy khác nhau
Trang 151.4 Kiến trúc CORBA
Trang 161.4 Kiến trúc CORBA(tt)
Object Request Braher (ORB)
Object Adapter (OA)
Stub and Skeleton
Interface Repository (IR) and Implementation
Repository IR
Object References (OR)
Interface Definition Language (IDL)
Trang 17Object Request Broker/Braher (ORB):
Đối tượng trung gian xử lý yêu cầu
Chứa các thư viện và các xử lý định vị và kích hoạt các đối tượng từ xa
Là tầng thấp nhất gắn kết máy chủ và
máy trạm
Định vị đối tượng, gọi các phương thức
được định nghĩa thông qua giao diện
Nhận kết quả trả về từ máy chủ
Trang 18Interface Definition Language (IDL)
Ngôn ngữ định nghĩa giao diện
Cho phép định nghĩa giao diện thông qua các từ khóa.
Giao diện được ghi dưới dạng file idl
Các file idl sẽ được dịch (mapping) sang các ngôn ngữ tương ứng như: C++, Java, Delphi
Java sử dụng IDLJ để thực thi biên dịch IDL sang mã Java.
Trang 191.5 Các lớp được sử dụng trong CORBA
truy xuất đến các đối tượng phân bố
thông qua tên và được định nghĩa trong CosNaming.idl
NamingComponent
Naming Service
Trang 202 CÔNG NGHỆ PHÂN TÁN CỦA CORBA
2.1 Tổng quan về hệ phân tán
dữ liệu được phân tán trên nhiều trạm,
được kết nối với nhau thông qua một
mạng máy tính.
Trang 21 Hệ phân tán bao gồm tập các máy tính
được nối với nhau bởi mạng máy tính và các thiết bị được cái đặt phần mềm được thiết kế để cung cấp một môi trường tích hợp và nhất quán (phần mềm của hệ phân tán).
Trang 222.1 Tổng quan về hệ phân tán(tt)
Hệ phân tán cho phép con người có thể hợp
tác, phối hợp các hoạt động một cách mềm dẻo
Chia sẻ tài nguyên
Chia sẻ tài nguyên
Mục tiêu của
hệ phân tán :
Chia sẻ tài nguyên
Chia sẻ tài nguyên
Trang 232.2 Mô hình phân tán
2.2.1 Chương trình môi giới trung gian ORB
Các đối tượng sau khi được xây dựng bằng
những ngôn ngữ lập trình khác nhau muốn
triệu gọi được nhau phải thông qua trình môi giới trung gian của Corba gọi là ORB (Object request broker :Trình môi giới các yêu cầu của đối tượng)
ORB là một dịch vụ phân tán thực thi yêu
cầu đến các đối tượng ở xa
Trang 242.2.1 Chương trình môi giới trung gian
Trang 252.2.1 Chương trình môi giới trung gian
ORB(tt)
tìm hiểu ở trên Các đối tượng cho dù
được cài đặt bằng bất kì ngôn ngữ nào
nếu như tuân thủ theo đặc tả IDL đều
được xem là đối tượng CORBA.
Trang 26 Tuy không cài đặt bản thân đối tượng
nhưng dựa vào đặc tả IDL ORB sẽ biết
được tên phương thức cần gọi, kiểu đối
số truyền cho phương thức,giá trị trả về của phương thức gọi
đối tượng cài đặt (Hình trên) ORB là
hoàn toàn trong suốt (transparent) với lập trình viên (hay người sử dụng đối tượng).
Trang 272.2.2 Cơ chế làm việc của ORB
ORB cũng dùng khái niệm lớp trung gian
_Stub và _Skel tương tự như cách làm việc của các đối tượng RMI
Thật sự _Stub và _Skel là hai lớp trung
gian được sinh ra từ trình biên dịch dựa vào
đặc tả IDL Bạn không cần phải viết mã lệnh cho lớp _Stub và _Skel
Trang 282.2.2 Cơ chế làm việc của ORB(tt)
Trang 292.2.2 Cơ chế làm việc của ORB(tt)
Đây là cơ chế hoạt động của trình môi
giới ORB liên lạc giữa trình khách và đối tượng CORBA trên máy chủ Thường thì việc cài đặt đối tượng CORBA trên máy chủ và triệu gọi đối tượng từ trình máy
khách
Trang 30Chương III:Cài đặt Corba và chương trình
ứng dụng
1.Cài đặt :
Định nghĩa giao diện remote: dùng ngôn ngữ
IDL viết giao diện remote
Biên dịch giao diện remote sang ngôn ngữ mong
muốn:
Ví dụ dùng trình biên dịch idlj.exe để biên dịch
giao diện remote từ Idl sang Java và sinh ra stub, skel cùng với mã dùng để kết nối với ORB
Cài đặt Server
Cài đặt Client
Thực thi ứng dụng
Trang 311 Cài đặt
Ví dụ: Giả sử muốn cài đặt đối tượng ở client bằng
Java, đối tượng ở server là Java
Viết interface bằng ngôn ngữ IDL (Idl_Inter.idl)
Ở máy client dùng idlj.exe dịch IDL Interface sang Java Interface, đồng thời tạo lớp Java-Stub (stub viết bằng Java)
idljava –fclient Idl_Inter.idl
Viết lớp client bằng Java.
Ở máy server dùng idlj.exe dịch IDL Interface sang Java Interface, đồng thời tạo lớp Java-Skel
Trang 34public static void main(String args[]) throws
java.lang.Exception{
System.out.println("Setup CORBA Hello Object");
Trang 35File Server.java (tt):
org.omg.CORBA.ORB
orb=org.omg.CORBA.ORB.init(args,null); HelloImpl corba= new HelloImpl();
orb.connect(corba);
org.omg.CORBA.Object nameService =
orb.resolve_initial_references("NameService"); NamingContext nsContext
=NamingContextHelper.narrow(nameService);
Trang 36System.out.println("Waiting for client ");
java.lang.Object obj = new java.lang.Object(); synchronized (obj){
obj.wait();
}
}
}
Trang 37File Client.java :
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
public class Client{
public static void main(String args[]) throws
Trang 38File Client.java (tt):
//Chuyen tham chieu ve doi tuong NamingContext
NamingContext nsContext =
NamingContextHelper.narrow(nameService);
//tao duong dan mang ten doi tuong
NameComponent nc=new NameComponent("Hello","");
NameComponent path[]={nc};
//Lay ve tham chieu cua doi tuong CORBA tren may chu dua vao ten
Hello corba=HelloHelper.narrow(nsContext.resolve(path)); System.out.println(corba.sayHello() );
}
}
Trang 40Bước 2(tt)
Chuyển đặc tả đối tượng CORBA sang ngôn ngữ Java cho Server
idlj -fserver -OldImplBase Hello.idl
Chuyển đặc tả đối tượng CORBA sang ngôn ngữ Java cho Client
idlj -fclient Hello.idl
Trang 41Kết quả nhận được từ bước 2 gồm các file sau :
Trang 42Biên dịch chương trình nguồn
javac *.java
Trang 43Chạy chương trình(tt)
của CORBA có tên nameService
Mở một cửa sổ mới sau đó thực thi lệnh bên server
ORBInitialHost 127.0.0.1
127.0.0.1
Trang 44LOGO