Misplaced Pages

Directory service

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

In computing , a directory service or name service maps the names of network resources to their respective network addresses . It is a shared information infrastructure for locating, managing, administering and organizing everyday items and network resources, which can include volumes, folders, files, printers, users, groups, devices, telephone numbers and other objects. A directory service is a critical component of a network operating system . A directory server or name server is a server which provides such a service. Each resource on the network is considered an object by the directory server. Information about a particular resource is stored as a collection of attributes associated with that resource or object.

#784215

48-399: A directory service defines a namespace for the network. The namespace is used to assign a name (unique identifier) to each of the objects. Directories typically have a set of rules determining how network resources are named and identified, which usually includes a requirement that the identifiers be unique and unambiguous . When using a directory service, a user does not have to remember

96-421: A namespace is a set of signs ( names ) that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified . Namespaces are commonly structured as hierarchies to allow reuse of names in different contexts. As an analogy, consider a system of naming of people where each person has a given name, as well as

144-456: A class, one should specify either its fully qualified name, which means namespace followed by the class name, or add a using statement. This, eliminates the need to mention the complete name of all classes in that namespace. In the above examples, System is a namespace, and Console and Convert are classes defined within System . [REDACTED] In Python , namespaces are defined by

192-470: A family name shared with their relatives. If the first names of family members are unique only within each family, then each person can be uniquely identified by the combination of first name and family name; there is only one Jane Doe, though there may be many Janes. Within the namespace of the Doe family, just "Jane" suffices to unambiguously designate this person, while within the "global" namespace of all people,

240-452: A name prefix. The following XML distinguishes between information about the HTML table and furniture by prefixing "h" and "f" at the beginning of the elements. A name in a namespace consists of a namespace name and a local name. The namespace name is usually applied as a prefix to the local name. In augmented Backus–Naur form : When local names are used by themselves, name resolution

288-414: A name, and the terms are sometimes used interchangeably. However, the context of a name may also be provided by other factors, such as the location where it occurs or the syntax of the name. For many programming languages, namespace is a context for their identifiers . In an operating system, an example of namespace is a directory. Each name in a directory uniquely identifies one file or subdirectory. As

336-414: A namespace is defined with a namespace block. Within this block, identifiers can be used exactly as they are declared. Outside of this block, the namespace specifier must be prefixed. For example, outside of namespace abc , bar must be written abc::bar to be accessed. C++ includes another construct that makes this verbosity unnecessary. By adding the line to a piece of code, the prefix abc::

384-527: A part of the Java platform —the package java.lang contains classes core to the language, and java.lang.reflect contains core classes specifically relating to reflection. In Java (and Ada , C# , and others), namespaces/packages express semantic categories of code. For example, in C#, namespace System contains code provided by the system (the .NET Framework ). How specific these categories are and how deep

432-441: A rule, names in a namespace cannot have more than one meaning; that is, different meanings cannot share the same name in the same namespace. A namespace is also called a context , because the same name in different namespaces can have different meanings, each one appropriate for its namespace. Following are other characteristics of namespaces: As well as its abstract language technical usage as described above, some languages have

480-582: A specific keyword used for explicit namespace control, amongst other uses. Below is an example of a namespace in C++: A namespace in computer science (sometimes also called a name scope ) is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols (i.e. names). An identifier defined in a namespace is associated only with that namespace. The same identifier can be independently defined in multiple namespaces. That is, an identifier defined in one namespace may or may not have

528-686: A unique object or a unique class of objects, where the "object" or class may be an idea, person, physical countable object (or class thereof), or physical noncountable substance (or class thereof). The abbreviation ID often refers to identity, identification (the process of identifying), or an identifier (that is, an instance of identification). An identifier may be a word, number, letter, symbol, or any combination of those. The words, numbers, letters, or symbols may follow an encoding system (wherein letters, digits, words, or symbols stand for [represent] ideas or longer names) or they may simply be arbitrary. When an identifier follows an encoding system, it

SECTION 10

#1732771836785

576-459: Is a hierarchical namespace . A hierarchy is recursive if the syntax for the namespace names is the same for each subdelegation. An example of a recursive hierarchy is the Domain name system . An example of a non-recursive hierarchy are Uniform Resource Name representing an Internet Assigned Numbers Authority (IANA) number. A namespace name may provide context ( scope in computer science) to

624-434: Is a language-independent label, sign or token that uniquely identifies an object within an identification scheme . The suffix "identifier" is also used as a representation term when naming a data element . ID codes may inherently carry metadata along with them. For example, when you know that the food package in front of you has the identifier "2011-09-25T15:42Z-MFR5-P02-243-45", you not only have that data, you also have

672-559: Is a separate namespace, so that the directories "letters" and "invoices" may both contain a file "to_jane". In computer programming , namespaces are typically employed for the purpose of grouping symbols and identifiers around a particular functionality and to avoid name collisions between multiple identifiers that share the same name. In networking , the Domain Name System organizes websites (and other resources) into hierarchical namespaces . Element names are defined by

720-477: Is common to have hundreds or thousands of identifiers. Namespaces (or a similar technique, see Emulating namespaces ) provide a mechanism for hiding local identifiers. They provide a means of grouping logically related identifiers into corresponding namespaces, thereby making the system more modular . Data storage devices and many modern programming languages support namespaces. Storage devices use directories (or folders) as namespaces. This allows two files with

768-429: Is essential for any kind of symbolic processing. In computer languages , identifiers are tokens (also called symbols ) which name language entities. Some of the kinds of entities an identifier might denote include variables , types , labels , subroutines , and packages . A resource may carry multiple identifiers. Typical examples are: The inverse is also possible, where multiple resources are represented with

816-514: Is known as the fully qualified class name ). Like C++, Java offers a construct that makes it unnecessary to type the package name ( import ). However, certain features (such as reflection ) require the programmer to use the fully qualified name. Unlike C++, namespaces in Java are not hierarchical as far as the syntax of the language is concerned. However, packages are named in a hierarchical manner. For example, all packages beginning with java are

864-454: Is no longer needed. Identifiers that are not explicitly declared within a namespace are considered to be in the global namespace. These identifiers can be used exactly as they are declared, or, since the global namespace is unnamed, the namespace specifier :: can be prefixed. For example, foo can also be written ::foo . Namespace resolution in C++ is hierarchical. This means that within

912-490: Is not a problem for the same ID number to be used at both companies. For example, if Bill works for company X and Jane works for company Y, then it is not a problem for each of them to be employee #123. In this analogy, the ID number is the identifier, and the company serves as the namespace. It does not cause problems for the same identifier to identify a different person in each namespace. In large computer programs or documents it

960-547: Is often referred to as a code or id code . For instance the ISO/IEC 11179 metadata registry standard defines a code as system of valid symbols that substitute for longer values in contrast to identifiers without symbolic meaning. Identifiers that do not follow any encoding scheme are often said to be arbitrary Ids ; they are arbitrarily assigned and have no greater meaning. (Sometimes identifiers are called "codes" even when they are actually arbitrary, whether because

1008-466: Is used to decide which (if any) particular name is alluded to by some particular local name. Delegation of responsibilities between parties is important in real-world applications, such as the structure of the World Wide Web. Namespaces allow delegation of identifier assignment to multiple name issuing organisations whilst retaining global uniqueness. A central Registration authority registers

SECTION 20

#1732771836785

1056-498: The using directive for reasons other than backwards compatibility (e.g., convenience) is considered to be against good code practices. In Java , the idea of a namespace is embodied in Java packages . All code belongs to a package, although that package need not be explicitly named. Code from other packages is accessed by prefixing the package name before the appropriate identifier, for example class String in package java.lang can be referred to as java.lang.String (this

1104-465: The German tank problem ). Opaque identifiers—identifiers designed to avoid leaking even that small amount of information—include "really opaque pointers " and Version 4 UUIDs . In computer science , identifiers (IDs) are lexical tokens that name entities . Identifiers are used extensively in virtually all information processing systems. Identifying entities makes it possible to refer to them, which

1152-462: The assigned namespace names allocated . Each namespace name is allocated to an organisation which is subsequently responsible for the assignment of names in their allocated namespace. This organisation may be a name issuing organisation that assign the names themselves, or another Registration authority which further delegates parts of their namespace to different organisations. A naming scheme that allows subdelegation of namespaces to third parties

1200-470: The hierarchy ), adding attributes to the must-may list. Directory services are often central to the security design of an IT system and have a correspondingly-fine granularity of access control. Replication and distribution have distinct meanings in the design and management of a directory service. Replication is used to indicate that the same directory namespace (the same objects) are copied to another directory server for redundancy and throughput reasons;

1248-575: The identifier "Model T" identifies the class (model) of automobiles that Ford's Model T comprises; whereas the unique identifier "Model T Serial Number 159,862" identifies one specific member of that class—that is, one particular Model T car, owned by one specific person. The concepts of name and identifier are denotatively equal, and the terms are thus denotatively synonymous ; but they are not always connotatively synonymous, because code names and Id numbers are often connotatively distinguished from names in

1296-593: The 1980s, the ITU and ISO created the X.500 set of standards for directory services, initially to support the requirements of inter-carrier electronic messaging and network-name lookup. The Lightweight Directory Access Protocol (LDAP) is based on the X.500 directory-information services, using the TCP/IP stack and an X.500 Directory Access Protocol (DAP) string-encoding scheme on the Internet . Systems developed before

1344-542: The X.500 include: LDAP/X.500-based implementations include: Open-source tools to create directory services include OpenLDAP, the Kerberos protocol and Samba software , which can function as a Windows domain controller with Kerberos and LDAP back ends . Administration is by GOsa or Samba SWAT. Name services on Unix systems are typically configured through nsswitch.conf . Information from name services can be retrieved with getent . Namespace In computing ,

1392-435: The calling module's namespace, and those names can be accessed from the calling module without the qualified name: Since this directly imports names (without qualification) it can overwrite existing names with no warnings. A special form of the statement is from ... import * which imports all names defined in the named package directly in the calling module's namespace. Use of this form of import, although supported within

1440-563: The contents of a different table through a key, which technique is called denormalization ; another technique could be the utilization of replicas for increasing actual throughput). Directory schemas are object classes, attributes, name bindings and knowledge (namespaces) where an object class has: Attributes are sometimes multi-valued, allowing multiple naming attributes at one level (such as machine type and serial number concatenation , or multiple phone numbers for "work phone"). Attributes and object classes are usually standardized throughout

1488-592: The developer. This often results in a conflict when trying to mix XML documents from different XML applications. This XML carries HTML table information: This XML carries information about a table (i.e. a piece of furniture): If these XML fragments were added together, there would be a name conflict. Both contain a <table>...</table> element, but the elements have different content and meaning. An XML parser will not know how to handle these differences. Name conflicts in XML can easily be avoided using

Directory service - Misplaced Pages Continue

1536-548: The full name must be used. Prominent examples for namespaces include file systems , which assign names to files. Some programming languages organize their variables and subroutines in namespaces. Computer networks and distributed systems assign names to resources, such as computers , printers , websites , and remote files. Operating systems can partition kernel resources by isolated namespaces to support virtualization containers . Similarly, hierarchical file systems organize files in directories. Each directory

1584-500: The hierarchies go differ from language to language. Function and class scopes can be viewed as implicit namespaces that are inextricably linked with visibility, accessibility, and object lifetime . Namespaces are heavily used in C# language. All .NET Framework classes are organized in namespaces, to be used more clearly and to avoid chaos. Furthermore, custom namespaces are extensively used by programmers, both to organize their work and to avoid naming collisions . When referencing

1632-543: The hypothetical namespace food::soup , the identifier chicken refers to food::soup::chicken . If food::soup::chicken doesn't exist, it then refers to food::chicken . If neither food::soup::chicken nor food::chicken exist, chicken refers to ::chicken , an identifier in the global namespace. Namespaces in C++ are most often used to avoid naming collisions . Although namespaces are used extensively in recent C++ code, most older code does not use this facility because it did not exist in early versions of

1680-414: The individual modules, and since modules can be contained in hierarchical packages, then namespaces are hierarchical too. In general when a module is imported then the names defined in the module are defined via that module's namespace, and are accessed in from the calling modules by using the fully qualified name. The from ... import ... statement can be used to insert the relevant names directly into

1728-455: The industry; for example, X.500 attributes and classes are often formally registered with the IANA for their object ID. Therefore, directory applications try to reuse standard classes and attributes to maximize the benefit of existing directory-server software. Object instances are slotted into namespaces; each object class inherits from its parent object class (and ultimately from the root of

1776-402: The language, is generally discouraged as it pollutes the namespace of the calling module and will cause already defined names to be overwritten in the case of name clashes. Python also supports import x as y as a way of providing an alias or alternative name for use by the calling module: Identifier An identifier is a name that identifies (that is, labels the identity of) either

1824-403: The language. For example, the entire C++ Standard Library is defined within namespace std , but before standardization many components were originally in the global namespace. A programmer can insert the using directive to bypass namespace resolution requirements and obtain backwards compatibility with older code that expects all identifiers to be in the global namespace. However the use of

1872-692: The metadata that tells you that it was packaged on September 25, 2011, at 3:42pm UTC, manufactured by Licensed Vendor Number 5, at the Peoria, IL, USA plant, in Building 2, and was the 243rd package off the line in that shift, and was inspected by Inspector Number 45. Arbitrary identifiers might lack metadata. For example, if a food package just says 100054678214, its ID may not tell anything except identity—no date, manufacturer name, production sequence rank, or inspector number. In some cases, arbitrary identifiers such as sequential serial numbers leak information (i.e.

1920-434: The original naming convention, which had formerly been latent and moot, become painfully apparent, often necessitating retronymy , synonymity , translation/ transcoding , and so on. Such limitations generally accompany the shift away from the original context to the broader one. Typically the system shows implicit context (context was formerly assumed, and narrow), lack of capacity (e.g., low number of possible IDs, reflecting

1968-451: The outmoded narrow context), lack of extensibility (no features defined and reserved against future needs), and lack of specificity and disambiguating capability (related to the context shift, where longstanding uniqueness encounters novel nonuniqueness). Within computer science, this problem is called naming collision . The story of the origination and expansion of the CODEN system provides

Directory service - Misplaced Pages Continue

2016-424: The physical address of a network resource; providing a name locates the resource. Some directory services include access control provisions, limiting the availability of directory information to authorized users . Several things distinguish a directory service from a relational database . Data can be made redundant if it aids performance (e.g. by repeating values through rows in a table instead of relating them to

2064-421: The replicated namespace is governed by the same authority. Distribution is used to indicate that multiple directory servers in different namespaces are interconnected to form a distributed directory service; each namespace can be governed by a different authority. Directory services were part of an Open Systems Interconnection (OSI) initiative for common network standards and multi-vendor interoperability. During

2112-406: The same identifier (discussed below). Many codes and nomenclatural systems originate within a small namespace . Over the years, some of them bleed into larger namespaces (as people interact in ways they formerly had not, e.g., cross-border trade, scientific collaboration, military alliance, and general cultural interconnection or assimilation). When such dissemination happens, the limitations of

2160-415: The same meaning as the same identifier defined in another namespace. Languages that support namespaces specify the rules that determine to which namespace an identifier (not its definition) belongs. This concept can be illustrated with an analogy. Imagine that two companies, X and Y, each assign ID numbers to their employees. X should not have two employees with the same ID number, and likewise for Y; but it

2208-458: The same name to be stored on the device so long as they are stored in different directories. In some programming languages (e.g. C++ , Python ), the identifiers naming namespaces are themselves associated with an enclosing namespace. Thus, in these languages namespaces can nest, forming a namespace tree . At the root of this tree is the unnamed global namespace . It is possible to use anonymous structs as namespaces in C since C99 . In C++ ,

2256-467: The sense of traditional natural language naming. For example, both " Jamie Zawinski " and " Netscape employee number 20" are identifiers for the same specific human being; but normal English-language connotation may consider "Jamie Zawinski" a "name" and not an "identifier", whereas it considers "Netscape employee number 20" an "identifier" but not a "name." This is an emic indistinction rather than an etic one. In metadata, an identifier

2304-405: The speaker believes that they have deeper meaning or simply because they are speaking casually and imprecisely.) The unique identifier ( UID ) is an identifier that refers to only one instance —only one particular object in the universe. A part number is an identifier, but it is not a unique identifier—for that, a serial number is needed, to identify each instance of the part design. Thus

#784215