Download miễn phí Đề tài Thi hành CORBA server





MỤC LỤC
 
Trang
LỜI NÓI ĐẦU 1
I. ÁNH XẠ TỪ IDL SANG C++ 2
1. Giới thiệu 2
2. Ánh xạ cho tên 2
3. Ánh xạ các kiểu dữ liệu cơ bản 3
4. Ánh xạ các kiểu dữ liệu phức 3
 
II. ÁNH XẠ PHÍA SERVER 16
 
1 . Mở đầu 16
2 . ánh xạ các giao tiếp 16
3. Các lớp servant 17
4. Hình thành đối tượng 19
5. Server main 20
6. Quy tắc chuyền tham số 21
6.1. Truyền tham số kiểu đơn giản. 22
6.2 Truyền tham số đối với kiểu dữ liệu phức tạp có độ dài cố định. 23
6.3 Truyền tham số mảng với số phần tử cố định 24
6.4 Truyền tham số string và wide string 26
6.5 Truyền tham số kiểu phức tạp có độ dài thay đổi và kiểu any 28
6.6 Truyền tham số mảng với các thành phần có độ dài thay đổi 29
6.7 Truyền tham số tham chiếu đối tượng 31
7. Phát sinh ngoại lệ 34
7.1 Phát sinh các ngoại lệ. 34
7.2 Các ngoại lệ hệ thống 35
7.3 Quản lí bộ nhớ và ngoại lệ 35
8. Tie classes 35
9 . Tổng kết 36
 
MỤC LỤC 37
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

_raise (); ID BadId; }; };
Các thuộc tính của lớp Exception là public vì vậy bạn có thể truy nhập trực tiếp.
Ánh xạ các các bộ phận
Các bộ phận của lớp ngoại lệ được ánh xạ theo cách tương tự như các cấu trúc. Tất cả các bộ phận của ngoại lệ là dữ liệu công cộng trong lớp của C++, và được truy nhập trực tiếp.
Var
Một lớp _var được sinh ra cho một ngoại lệ.
Out
Một lớp Out được sinh ra cho một ngoại lệ.
Các hàm bộ phận
Với ngoại lệ của IDL là TYPE có các hàm bộ phận sau:
static TYPE * _narrow(CORBA::Exception_ptr Except);
TYPE(); Đây là constructor mặc định cho ngoại lệ
TYPE(các tham chiếu bộ phận);
TYPE (const TYPE & From);
~TYPE ();
TYPE & operator=(const TYPE & From);
void _raise ();
* Quản lý các giao diện (interface)
Một giao diện trong IDL được ánh xạ sang một lớp của C++. Lớp này chứa các định nghĩa của các thao tác, các thuộc tính, các hằng, và các kiểu người dùng định nghĩa (UDTs).
Với một giao diện INTF, đoạn mã giao diện được sinh ra chứa các phần sau:
Kiểu tham chiếu đối tượng (INTF_ptr)
Kiểu biến tham chiếu đối tượng (INTF_var)
Hàm bộ phận tĩnh _duplicate
Hàm bộ phận tĩnh _narrow
Hàm bộ phận tĩnh _nil
UDTs
Các hàm bộ phận về các thuộc tính và các thao tác
Xét ví dụ sau:
// OMG IDL
module INVENT { interface Order { void cancelOrder (); }; };
Ánh xạ sang C++ như sau:
// C++ class INVENT { . . . class Order; typedef Order * Order_ptr;
class Order : public virtual CORBA::Object { . . . static Order_ptr _duplicate(Order_ptr obj); static Order_ptr _narrow(CORBA::Object_ptr obj); static Order_ptr _nil(); virtual void cancelOrder () = 0; . . . }; };
Các kiểu tham chiếu đối tượng và các hàm bộ phận được mô tả như sau:
static INTF_ptr _duplicate (INTF_ptr Obj)
Hàm bộ phận tĩnh này sao chép một tham chiếu đối tượng INTF đang tồn tại và trả lại một tham chiếu đối tượng INTF mới. Tham chiếu đối tượng INTF mới phải được giải phóng bằng việc gọi hamf bộ phận CORBA::realease. Nếu một lỗi xuất hiện thì một tham chiếu tới đối tượng INTF nil được trả lại. Đối số Obj xác định tham chiếu đối tượng được sao chép.
static INTF_ptr _narrow (CORBA::Object_ptr Obj)
Hàm bộ phận tĩnh này trả lại một tham chiếu đối tượng INTF mới dựa vào một tham chiếu đối tượng CORBA::Object_ptr đang tồn tại. Tham chiếu đối tượng Obiect_ptr có thể được khởi tạo bằng việc gọi hàm bộ phận CORBA::ORB::string_to_object hay có thể được trả lại như một tham chiếu từ một thao tác.
Tham chiếu đối tượng INTF_ptr phải tương ứng với một đối tượng INTF hay tương ứng với một đối tượng mà kế thừa từ đối tượng INTF. Tham chiếu đối tượng INTF mới phải được giải phóng bằng việc gọi hàm bộ phận CORBA::release. Đối số Obj xác định tham chiếu đối tượng để thu hẹp tới một tham chiếu đối tượng INTF. Tham biến Obj không bị thay đổi bởi các hàm bộ phận này và nên đựoc giải phóng bởi người sử dụng khi nó không được sử dụng nữa. Nếu Obj không được thu hẹp tới một tham chiếu đối tượng INTF thì một tham chiếu đối tượng INTF nil được trả lại.
static INTF_ptr _nil ( )
Hàm bộ phận static này trả lại một tham chiếu đối tượng nil mới cho giao diện INTF. Tham chiếu mới không phải được giải phóng bằng cách gọi hàm bộ phận CORBA::release.
Các kiểu tham chiếu đối tượng
Một lớp giao diện (INTF) là một lớp ảo; CORBA chuẩn không cho phép bạn:
Khởi tạo hay hold một instance của lớp giao diện.
Sử dụng một con trỏ hay một tham chiếu tới một lớp giao diện.
Thay vì đó bạn có thể sử dụng một kiểu tham chiếu đối tượng: lớp INTF_ptr hay INTF_var.
Bạn có thể giành được tham chiếu đối tượng bằng việc sử dụng hàm bộ phận static _nrrow. Các thao tác truy nhập trên các lớp này thì sử dụng toán tử ->
Lớp _var của INTF đơn giản hoá việc quản lý bộ nhớ bằng việc huỷ tự động tham chiếu đối tượng khi lớp _var của INTF nằm ngoài phạm vi được cấp phát lại.
Các thuộc tính
Một thuộc tính chỉ đọc trong OMG IDL được ánh xạ sang một hàm C++ mà hàm đó trả lại giá trị thuộc tính. Một thuộc tính đọc-ghi ánh xạ sang hai hàm C++ được chòng hàm, một hàm trả lại giá trị thuộc tính và một hàm trả lại tập giá trị thuộc tính. Tên của hàm bộ phận được chồng hàm là tên của thuộc tính. Các thuộc tính được tạo ra theo cách tương tự mà các hàm được tạo ra.
II. ¸nh x¹ phÝa server
Trong phÇn nµy chóng ta sÏ xem c¸ch mµ c¸c giao tiÕp IDL ¸nh x¹ sang c¸c líp C++ cïng víi sù hç trî viÖc t¹o vµ gäi ®èi t­îng CORBA ë bªn phÝa server vµ mét sè vÊn ®Ò liªn quan kh¸c .
1 . Më ®Çu :
Trong m« h×nh CORBA c¸c ®èi t­îng server thùc hiÖn bëi øng dông server.T¹i server, ®èi t­îng CORBA ®­îc thùc thi vµ thÓ hÞªn bëi c¸c hµm ng«n ng÷ lËp tr×nh vµ d÷ liÖu. C¸c thùc thÓ ng«n ng÷ lËp tr×nh thùc thi vµ thÓ hiÖn c¸c ®èi t­îng CORBA ®­îc gäi lµ c¸c servant.
C¸c servant cung cÊp c¸c phÇn th©n cña ®èi t­îng CORBA, hay nãi c¸ch kh¸c chóng lµ thÓ hiÖn cña c¸c ®èi t­îng CORBA.
Trong CORBA c¸c bé ®iÒu hîp ®èi t­îng(object adapter ) liªn kÕt c¸c ®èi t­îng CORBA víi c¸c servant cña ng«n ng÷ lËp tr×nh. VÒ kh¸i niÖm th× bé ®iÒu hîp ®èi t­îng lµm trung gian gi÷a ORB vµ c¸c servant cña ng«n ng÷ lËp tr×nh. Chóng cung cÊp c¸c dÞch vô ®Ó t¹o c¸c ®èi t­îng CORBA, tham chiÕu lªn c¸c ®èi t­îng ®ã vµ göi yªu cÇu tõ c¸c servant t­¬ng øng.
Bé ®iÒu hîp ®èi t­îng chuÈn ®Þnh nghÜa trong CORBA lµ POA (Portable Object Adapter ) nã cung cÊp c¸c ®Æc tr­ng cÇn thiÕt ®Ó kÝch ho¹t c¸c servant, ®Ó cã thÓ thÝch øng víi c¸c lo¹i ORB ®­îc cung cÊp bëi nhiÒu h·ng kh¸c nhau. Trong khi BOA ( Basic Object Adapter) còng lµ mét bé ®iÒu hîp ®èi t­îng nh­ng nã g¾n víi tõng lo¹i ORB cña h·ng cung cÊp nã. D­íi ®©y ta chØ xÐt POA .
POA
Manager
ORB
POA
Servants
Yªu cÇu
øng dông Server
Mèi quan hÖ gi÷a ORB, POA vµ c¸c servant
Mét øng dông server cã thÓ chøa nhiÒu thÓ hiÖn POA ®Ó hç trî c¸c ®èi t­îng CORBA víi c¸c ®Æc tÝnh kh¸c nhau ,hoÆc hç trî nhiÒu d¹ng thùc thi servant . Tuy nhiªn tÊt c¶ c¸c øng dông server ®Òu cã Ýt nhÊt mét POA gäi lµ Root POA . D­íi ®©y ta chØ giíi thiÖu c¸ch sö dông c¬ b¶n cña Root POA cÇn thiÕt cho viÖc gi¶i thÝch ¸nh x¹ C++ phÝa server :
C¸c yªu cÇu ®èi t­îng CORBA ®­îc c­ tró trong mét øng dông server ®­îc göi ®i tõ mét Client vµ chuyÓn ®Õn mét server ORB . Server ORB nµy sÏ gøi c¸c yªu cÇu tíi mét POA mµ t¹i ®ã ®èi t­îng ®­îc t¹o . POA lóc ®ã göi yªu cÇu tíi servant vµ t¹o ra ®èi t­îng ®Ých . Servant thùc hiÖn c¸c yªu cÇu vµ tr¶ vÒ kÕt qu¶ qua POA vµ ORB tíi client .
Server kh«ng thÓ chÊp nhËn bÊt k× yªu cÇu nµo cho ®Õn khi nã yªu cÇu ORB cña nã b¾t ®Çu l¾ng nghe c¸c yªu cÇu ®­îc göi tíi . Mét øng dông server cã thÓ cã nhiÒu POA , dßng yªu cÇu ®i vµo mçi POA ®­îc ®iÒu khiÓn bëi mét ®èi t­îng POA Manager g¾n víi POA ®ã . §Ó yªu cÇu tíi ®­îc POA POA Mangager cã thÓ xÕp hµng c¸c yªu cÇu vµ göi sau hoÆc cã thÓ huû bá c¸c yªu cÇu.
Cuèi cïng mçi yªu cÇu CORBA nhËn bëi øng dông server ph¶i ®­îc xö lý bëi mét servant.
Chøc n¨ng chÝnh cña ¸nh x¹ C++ phÝa server lµ ®Ó cho phÐp c¸c øng dông thi hµnh c¸c ®èi t­îng CORBA sö dông ®èi t­îng C++ trong vai trß cña c¸c servant .
C¸c líp C++ phÝa server t­¬ng øng víi c¸c giao tiÕp IDL ®­îc gäi lµ líp Skeleton . Chóng t­¬ng øng víi c¸c líp proxy phÝa client vµ ®­îc sinh bëi bé dÞch IDL sang file nguån C++ , råi ®­îc dÞch trong øng dông server . Kh«ng nh­ ...
 

Các chủ đề có liên quan khác

Top