1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
// $Id$
CONTENT
=======
This directory contains files implementing CosNaming idl interfaces
(from CORBA COSS), as well as a few utilities. Server code, service
executable, and documentation for using the service are located in
$TAO_ROOT/orbsvcs/Naming_Service.
UTILITIES
=========
Naming_{Client,Server}.{h,cpp} contain utility classes that can simplify
programs which play a role of Naming Service server or client. See
$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service.{h,cpp} and
$TAO_ROOT/orbsvcs/tests/Simple_Naming/client.{h,cpp} for examples of
using these classes.
IMPLEMENTATION
==============
The architecture for TAO's implementation of CosNaming::NamingContext
interface follows the Bridge pattern.
* TAO_Naming_Context (in Naming_Context_Interface.h) inherits from
POA skeleton, and plays the role of 'Abstraction' (aka 'Interface')
in the Bridge architecture - it forwards all client requests to a
'ConcreteImplementor' through an 'Implementor' pointer.
* TAO_Naming_Context_Impl (in Naming_Context_Interface.h) is an
abstract base class for all concrete implementations of
NamingContext functionality (i.e., 'Implementor').
* Currently, TAO Naming Service has two 'ConcreteImplementors':
TAO_Transient_Naming_Context (in Transient_Naming_Context.h), and
TAO_Persistent_Naming_Context (in Persistent_Naming_Context.h),
providing non-persistent and persistent, hash-table-based implementations of the
NamingContext functionality, correspondingly. Both
'ConcreteImplementors' inherit from TAO_Hash_Naming_Context (in
Hash_Naming_Context.h), which, in turn, inherits from
TAO_Naming_Context_Impl. TAO_Hash_Naming_Context factors out code
common to both 'ConcreteImplementors'. (Here we have a form of the
Template Method pattern).
* Other major classes:
- TAO_Persistent_Context_Index - facilitates implementation of the
Persistent version of the Naming Service.
- TAO_BindingsIterator - implements CosNaming::BindingIterator
interface. Can be used with either of the NamingContext 'ConcreteImplementors'.
* Persistent implementation of the Naming Service uses ACE_Allocators
and memory-mapped files.
The Bridge implementation class structure makes it easy to:
1) Create and plug-in different CosNaming::NamingContext implementations by
subclassing TAO_Naming_Context_Impl.
2) Dynamically load an appropriate NamingContext implementation at
run-time, based on the config file entry, by making TAO_Naming_Context_Impl
inherit from ACE_Service_Object...
TO-DO
=====
Extend CosNaming::NamingContext interface and its implementation to
support binding of more than one object per name and name
resolution according to policies (e.g., random or round robin), to provide
Load Balancing functionality.
|