Bài giảng lập trình ứng dụng mạng bài 4 GV võ tấn dũng

47 186 0
Bài giảng lập trình ứng dụng mạng  bài 4   GV  võ tấn dũng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM LẬP TRÌNH ỨNG DỤNG MẠNG BÀI CORBA (Common Object Request Broker Architecture) GIẢNG VIÊN: VÕ TẤN DŨNG PHẦN GV: Võ Tấn Dũng CÁC KHÁI NIỆM KHÁI NIỆM CORBA GV: Võ Tấn Dũng • Các nhà lập trình mong muốn tìm tiếng nói chung cho tất ngôn ngữ lập trình có • CORBA (kiến trúc môi giới đối tượng chung) hình thành từ tổ chức nghiên cứu quốc tế OMG (Object Management Group) Tham vọng OMG đưa cách để đối tượng viết ngôn ngữ khác gọi lẫn theo mô hình đối tượng phân tán • CORBA ngôn ngữ lập trình, CORBA ngôn ngữ đặc tả giao tiếp (IDL-Interface Description Language) NGÔN NGỮ ĐẶC TẢ • Các ngôn ngữ lập trình khác thường có điểm chung lời gọi thủ tục, hàm, kiểu liệu, tham số truyền vào hàm, trị trả hàm Điều cài đặt hàm phải khai báo hàm • Người ta có ý tưởng dùng ngôn ngữ khái quát để đặc tả hàm dùng công cụ dịch hàm sang ngôn ngữ cụ thể GV: Võ Tấn Dũng • Ví dụ: Trong C/C++: int get_price(char * product) Trong Basic: function get_price(product as string) as integer Trong Java: public static int get_price(String product) • CORBA quy định tập hợp mô tả hàm, kiểu liệu, cách khai báo để đặc tả đối tượng Đặc tả đối tượng giống khái niệm giao tiếp interface Java Nó mô tả chức đối tượng thông qua hàm, phương thức, thuộc tính,… mà cài đặt mã lệnh ngôn ngữ đặc tả Chính mà CORBA gọi ngôn ngữ đặc tả giao tiếp IDL • CORBA cung cấp số tiện ích để dịch đặc tả sang ngôn ngữ lập trình • Ví dụ: idl2cpp để dịch sang ngôn ngữ C idl2pas để dịch sang ngôn ngữ Pascal idlj (idl2java) để dịch sang ngôn ngữ Java GV: Võ Tấn Dũng IDL TRONG CORBA IDL ÁNH XẠ SANG JAVA Bảng ánh xạ IDL Java: JAVA module interface constant boolean char, wchar octet string, wstring short, unsigned short long, unsigned long long long, unsigned long long float double enum, struct, union sequence, array exception operation package Interface public static final boolean char byte String short int long float double class array class method - Để chuyển từ interface Java sang IDL ta dùng lệnh: rmic –idl YourObject.class - Để chuyển từ đặc tả IDL sang interface Java ta dùng lệnh: idlj YourObject.idl GV: Võ Tấn Dũng IDL CORBA PHẦN GV: Võ Tấn Dũng CORBA VÀ MÔ HÌNH PHÂN TÁN ORB(Object Request Broker) chương trình môi giới trung gian Java CORBA Object GV: Võ Tấn Dũng Internet / Mạng IDL ORB IDL C++ CORBA Object ORB • Các đối tượng sau viết ngôn ngữ lập trình khác muốn gọi lẫn phải thông qua trình môi giới trung gian CORBA ORB • ORB xây dựng độc lập với máy ảo Java (JMV) Tuy nhiên từ Java 1.2 máy ảo Java nhúng khả ORB xem phần Java chuẩn CƠ CHẾ LÀM VIỆC CỦA ORB • ORB dùng khái niệm lớp trung gian Stub Skel tương tự cách làm việc đối tượng RMI Thật Stub Skel sinh từ trình biên dịch dựa vào đặc tả IDL Ta không cần phải viết mã lệnh cho lớp Stub Skel Máy Client Máy Sever C++ Client Java CORBA Lớp trung gian Stub Lớp trung gian Skel giao thức IIOP Lời gọi đối tượng lý thuyết Lời gọi đối tượng thực tế ORB GV: Võ Tấn Dũng ORB Object X QUY TRÌNH XÂY DỰNG ỨNG DỤNG CORBA TRÊN MÁY CHỦ: • Đặc tả đối tượng X ngôn ngữ IDL CORBA • Chuyển đặc tả X thành mô tả ngôn ngữ cụ thể (ví dụ dùng trình biên dịch idlj.exe để chuyển đặc tả X sang ngôn ngữ Java) Dựa vào đặc tả IDL yêu cầu trình biên dịch tạo lớp trung gian Skel • Cài đặt đối tượng X ngôn ngữ Java • Sử dụng đặc tả IDL đối tượng X yêu cầu trình biên dịch tạo lớp trung gian Stub Tùy theo ngôn ngữ muốn viết máy khách mà ta sử dụng trình biên dịch thích hợp • Khi trình khách gọi đối tượng chủ, thực tế lời gọi chuyển qua lớp Stub máy khách, gởi đến trình môi giới ORB Trình ORB máy khách kết nối với trình ORB máy chủ theo giao thức IIOP Trình ORB máy chủ chuyển lời gọi cho lớp trung gian Skel máy chủ Cuối đối tượng CORBA máy chủ thực thi phương thức 10 GV: Võ Tấn Dũng TRÊN MÁY KHÁCH: JNDI & DỊCH VỤ COS NAMING CỦA CORBA(tt3) • Tiến hành cài đặt chương trình sau để lưu trữ đối tượng theo cấu trúc hình slide trên: (xem nội dung file kèm theo sau đây) Generic.idl GenericServant.java NamingRegister.java 33 GV: Võ Tấn Dũng NamingBrowse.java PHẦN GV: Võ Tấn Dũng LƯU ĐỊA CHỈ THAM CHIẾU CỦA ĐỐI TƯỢNG CORBA Ở DẠNG CHUỖI • Nếu thấy dịch vụ COS Naming CORBA phức tạp cách truy xuất khác dễ dàng mà không cần đến COS Naming • CORBA cho phép chuyển đổi tham chiếu đối tượng máy chủ thành chuỗi (String) Ta lưu chuỗi thành tập tin chuyển đến trình máy khách Trình máy khách đọc nội dung chuỗi sau khôi phục chuỗi trở lại thành tham chiếu đối tượng Kỹ thuật CORBA gọi String field (còn có tên khác IORInteroperable Object References) Ví dụ: • Sử dụng lại đối tượng Generic trên, cài đặt lại tập tin Setup.java Client.java (sách trang 220 221) 35 GV: Võ Tấn Dũng KỸ THUẬT STRING FIELD (IOR) PHẦN GV: Võ Tấn Dũng THAM CHIẾU NGƯỢC TRONG CORBA (CALLBACK) THAM CHIẾU NGƯỢC (CALL BACK) 37 GV: Võ Tấn Dũng • Tham chiếu ngược lời gọi từ trình chủ ngược đối tượng đặt máy khách Đối tượng CORBA cho phép ta thực kỹ thuật • Sau ta viết lại đối tượng RMI AtServer AtClient số (nói RMI) theo cách CORBA • AtServer đối tượng CORBA cài đặt máy chủ AtClient đối tượng CORBA chạy máy khách Chương trình khách gọi AtServer máy chủ gửi tham chiếu AtClient đến trình chủ AtServer sử dụng tham chiếu AtClient để gọi ngược trình khách BÀI VÍ DỤ VỀ CALLBACK (STEP 1) • Bước 1: Đặc tả đối tượng AtClient AtServer ngôn ngữ IDL file ClientServer.idl interface AtClient{ void callClientMethod(in string message); }; • biên dịch ClientServer.idl: idlj -fserver ClientServer.idl idlj -fclient ClientServer.idl 38 GV: Võ Tấn Dũng interface AtServer{ void registerClient(in AtClient c); void callServerMethod(in string message); } BÀI VÍ DỤ VỀ CALLBACK (STEP 2) • Bước 2: /*AtClientServant.java*/ public class AtClientServant extends _AtClientImplBase { public void callClientMethod (String message){ System.out.println(message); } } /*AtServerServant.java*/ public class AtServerServant extends _AtClientImplBase { AtClient client; public void registerClient(AtClient c){ client=c; } public void callServerMethod(String message){ System.out.println(message); for(int i=1;ijavac *.java Khởi động dịch vụ tnameserv.exe cửa sổ DOSpromp khác: C:\CORBA>callback>tnameserv.exe Chạy trình chủ cửa sổ DOS-prompt khác: C:\CORBA\callback>java Setup C:\CORBA\callback>java Client 44 GV: Võ Tấn Dũng Chạy trình chủ cửa sổ DOS-prompt khác: PHẦN GV: Võ Tấn Dũng CÁC VẤN ĐỀ KHÁC Các vấn đề khác •Một số vấn đề như: 46 GV: Võ Tấn Dũng – Dynamic Method Call – RMI-over-IIOP – Visibroker hãng Borland Xem Chương Ba, sách “Java tập 2”, tác giả Phương Lan, NXB Thống Kê, năm 2004 GV: Võ Tấn Dũng Hết BÀI [...]... 16 GV: Võ Tấn Dũng C:\CORBA\Hello>tnameserv Initial Naming Context: IOR:000000000000002b4 944 4c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e6 743 6f 6e 746 578 744 578 743 a312e30000000000001000000000000009a000102000000000c3139322e3136 382e312e320003 840 00000000 045 afabcb0000000020000f4 240 0000000100000000000000020000 0008526f6f 745 04f41000000000d 544 e616d65536572766963650000000000000008000000010000 0001 140 0000000000002000000010000002000000000000100010000000205010001000100200001...PHẦN 3 GV: Võ Tấn Dũng XÂY DỰNG ỨNG DỤNG CORBA TRONG MÔI TRƯỜNG JAVA CHƯƠNG TRÌNH HELLO WORLD • Ta thực hiện viết một chương trình Hello World đơn giản Chương trình CORBA trên máy client sẽ gọi đối tượng trên máy server Đối tượng trên máy server sẽ trả về chuỗi mang lời chào “Hello CORBA” Công việc phía Client: • Xây dựng chương trình gọi đối tượng Hello của máy chủ 12 GV: Võ Tấn Dũng Công việc... 21 GV: Võ Tấn Dũng • Mở một cửa sổ DOS-prompt khác để chạy trình khách từ dòng lệnh: TÌM HIỂU CÁC ĐỐI TƯỢNG CORBA ĐÃ CÀI ĐẶT • Các tập tin trung gian cài đặt phía máy chủ (server): HelloOperations.java Hello.java HelloPOA.java • Các tập tin trung gian cài đặt phía máy khách (client): HelloHelper.java HelloHolder.java Hello.java HelloOperations.java 22 GV: Võ Tấn Dũng _HelloStub.java PHẦN 4 GV: Võ Tấn. .. GV: Võ Tấn Dũng CÁC CÁCH KHỞI ĐỘNG TRÌNH MÔI GIỚI ORB KHỞI ĐỘNG ORB BẰNG LỜI GỌI HÀM • Ở ví dụ Hello nói trên chúng ta đã khởi động trình môi giới ở hai phía khách chủ bằng cách gọi lệnh: ORB orb=ORB.init(args,null); 24 GV: Võ Tấn Dũng • Phương thức tĩnh init() của lớp ORB cần hai đối số Đối số thứ nhất dùng để nhận các tùy chọn từ các dòng lệnh nếu có Đối số thứ hai là các tùy chọn do lập trình viên... NamingRegister.java 33 GV: Võ Tấn Dũng NamingBrowse.java PHẦN 7 GV: Võ Tấn Dũng LƯU ĐỊA CHỈ THAM CHIẾU CỦA ĐỐI TƯỢNG CORBA Ở DẠNG CHUỖI • Nếu thấy dịch vụ COS Naming của CORBA quá phức tạp thì vẫn còn cách truy xuất khác dễ dàng mà không cần đến COS Naming • CORBA cho phép chuyển đổi tham chiếu của một đối tượng trên máy chủ thành một chuỗi (String) Ta lưu chuỗi này thành tập tin và chuyển đến trình máy khách Trình. .. thống file Trình tnameserv.exe chính là dịch vụ lưu trữ theo cách này trong CORBA 30 GV: Võ Tấn Dũng JNDI & DỊCH VỤ COS NAMING CỦA CORBA JNDI & DỊCH VỤ COS NAMING CỦA CORBA(tt1) Market Market Stock Stock Name Component Object A Toys Toys Name Context Fruit Fruit Object B Shelf Shelf Book Book Object C Name Component Name Context Tên ràng buộc của đối tượng Đối tượng được 31 ràng buộc GV: Võ Tấn Dũng Panel... tùy chọn do mã lệnh thiết lập 26 GV: Võ Tấn Dũng /*Setup.java*/ import org.omg.CORBA.*; import org.util.Properties; public class Client { public static void main(String args[]) { Properties props = new Properties(); props.put(“org.omg.CORBA.ORBInitialPort”,”1050”); props.put(“org.omg.CORBA.ORBInitialHost”, ”172.16.11.12”); ORB orb = ORB.init(args,props); … } } PHẦN 6 GV: Võ Tấn Dũng TÌM HIỂU JDNI VÀ DỊCH... tượng Kỹ thuật này trong CORBA gọi là String field (còn có tên khác là IORInteroperable Object References) Ví dụ: • Sử dụng lại đối tượng Generic ở trên, cài đặt lại 2 tập tin Setup.java và Client.java (sách trang 220 và 221) 35 GV: Võ Tấn Dũng KỸ THUẬT STRING FIELD (IOR) PHẦN 8 GV: Võ Tấn Dũng THAM CHIẾU NGƯỢC TRONG CORBA (CALLBACK) ... Book và Panel • Nếu ứng từ Market tham chiếu đến Object A thì phải chỉ ra đường dẫn là: Market\Stock\Toys • Nếu ứng từ Market tham chiếu đến Object C thì: Market\Panel hoặc Market\Shelf\Book • Nếu ứng từ Stock tham chiếu đến Object B thì: Stock\Fruit 32 GV: Võ Tấn Dũng JNDI & DỊCH VỤ COS NAMING CỦA CORBA(tt2) JNDI & DỊCH VỤ COS NAMING CỦA CORBA(tt3) • Tiến hành cài đặt một chương trình sau đây để lưu... //khởi động trình môi giới đối tượng ORB ORB orb=ORB.init(args,null); //tạo đối tượng CORBA HelloServant servant= new HelloServant(); //kết nối đối tượng CORBA với trình môi giới ORB orb.connect(servant); //lấytham chiếu đến dịch vụ đăng ký tnameserv org.omg.CORBA.Object nameService= orb.resolve_initial_references("NameService"); //code còn ở slide tiếp theo 17 GV: Võ Tấn Dũng Xây dựng chương trình cài ... IOR:000000000000002b4 944 4c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e6 743 6f 6e 746 578 744 578 743 a312e30000000000001000000000000009a000102000000000c3139322e3136 382e312e320003 840 00000000 045 afabcb0000000020000f4 240 0000000100000000000000020000... YourObject.idl GV: Võ Tấn Dũng IDL CORBA PHẦN GV: Võ Tấn Dũng CORBA VÀ MÔ HÌNH PHÂN TÁN ORB(Object Request Broker) chương trình môi giới trung gian Java CORBA Object GV: Võ Tấn Dũng Internet / Mạng IDL...PHẦN GV: Võ Tấn Dũng CÁC KHÁI NIỆM KHÁI NIỆM CORBA GV: Võ Tấn Dũng • Các nhà lập trình mong muốn tìm tiếng nói chung cho tất ngôn ngữ lập trình có • CORBA (kiến trúc môi

Ngày đăng: 04/12/2015, 07:39

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan