CosNaming: :NamingContext_var NameContext; NameContext = CosNaming::NamingContext::_narrow
(NameService);
Π Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ 3 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ NameService Β«ΡΡΠΆΠ°Π΅ΡΡΡΒ», Ρ.Π΅. ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡ Ρ Π΅ΠΌΡ ΡΠΈΠΏΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π°Π» ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈ ΠΌ Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ NameContext. Π‘ ΠΏΠΎ ΠΌ ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° NameContext ΠΏΡΠΎΠ³ΡΠ° ΠΌΠΌ Π°-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ ΠΌ Π΅ΡΠΎΠ΄ resolve(). Π‘ΡΡΠΎΠΊΠΈ 24-27 ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ° ΠΌΠΌ Ρ8.3 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Ρ Π΄Π» Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈ Ρ ΠΈ ΠΌ Π΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΠΌ Π΅ΡΠΎΠ»Ρ resolve ().
Name .length (1);
Name[Q].id = CORBA::string_dup (Β«InflectionΒ»); Name[C].kind = CORBA::string_dup (""); try {
ObjectReference = NameContext->resolve (Name);
}
ΠΠ΅ΡΠΎΠ΄ resolve() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΈΠΌΡ Β«InflectionΒ». ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅8.3 (ΡΡΡΠΎΠΊΠ°28). ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π΅Π΅ Β«ΡΡΠ·ΠΈΡΡΒ», Π° Π·Π°ΡΠ΅ΠΌ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»Π΅Π½, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΅Π³ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΡΠ΅ΠΌ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ΅.
class object_reference{ //.. .
protected:
CORBA::Object_var NameService;
CosNaming::NamingContext_var NameContext;
CosNaming::Name Name;
CORBA::Object_var ObjectReference; public:
object_reference(char *Service,CORBA::ORB_var Orb);
CORBA::Object_var objectReference(void);
void objectName(char *FileName,CORBA::ORB_var Orb);
void objectName(char *OName); //. . . }
ΠΡΠΎ Π³ ΡΠ°ΠΌΠΌΠ° 8.4 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅ΠΈ ΠΌ Ρ Ρ Π΅ΡΡΠ²Π° ΠΏΡΠΎΡΡΠΎ Π³ ΠΎ ΠΊΠ°ΡΠΊΠ°ΡΠ½ΠΎ Π³ ΠΎ ΠΊ Π» Π°ΡΡΠ° obj ect_reference, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΡΡ.
Π ΠΏΡΠΎ Π³ ΡΠ° ΠΌΠΌ Π΅ 8.4 (ΡΡΡΠΎΠΊΠ° 6) ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈ ΠΌ Π°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Remote ΡΠΈΠΏΠ° object_reference. Π ΡΡΡΠΎΠΊΠ΅ 8 ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΌ Π΅ΡΠΎΠ΄Π°:
Remote.obj ectReference();
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ»Π°ΡΡ object_reference ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠΎ Π½ ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° object_reference (ΠΎ Π½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅ 6 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 8.4) ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
object_reference::object_reference(char *Service,
CORBA::ORB_var Orb)
{
NameService = Orb->resolve_initial_references (Service); NameContext = CosNaming::NamingContext::_narrow (
NameService);
}
ΠΡΠΎΡ ΠΊΠΎ Π½ ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ»ΡΠΆΠ±Ρ ΠΈ ΠΌ Π΅Π½ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊ Π» Π°ΡΡΠ° NameContext. Π ΡΡΡΠΎΠΊΠ΅ 7 ΠΈ ΠΌ Ρ ΡΡΠΎ Π³ ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΌ Π΅ΡΠΎΠ»Ρ objectName (). ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΠ΅ΡΠΎΠ΄ objectName () ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ Π» Π΅Π΄ΡΡ Ρ ΠΈ ΠΌ ΠΎΠ±ΡΠ°Π·ΠΎ ΠΌ.
void object_reference::objectName(char *OName) {
Name.length (1);
Name[0].id = CORBA::string_dup (OName); Name[0].kind = CORBA::string_dup ("");
try {
ObjectReference = NameContext->resolve (Name);
} catch(...) {
cerr Β« " Problem resolving Name " Β« endl; throw;
}
}
ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° objectName() ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΡΡΡΠ»ΠΊΠ΅ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π»ΠΈΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ objectReference() (ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ8.4). Π ΠΌΠ΅ΡΠΎΠ΄Π΅ objectName () ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ resolve (). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 8.3 ΠΈ 8.4 ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΒ», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΡ IOR-ΡΡΡΠ»ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ»ΡΠΆΠ±Ρ ΠΈΠΌΠ΅Π½. Π ΡΠ΅ΡΡΡ intranet ΠΈΠ»ΠΈ Internet ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΡΠΈ ΠΆΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Web-ΡΠ»ΡΠΆΠ±.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠ°Ρ
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ»ΡΠΆΠ±Ρ ΠΈΠΌΠ΅Π½ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ 8.3 ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ Π°Π΄Π°ΠΏΡΠ΅Ρ. ΠΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π°Π΄Π°ΠΏΡΠ΅Ρ (ΡΠΌ. ΡΠΈΡ. 8.6) Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ORB-Π±ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ CORBA-ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Β«Π½Π°Π΅ΠΌΠ½ΡΠΌΒ» ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅Ρ ΠΊΠ½ΠΈΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Β«ΠΏΠΎΠ΄ΡΡΡΠ°Π²ΡΠ΅ΠΉΒ» Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΡΡΠΈ. Π‘ ΡΡΠΎΠΉ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΡΡΡΡ Π½Π°ΠΏΠ΅ΡΠ΅Π±ΠΎΠΉ ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΆΡΡΠ½Π°Π»ΠΈΡΡΡ, Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ½ΡΠ΅ Π°Π³Π΅Π½ΡΡ ΠΈ ΡΡΠΈΡΡΡ. ΠΠ½Π°ΠΌΠ΅Π½ΠΈΡΠΎΡΡΡ ΡΠ΄ΠΎΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΠΉ, Π½ΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π΅Π»Π°Π΅Ρ Π·Π° Π½Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ. CORBA-ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΒ» ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ ΠΈ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»Ρ Β«Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΡΡΠΈΒ» Π² CORBA-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΊΠ»ΠΈΠ΅Π½Ρ (ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ) Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ CORBA-ΠΎΠ±ΡΠ΅ΠΊΡ, Π½ΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ³ΡΠ°Ρ ΡΠΎΠ»Ρ Β«Π½Π°Π΅ΠΌΠ½ΠΎΠ³ΠΎΒ» ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ. ΠΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ CORBA-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. CORBA-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π‘++-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΡΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Java, Smalltalk, Fortran ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ Π°Π΄Π°ΠΏΡΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ½ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±ΡΠ»Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π° Π΄Π»Ρ ORB-Π±ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. CORBA-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ²: Basic Object Adapter (BOA) ΠΈ Portable Object Adapter (POA). Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠ°Π½Π΄Π°ΡΡ CORBA Π±ΡΠ» ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠΠ-Π°Π΄Π°ΠΏΡΠ΅ΡΠ°, Π½ΠΎ ΠΎΠ½ Π½Π΅ Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΈ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π ΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ΅Π» Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠ΅Π΄ΡΡΠ², Π½ΠΎ Π΅Π³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π½Π° Π±Π°Π·Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ (ΡΠ°Π±Π». 8.4).
Π’Π°Π±Π»ΠΈΡΠ° 8.4. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°Ρ ΠΈ ΠΉ
ΠΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Π Π΅ΠΆΠΈΠΌ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Β Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ, Π½Π΅ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ, Π±ΠΈΠ±-
Π»ΠΈΠΎΡΠ΅ΠΊΠ° permethod
ΠΡΡΡ Β ΠΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
ΠΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ·Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»Ρ (ΡΠ΅ΡΠ²Π΅ΡΠ°), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠ΅ΠΆΠΈΠΌ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΡΡΡ. Π Ρ ΠΎΡΡ Π² ΡΡΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ, ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π»ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ CORBA-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π ΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ. Π ΠΠ-Π°Π΄Π°ΠΏΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ:
β’Β ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
β’Β ΡΡΠ°Π½Π·ΠΈΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ;
β’Β Π½Π΅ Ρ Π²Π½ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Ρ Ρ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²;
β’Β ΠΏΠ΅ΡΠΌΠ°Π½Π΅Π½ΡΠ½ΡΠ΅ (ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅) ΠΎΠ±ΡΠ΅ΠΊΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π ΠΠ-Π°Π΄Π°ΠΏΡΠ΅ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. CORBA-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ β ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°ΠΏΡΠΎΡΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ORB-Π±ΡΠΎΠΊΠ΅ΡΠΎΠΌ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π·Π²Π΅Π½Π°, ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π² Π²ΡΠ·ΠΎΠ²Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ POA-Π°Π΄Π°ΠΏΡΠ΅Ρ. ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (ΡΠΈΡ. 8.10).