Límites del Sistema de Nombres
La lección ¿Qué es un nombre?
explica en detalle cómo usar un nombre mixto para expresar un nombre que
expande varios sistemas de nombrado. Esta sección explica cómo un proveedor de
servicio determina qué componentes del nombre mixto procesar y cáales pasar.
En efecto, el proveedor de servicios necesita determinar el límite del
sistema de nombres que separa unos componentes de sus vecinos (aguasabajo).
Separación Fuerte y Débil
El ejemplo de la lección ¿Qué
es un nombre? tiene el siguiente nombre mixto.
cn=homedir,cn=Jon Ruiz,ou=People/tutorial/report.txt
Este nombre mixto tiene tres componentes.
cn=homedir,cn=Jon Ruiz,ou=People
tutorial
report.txt
El primer componente pertence al sistema de nombres LDAP, y el segundo pertenece
al sistema de ficheros (UNIX). Como se ve en este ejemplo, un nombe mixto puede
tener varios componentes (posiblemente consecutivos) del mismo sistema de
nombres ("tutorial" y "report.txt"
son del sistema del ficheros), pero un componente no puede expandir más de un
sistema de nombres. Por eso, la correspondencia entre el separador de
componentes de nombres mixtos -- barra inclinada (/)--y los
límites del sistema de nombres podría ser uno-a-uno.
En esta lección, los proveedores de servicios se dividen en los que tratan
el separador de componentes de nombres mixtos como un límite del sistema de
nombres y los que no. Aquellos que soportan separación fuerte, y
aquellos que soportan separación débil.
- Un proveedor que soporta separación fuerte procesa un nombre mixto
consumiendo el componente inicial del nombre y dejando el resto de los
componentes para otro sistema de nombres.
- Un proveedor que soporta separación débil no trata necesariamente al
separador como un límite de sistema de nombres. Cuando procesa un nombre
compuesto, consume tantos componentes iniciales como sea apropiado para el
sistema de nombres subyacente.
El principal factor para determinar si un proveedor soporta separación
fuerte o débil es la síntaxis del sistema de nombres subyacente. Si este
sistema tiene un espacio de nombres plano o un espacio de nombres jerárquico
con un separador de nombres compuesto que no tiene conflictos con el separador
de nombres mixtos, entones el correspondiente proveedor de servicios soportará
separación fuerte. De otra forma, el proveedor soporará separación débil.
Por supuesto, puede resolver este conflicto de síntaxis y soportar separación
fuerte requiriendo que cualquier separador de nombre compuesto esté escapado o
entrecomillado. Este requerimiento podría ser un incoveniente para los usuarios
de ese proveedor pero podría ser la única forma de que algunos proveedores
soporten la federación.
Entero los proveedores de servicios que soportan separación fuerte se
incluyen el LDAP, el sistema de ficheros Windows y el registro RMI. El sistema
de nombres LDAP es jerárquico y tiene el caracter coma (",")
como separador de componentes de nombres compuestos. El sistema de ficheros
Windows también es jerárquico y tiene el caracter de barra invertida ("\")
como separador. Ninguno de estos separadores tiene conflictos con el separador
de componentes de nombres mixtos. El espacio de nombres RMI es un espacio plano.
Los proveedores de servicios que soportan separación débil incluyen el sistema
de nombres COS y el sistema de ficheros UNIX.
Condiciones para Soportar Separación Débil
La separación débil es conveniente porque hace que los nombres mixtos parezcan
claros (se requieren menos escapes o comillas). También permite al usuario ser
menos consciente de los límites del sistema de nombres. Sin embargo, no todos
los proveedores de servicios pueden soportar separación débil. Ciertas
restricciones podrían forzar a un proveedor a soportar la separación fuerte.
Por ejemplo, si la síntaxis del espacio de nombres es jerárquica y usa el
caracter de la barra inclinada ("/") como separador
pero su nombres se leen de derecha a izquierda, entonces el proveedor no puede
usar la separación débil. Esto es porque el conflicto de dirección evita
cualquier determinación sensible de los límites del sistema de nombres.
El sistema de nombres es un terminal (los componentes de ese sistema de
nombres sólo pueden aparecer al final de un nombre mixto), entonces el
proveedor de servicio puede soportar la separación débil. Por ejemplo,
supongamos que un espacio de nombres de una aplicación de hoja de cálculo
tiene una síntaxis de izquierda-a-derecha y usa la barra inclinada como
separador de componentes. Supongamos también que los nombres de las celdas de
la hoja de cálculo siempre serán terminales; es decir, cosas que no serán
nombradas en relación a la celda de la hoja de cálculo. En este caso, el
proveedor de servicios para el sistema de nombrados de la hoja de cálculo puede
soportar la separación débil. Dandole un nombre mixto, consumirá todos sus
componentes.
Si el sistema de nombres no es terminal pero el proveedor de servicios puede
determinar sintácticamente el límite del sistema de nombres, entonces puede
soportar separación débil. En este caso, el proveedor de servicio usaría una
regla sintáctica para determinar cuántos componentes de un nombre mixto
consumir. Por ejemplo, los componentes de un nombre compuesto podrían tener una
caracterísitca distintiva que permita al proveedor seleccionar los componentes.
Como ejemplo específico, un nombre DCE X.500 se parece a esto.
c=us/o=wiz/ou=people
Un proveedor para este sistema de nombres puede soportar separación débil
buscando los componentes que tienen parejas clave/valor separadas por caracteres
de igual ("="). Sin embargo, restringirá los tipos de
sistemas de nombres que se pueden federar directamente con este sistema de
nombres. En el ejemplo anterior, un sistema de nombres que tenga nombres que
consisten en parejas clave/valor separadas por caracteres de igual no puede
estar federado.
Si el sistema de nombres no es terminal pero el proveedor de servicios puede
determinar dinámicamente los límites del sistema de nombres, puede soportar
separación débil. El sistema de nombres subyacente debe poder devolver los
nombres de los componentes residuales sin resolver. Para determinar qué
componentes consumir, el proveedor resolverá el nombre mixto completo y,
basándose en la resolución, usará cualquier residuo para determinar qué no
es un sistema de nombres.