Top Banner
THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG CHUYÊN ĐỀ CORBA CHUYÊN ĐỀ CORBA GVHD : Phùng Hữu Phú SVTH : Trương Nghĩa An – 50000017 Phạm Trần Ngọc Bảo – 50000123 Hồ Nguyên Đạt – 50000486 Đỗ Thanh Hải - 50000628
36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: corba

THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNGTHUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG

CHUYÊN ĐỀ CORBACHUYÊN ĐỀ CORBA

GVHD: Phùng Hữu Phú

SVTH: Trương Nghĩa An – 50000017

Phạm Trần Ngọc Bảo – 50000123

Hồ Nguyên Đạt – 50000486

Đỗ Thanh Hải - 50000628

Page 2: corba

NỘI DUNGNỘI DUNG

Giới thiệu CORBAGiới thiệu CORBACORBA và mô hình phân tánCORBA và mô hình phân tánPhương thức động Phương thức động Trình môi giới VisiBrokerTrình môi giới VisiBrokerCORBA services: Naming serviceCORBA services: Naming serviceChương trình ứng dụng (demo)Chương trình ứng dụng (demo)

Page 3: corba

GIỚI THIỆU VỀ CORBAGIỚI THIỆU VỀ CORBA

Vấn đề phát sinh :Vấn đề phát sinh :Các đối tượng trong ngôn ngữ lập trình Các đối tượng trong ngôn ngữ lập trình

hướng đối tượng thiết kế bằng ngôn ngữ hướng đối tượng thiết kế bằng ngôn ngữ nào thì chỉ có mã lệnh tương ứng của nào thì chỉ có mã lệnh tương ứng của ngôn ngữ đó mới truy xuất được chúng.ngôn ngữ đó mới truy xuất được chúng.

Làm sao các đối tượng được thiết kế bằng Làm sao các đối tượng được thiết kế bằng các ngôn ngữ lập trình khác nhau có thể các ngôn ngữ lập trình khác nhau có thể triệu gọi và sử dụng lẫn nhau ?triệu gọi và sử dụng lẫn nhau ?

Page 4: corba

GIỚI THIỆUGIỚI THIỆU

C++ Bus Object Delphi Moto Object

Java Passenger Object

? ?

?CORBA

CORBACORBA

Page 5: corba

GIỚI THIỆUGIỚI THIỆU

Các ngôn ngữ lập trình đều có các điểm Các ngôn ngữ lập trình đều có các điểm chung là các lời gọi hàm, thủ tục, tham số chung là các lời gọi hàm, thủ tục, tham số truyền, trị trả về…truyền, trị trả về…

Ngôn ngữ đặc tả ánh xạ các điểm chung Ngôn ngữ đặc tả ánh xạ các điểm chung đó thành những ngôn ngữ lập trình khác đó thành những ngôn ngữ lập trình khác nhau.nhau.

CORBA là ngôn ngữ đặc tả (description CORBA là ngôn ngữ đặc tả (description language)language)

Page 6: corba

IDLIDL

CORBA còn được gọi là ngôn ngữ đặc tả CORBA còn được gọi là ngôn ngữ đặc tả giao tiếp (IDL – Interface Description giao tiếp (IDL – Interface Description Language)Language)

Mô tả chức năng của đối tượng thông qua Mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính…hàm, phương thức, thuộc tính…

Không chứa bất kỳ cài đặt mã lệnh nào Không chứa bất kỳ cài đặt mã lệnh nào Đặc tả đối tượng dựa trên khái niệm Đặc tả đối tượng dựa trên khái niệm

interface trong Java.interface trong Java.

Page 7: corba

VÍ DỤ VỀ IDLVÍ DỤ VỀ IDL

Đặc tả đối tượng Calculator bằng ngôn ngữ IDL Đặc tả đối tượng Calculator bằng ngôn ngữ IDL của CORBAcủa CORBA

Tạo file Calculator.idl Tạo file Calculator.idl interface Calculator {interface Calculator {

long addNumber ( in long x, in long y );long addNumber ( in long x, in long y );};};

Để chuyển file đặc tả này sang các ngôn ngữ Để chuyển file đặc tả này sang các ngôn ngữ lập trình khác chúng ta có thể dùng như sau:lập trình khác chúng ta có thể dùng như sau: idl2cpp Calculator.idl // chuyển sang C++idl2cpp Calculator.idl // chuyển sang C++ idlj Calculator.idl // chuyển sang javaidlj Calculator.idl // chuyển sang java

Page 8: corba

VÍ DỤ VỀ IDLVÍ DỤ VỀ IDL

Kết quả là chúng ta có được tập tin Kết quả là chúng ta có được tập tin CalculatorOperations.java như sau:CalculatorOperations.java như sau:

public interface CalculatorOperationspublic interface CalculatorOperations

{{

int addNumber(int x, int y);int addNumber(int x, int y);

} // interface CalculatorOperations} // interface CalculatorOperations

Bước cài đặt hàm addNumber() là do lập trình Bước cài đặt hàm addNumber() là do lập trình viên thực hiện.viên thực hiện.

CORBA chỉ giúp triệu gọi hàm addNumber() từ CORBA chỉ giúp triệu gọi hàm addNumber() từ đối tượng CalculatorOperations.đối tượng CalculatorOperations.

Page 9: corba

ÁNH XẠ TỪ IDL SANG JAVAÁNH XẠ TỪ IDL SANG JAVA

IDLIDL Java Javamodulemodule packagepackageinterfaceinterface interfaceinterfacestringstring java.lang.Stringjava.lang.Stringlonglong intintlong longlong long longlongfloatfloat floatfloatdoubledouble doubledoubleexceptionexception classclassoperation operation MethodMethod

Page 10: corba

VÍ DỤVÍ DỤ

+ CORBA IDL:+ CORBA IDL:module {module {

interface MathLibrary {interface MathLibrary {long add( in long x, in long y );long add( in long x, in long y ); string About( in string version );string About( in string version );

}}};};

+ Java :+ Java :package Math;package Math;public interface MathLibrary {public interface MathLibrary {

int add (int x, int y);int add (int x, int y);String About(String version);String About(String version);

}}

Page 11: corba

NHẬN XÉTNHẬN XÉT

Ngôn ngữ đặc tả trong mô hình CORBA Ngôn ngữ đặc tả trong mô hình CORBA gần giống với ngôn ngữ C.gần giống với ngôn ngữ C.

CORBA đưa ra từ khóa CORBA đưa ra từ khóa inin cho các biến cho các biến truyền vào theo trị và từ khóa truyền vào theo trị và từ khóa outout để lấy trị để lấy trị trả về.trả về.

Những thay đổi mới nhất về CORBA có Những thay đổi mới nhất về CORBA có thể tìm thấy ở trang thể tìm thấy ở trang www.omg.orgwww.omg.org

Page 12: corba

CORBA – MÔ HÌNH PHÂN TÁNCORBA – MÔ HÌNH PHÂN TÁN

Trình môi giới trung gian ORB (Object Trình môi giới trung gian ORB (Object Request Broker)Request Broker)

Cơ chế làm việc của ORBCơ chế làm việc của ORBGiao thức IIOP (Interoperate Internet Giao thức IIOP (Interoperate Internet

Object Protocol)Object Protocol)

Page 13: corba

ORB (Object Request Broker)ORB (Object Request Broker)

Các đối tượng sau khi tạo ra bởi các ngôn ngữ Các đối tượng sau khi tạo ra bởi các ngôn ngữ lập trình khác nhau phải được gọi thông qua một lập trình khác nhau phải được gọi thông qua một chương trình môi giới trung gian của CORBA chương trình môi giới trung gian của CORBA gọi là ORB.gọi là ORB.

ORB hoạt động nhờ ngôn ngữ đặc tả IDL.ORB hoạt động nhờ ngôn ngữ đặc tả IDL. Dựa vào IDL, ORB sẽ biết được tên phương Dựa vào IDL, ORB sẽ biết được tên phương

thức cần gọi, đối số, trị trả về,…Từ đó ORB có thức cần gọi, đối số, trị trả về,…Từ đó ORB có thể gọi phương thức của đối tuợng.thể gọi phương thức của đối tuợng.

ORB hoàn toàn trong suốt (transparent) đối với ORB hoàn toàn trong suốt (transparent) đối với lập trình viên và người sử dụng.lập trình viên và người sử dụng.

Page 14: corba

ORB (Object Request Broker)ORB (Object Request Broker)

OR

B

OR

B

ORB

Network

C++CorbaObject

DelphiCorbaObject

JavaCorbaObject

Page 15: corba

CƠ CHẾ HOẠT ĐỘNGCƠ CHẾ HOẠT ĐỘNG

ORB ORB

Intermidiate class_Stub

Intermidiate class_Skel

C++Client

JavaCorbaObject

IIOP

Client Server

Page 16: corba

GIAO THỨC IIOPGIAO THỨC IIOP

ĐĐược định nghĩa dựa trên TCP/IP.ược định nghĩa dựa trên TCP/IP.Cho phép các ORB của các ngôn ngữ Cho phép các ORB của các ngôn ngữ

khác nhau có thể giao tikhác nhau có thể giao tiếếp với nhau.p với nhau.Nhờ đó các đối tượng CORBA hiện Nhờ đó các đối tượng CORBA hiện

thực bởi các ngôn ngữ khác nhau có thực bởi các ngôn ngữ khác nhau có thể giao tithể giao tiếếp với nhau.p với nhau.

Page 17: corba

PHƯƠNG THỨC ĐỘNGPHƯƠNG THỨC ĐỘNG

Giới thiệuGiới thiệuMục đíchMục đíchƯu – khuyết điểmƯu – khuyết điểmSử dụngSử dụng

Page 18: corba

GIỚI THIỆUGIỚI THIỆU

Page 19: corba

MỤC ĐÍCHMỤC ĐÍCH

Client phát hiện các interface runtimeClient phát hiện các interface runtimePhục vụ các ứng dụng không thể Phục vụ các ứng dụng không thể

dùng cách gọi tĩnhdùng cách gọi tĩnhVí dụ: CORBA design toolVí dụ: CORBA design tool

Page 20: corba

ƯU - KHUYẾT ĐIỂMƯU - KHUYẾT ĐIỂM

Ưu điểm:Ưu điểm:Client không cần biết interface cho các server Client không cần biết interface cho các server

objectobjectCung cấp lựa chọn khi lấy kết quả trả vềCung cấp lựa chọn khi lấy kết quả trả về

Khuyết điểmKhuyết điểmChương trình phức tạpChương trình phức tạpChi phí caoChi phí caoDễ gây ra lỗiDễ gây ra lỗi

Page 21: corba

Tạo đối tượng Tạo đối tượng RequestRequest request()request()create_request()create_request()

Đóng gói đối tượng requestĐóng gói đối tượng requestadd_value()add_value() result()result()

Gọi phương thứcGọi phương thức invoke()invoke()send_deferred()send_deferred()

SỬ DỤNGSỬ DỤNG

Page 22: corba

GỌI PHƯƠNG THỨC ĐỘNGGỌI PHƯƠNG THỨC ĐỘNG

Friend.idlgreeting()

FriendServant.java Setup.java Client.java

IDL

Cài đặt

đối tượng

Đăng ký

đối tượng

Trình khách gọi

đối tượng

Page 23: corba

Giới thiệuGiới thiệuTrình môi giới trung gianTrình môi giới trung gianGiao tiếp giữa các đối tượng CORBA theo Giao tiếp giữa các đối tượng CORBA theo

giao thức IIOPgiao thức IIOPDo hãng Borland cài đặtDo hãng Borland cài đặtDownload miễn phí tại:Download miễn phí tại:

http://www.borland.com/visibroker

CORBA - ORB VisiBrokerCORBA - ORB VisiBroker

Page 24: corba

ServerPOA

POA

ROOT POA

Servant Manager

Active Object Map

ObjectID1ObjectID2ObjectID3

Servants

Client

CORBA - VISIBROKERCORBA - VISIBROKER

Page 25: corba

VisiBroker – các điểm căn bảnVisiBroker – các điểm căn bản

Dịch file IDLDịch file IDL Idl2java XXX.idlIdl2java XXX.idl

Biên dịch mã nguồn:Biên dịch mã nguồn:vbjc *.javavbjc *.java

Khởi động trình ORBKhởi động trình ORBosagent.exeosagent.exe

Chạy trình ứng dụngChạy trình ứng dụngvbj Clientvbj Clientvbj Servervbj Server

SỬ DỤNGSỬ DỤNG

Page 26: corba

CORBA SERVICECORBA SERVICE

Tương tác giữa các đối Tương tác giữa các đối tượng phân bốtượng phân bố

Page 27: corba

CORBA SERVICESCORBA SERVICES

Object Request BrokerObject Request Broker

Ob

ject life O

bject life cyclecycle

Nam

ing

Nam

ing

Even

tE

vent

Co

ncu

rency

Co

ncu

rency

Co

ntro

lC

on

trol

Trad

erT

rader

Tran

saction

Tran

saction

Qu

eryQ

uery

CORBA SERVICES

NamingNaming

Page 28: corba

NAMING SERVICENAMING SERVICE

Là dịch vụ cho phép truy xuất đến các đối Là dịch vụ cho phép truy xuất đến các đối tượng phân bố thông qua tên.tượng phân bố thông qua tên.

Được định nghĩa trong CosNaming.idlĐược định nghĩa trong CosNaming.idl

Page 29: corba

COSNAMINGCOSNAMING

Gồm có 2 interface chủ yếuGồm có 2 interface chủ yếuNamingComponentNamingComponentNamingContextNamingContext

Lưu trữ đối tượng theo kiến trúc cây phân Lưu trữ đối tượng theo kiến trúc cây phân cấp.cấp.

Page 30: corba

NamingComponentNamingComponent

Là thành phần chứa tên (tên nhãn hoặc tên Là thành phần chứa tên (tên nhãn hoặc tên tập tin)tập tin)

Có thể ràng buộc tên với một đối tượng Có thể ràng buộc tên với một đối tượng corba bất kỳ.corba bất kỳ.

Page 31: corba

NamingContextNamingContext

Là đối tượng dùng để tham chiếu đến một Là đối tượng dùng để tham chiếu đến một NamingComponent hay một NamingContext NamingComponent hay một NamingContext khác.khác.

Giống như thư mục trong hệ thống file.Giống như thư mục trong hệ thống file.Đặt tên dựa vào NamingComponent.Đặt tên dựa vào NamingComponent.

Page 32: corba

MÔ HÌNH LƯU TRỮ ĐỐI TƯỢNGMÔ HÌNH LƯU TRỮ ĐỐI TƯỢNG

MarketMarket

StockStock

ToysToys

FruitFruitShelfShelf

BookBook

PanelPanel

Object Object AA

Object Object BB

Object Object CC

Đối tượng Đối tượng NameContextNameContext

Đố

i tượ

ng

đư

ợc ràn

g b

uộ

ối tư

ợn

g đ

ượ

c ràng

bu

ộc

Đối tượng Đối tượng NameComponentNameComponent

Tên ràng buộc của đối tượngTên ràng buộc của đối tượng

Page 33: corba

CÁC HÀM CƠ BẢNCÁC HÀM CƠ BẢN

Tạo NamingContext:Tạo NamingContext:new_context()new_context()New_bind_context(NameComponent[] path)New_bind_context(NameComponent[] path)

Hủy NamingContext:Hủy NamingContext:Destroy()Destroy()

Lấy về đối tượng NamingContext:Lấy về đối tượng NamingContext:resolve_initial_references(ObjectId id)resolve_initial_references(ObjectId id)Resolve(NameComponent[] path)Resolve(NameComponent[] path)

Page 34: corba

CÁC HÀM CƠ BẢNCÁC HÀM CƠ BẢN

Tạo một bindTạo một bind Bind(NameComponent[] path, Object obj)Bind(NameComponent[] path, Object obj) Bind_context(NameComponent[] path, NameContext Bind_context(NameComponent[] path, NameContext

nc)nc) Rebind(NameComponent[] path, Object obj)Rebind(NameComponent[] path, Object obj)

Hủy một bindHủy một bind Unbind(NameComponent[] path)Unbind(NameComponent[] path)

Liệt kê các binding trong một contextLiệt kê các binding trong một context List(NameContext nc, BindingList bl, BindingIterator List(NameContext nc, BindingList bl, BindingIterator

bt) bt)

Page 35: corba

TÀI LIỆU THAM KHẢOTÀI LIỆU THAM KHẢO

Fundamental of distributed object system Fundamental of distributed object system – the CORBA perspective– the CORBA perspective

Teach yourself CORBA in 14 daysTeach yourself CORBA in 14 daysJAVA - Lập trình mạng.JAVA - Lập trình mạng.www.omg.orgwww.omg.orgwww.borland.com/visibrokerwww.borland.com/visibroker

Page 36: corba

THE ENDTHE END

THE END