The PEAK Developers' Center   NamingSystem UserPreferences
 
HelpContents Search Diffs Info Edit Subscribe XML Print View
The following 619 words could not be found in the dictionary of 50 words (including 50 LocalSpellingWords) and are highlighted below:
Abstract   Accounting   Addresses   All   Allows   An   Analysis   And   As   Asking   Big   Bindings   But   By   Cases   Center   Company   Competitive   Composite   Compound   Concepts   Contents   Context   Contexts   Copier   Cos   Create   Dev   Developers   Different   Directory   Eby   Enterprise   Event   Example   Examples   Extra   Federation   Filesystem   Finally   For   Glossary   Here   Hierarchical   How   In   Inc   Initial   Interoperability   Introduction   Java   Let   Link   Links   Long   Ls   Multiple   Must   Names   Naming   Notice   Object   Obtain   Obviously   Of   Often   Or   Other   Phillip   Pv2   Python   Ref   Reference   Referenced   Related   Resources   Search   Service   Services   Set   So   Some   Started   Store   Subcontext   System   Systems   Table   That   The   These   This   Thus   Tools   Transient   Tutorial   Use   We   What   Where   Whether   While   Writing   ability   accept   access   accessed   accessible   accessing   according   across   actual   adaptation   adapter   add   address   addresses   advanced   aisle   all   allow   allowing   already   also   although   always   an   and   anonymous   any   applicable   application   applications   applied   approach   arbitrary   are   area   areas   aren   arise   around   as   ask   associated   at   attribute   attributes   authors   automatically   available   back   base   based   be   because   between   bin   bind   binding   bindings   boilerplate   both   bound   brevity   build   built   but   by   called   can   candidate   canned   certain   change   changed   choice   chosen   class   classes   clearer   clerk   close   cn   code   com   combination   combine   combining   come   comparison   component   composite   compound   concepts   configuration   connect   connections   consider   considerably   contained   contains   contents   context   contexts   contrast   contributed   contributions   controls   convenient   conventions   could   course   create   created   creating   creation   currently   cvs   data   database   databases   de   default   define   defined   defines   deployed   detached   detailed   developer   difference   differences   different   difficult   direct   directly   directory   distributed   do   documents   does   don   dots   dramatically   ease   easier   easy   eby   effectively   either   enterprises   environment   equivalent   essentially   etc   even   event   events   every   example   examples   expose   extend   extensible   factories   far   features   federation   file   filenames   files   filesystem   find   flat   flexible   follow   follows   for   format   formatting   forward   found   framework   friendly   from   functional   functionality   functions   get   given   glossary   go   going   good   grocer   grocery   ground   hand   handle   handlers   handles   has   have   hierarchical   hierarchy   home   human   id   idioms   if   implement   implementation   implementing   import   important   improved   in   included   includes   incorporate   independent   individual   information   ins   inside   instead   integrated   intend   intentional   interface   interfaces   interfacing   intermediary   interpretation   is   it   item   items   iterate   its   java   jndi   just   keeping   kind   large   lasting   later   left   let   lets   like   link   links   list   located   location   long   look   looked   lookup   lookups   low   mail   maintain   makes   making   managing   mangling   manually   many   mapping   mappings   maps   means   meat   method   methods   might   modelling   more   most   move   much   must   my   name   named   names   naming   necessary   need   needed   needs   negligible   new   news   not   note   object   objects   obtain   odds   of   off   offering   offers   often   on   one   only   operations   or   other   others   ou   our   outside   over   override   own   package   page   parent   parsing   part   particular   parts   path   paths   pay   peak   per   permitting   placing   plans   please   point   practice   presence   present   price   primary   printers   privileges   probably   process   produce   product   products   programs   properties   provide   provided   provider   providers   provides   providing   quantities   question   quickly   quite   rarely   rather   read   rebind   records   refer   related   remove   rename   reorganized   replacing   requires   requiring   resolved   resource   resources   respectively   rest   results   retrieve   reusable   rewriting   right   same   sarna   save   say   scale   schemas   scheme   schemes   see   seem   sense   sensitive   separated   separator   separators   serialization   servers   service   services   set   shares   shelf   shortcuts   should   side   significant   similar   similarity   simple   simplification   simply   so   software   some   somebody   something   sources   specialized   specific   specifically   specification   stability   standardized   standards   state   still   store   straightforward   string   subcontexts   subdirectories   such   sun   superset   supplied   supply   support   supports   symbolic   syntax   syntaxes   system   systems   talk   target   tasks   telecommunity   tells   terminology   terms   than   that   the   their   them   themselves   there   these   they   thing   this   those   through   time   to   tools   top   try   tutorial   types   unbind   under   uniform   unless   unlikely   until   up   urllib   us   use   used   useful   uses   using   usr   utility   variants   variety   vary   very   via   vocabulary   vs   want   way   we   well   what   where   which   while   who   why   will   with   without   work   working   would   writing   yet   you   your  

Clear message


1 An Introduction to PEAK Naming Services

Abstract

Enterprise applications use resources, and resources move around. Writing code to directly connect to databases or application servers simply doesn't scale. PEAK's naming package is an extensible framework for providing uniform access to any software-accessible resource. Resources may be accessed by an address (a string or object that contains all necessary information to access a resource) or by a name (which is looked up in a context or naming service to retrieve the resource or its address).

Developers can extend the framework at will by creating their own name and address types, syntaxes, and context objects (naming services). Developers can also supply or override the default serialization and de-serialization handlers (called state factories and object factories respectively). All address types and naming services can be used as the target of attribute bindings provided by the peak.binding package, such as binding.Obtain(). And, there are naming API functions like naming.lookup() which can be applied to any kind of name or address.

Finally, PEAK-supplied or developer-supplied context objects can provide the ability to bind (save) an object or its address under a chosen name, to unbind or remove the object, rename bound objects, and handle LinkRef (symbolic link) objects.


Table of Contents

  1. An Introduction to PEAK Naming Services
    1. Naming Concepts
      1. Names vs. Addresses
      2. Contexts, Naming Systems, and Federation
      3. Compound and Composite Names
    2. The peak.naming package
    3. Use Cases
    4. Competitive Analysis
      1. JNDI
      2. CORBA Naming Service ("CosNaming")
      3. Other Tools & Systems
    5. Related Links


1.1 Naming Concepts

What's a naming system, and why do you want one for your programs? Naming systems let you use names instead of addresses to refer to the objects you use. Whether the objects in question are database connections, printers, documents, or distributed object services, replacing addresses with names makes programs clearer, more flexible, and easier to maintain.

1.1.1 Names vs. Addresses

What's the difference between a name and an address, and why is it important? A name tells us what something is, or is for, while an address tells us where to find it. This is significant because "where" something is can change far more quickly than "what" it is.

Let's say for example, we are in a grocery store, and I would like to obtain a certain canned meat product. I could either say, "go to the back of the store, in aisle 4, on the right-hand side, and get the item from the top shelf," or I could simply say, "I'd like a can of spam please." Obviously, if the store is later reorganized, my "address" for spam may have to be changed, but as long as it's still called spam, I can always ask a clerk or look at a store directory to find it by its name. (Of course, this means that I must go through an intermediary to obtain my spam, rather than going directly to it, but that is the price I pay for the brevity and stability of using a name.)

Notice that the presence of an intermediary also means that names are context-sensitive. That is, the interpretation of a name can vary according to the context. Asking my grocer or my e-mail software for "spam" will produce very different results, according to who I ask! But an address is context-independent, and will always refer to the same location. (Of course, what is in that location might change over time.)

NamesAddresses
What an object is or doesHow to find it
May be human-friendly formatOften detailed and difficult to read
Long-lastingTransient, may change for a given object
Must be resolved via a naming serviceAllows direct access
Referenced location can be changed at the naming serviceMust be changed at every point of use
Context-sensitiveContext-independent

1.1.2 Contexts, Naming Systems, and Federation

A context is something that provides a mapping from names to objects. For example, a directory in a filesystem is a context that maps from filenames to file and directory objects. Contexts may provide a variety of operations for using or managing the mapping from names to objects. For example, one can create subdirectories of a directory, add or remove files, etc. Here are some examples of naming contexts:

Example ContextExample NamesExtra Services Examples
Filesystem/usr/bin
/home/somebody/foo
Create or read symbolic links
Set access privileges
LDAP Directorycn=Phillip Eby,o=eby-sarna.com
cn=Copier,ou=Accounting,o="BigCompany, Inc."
Store data associated with names
Search for objects based on associated data
DNScvs.eby-sarna.com
peak.telecommunity.com
Multiple records per name

Different contexts follow different naming conventions and syntax for their names. As you can see from the examples, these conventions and syntax can vary considerably. DNS names, for example, are hierarchical from right to left, with the name parts separated by dots. UNIX filesystem names, on the other hand, are hierarchical from left to right, and use '/' as a separator. Some naming systems are "flat", and do not have a hierarchy or separators at all.

A set of conventions for naming, and the contexts that implement those conventions, are called a naming system. Naming systems that use hierarchical names can have contexts contained in other contexts, in the sense that a /usr/bin directory can be contained inside a /usr directory.

While most naming systems are quite useful by themselves, it is also often useful to combine them. For example, you are probably accessing this page via a combination of a DNS name (peak.telecommunity.com) and a filesystem name (/DevCenter/NamingSystem). Names which incorporate parts from more than one naming system are called composite names, and the process of combining naming systems is called federation.

1.1.3 Compound and Composite Names

Hierarchical, path-like names are called compound names

XXX etc...

1.2 The peak.naming package

1.3 Use Cases

1.4 Competitive Analysis

Interoperability note: although PEAK uses very similar terminology, concepts, and even interfaces to JNDI, CORBA Naming, and other similar standards, it does not provide any actual implementation code to talk to providers of these other services. The good news is that, given the close similarity in interfaces, writing an adapter to expose JNDI or CORBA naming services to the PEAK naming framework should be very straightforward, should the need arise.

In practice, it's unlikely that such adaptation will be useful outside of enterprises where such naming services are already deployed, and if they are already deployed, the odds that the environment is a candidate for use of PEAK seem rather low. In any event, for PEAK's primary authors, actual interfacing with CORBA or JNDI is of negligible utility.

1.4.1 JNDI

JNDI features not present in PEAK

PEAK features not present in JNDI

1.4.2 CORBA Naming Service ("CosNaming")

PEAK's naming system offers a functional superset of the CORBA naming service interfaces. The primary differences are:

1.4.3 Other Tools & Systems

urllib, ?

1.5 Related Links

 

PythonPowered
EditText of this page (last modified 2007-03-25 22:33:58)
FindPage by browsing, title search , text search or an index
Or try one of these actions: AttachFile, DeletePage, LikePages, LocalSiteMap, SpellCheck