JNDI: служба имен против службы каталогов

Что касается многословия Java/JNDI, являются ли «службы каталогов» просто более сложными версиями «служб именования»?

Если вы читаете глоссарий JNDI, в нем в основном определяются эти два следующим образом:

  • naming service – API, позволяющий выполнять операции в различных контекстах.
  • context - Очень похоже на HashMap
  • directory service – API, позволяющий выполнять операции с объектами каталога.
  • directory object - объект, находящийся в каталоге....(?!?!)

Итак, если я не ошибаюсь, похоже, что оба типа служб допускают CRUD-подобные операции с разными типами объектов, либо contexts (в случае службы имен), либо directory objects (в случае служб каталогов).

Итак, мой вопрос: какая разница?!? Разве оба этих типа объектов контекста/каталога на самом деле не являются просто хэш-картами/хэш-таблицами под капотом?

Я задыхаюсь от этих различий, потому что пытаюсь понять, когда что-то является службой имен, а когда — службой каталогов, и мне трудно оценить эти определения.


person IAmYourFaja    schedule 06.02.2012    source источник
comment
+1, потому что я ненавижу круговые определения: каталог: связанный набор объектов каталога. объект каталога: объект, который находится в каталоге. Арх!   -  person DNA    schedule 06.02.2012
comment
Отсюда (docs.oracle.com/javase/tutorial/jndi/concepts /directory.html): directory service = naming service + objects containing attributes   -  person Elrond_EGLDer    schedule 19.11.2015


Ответы (2)


Разве оба этих типа объектов контекста/каталога на самом деле не являются просто хэш-картами/хэш-таблицами под капотом?

Нет, они почти наверняка являются таблицами базы данных под капотом, и у них есть все виды семантики, такие как списки атрибутов, возможность создавать дочерние контексты и т. д., которых нет у хэш-карт/хэш-таблиц.

person user207421    schedule 07.02.2012
comment
Спасибо EJP, но тогда в чем их различие?! Хорошо, если они обе являются таблицами базы данных (а не хэш-картами), но зачем различать их? Это было корнем моего вопроса. - person IAmYourFaja; 07.02.2012
comment
@AdamTannon Служба имен - это сервер, например. LDAP или реестр RMI. Контекст — это объект в службе имен. Служба каталогов — это служба именования со структурой каталогов. Объект каталога представляет собой контекст со структурой каталога, то есть DirContext. Реестр RMI не является службой каталогов и не имеет контекстов каталогов. LDAP есть и есть. - person user207421; 08.02.2012
comment
Спасибо, EJP - последний вопрос (здесь я не пытаюсь быть сложным, я просто упускаю здесь некоторые фундаментальные принципы): тогда в чем разница между службой, структурированной каталогами, и службой; между контекстом, структурированным каталогом, и контекстом? Просто ли каталог подразумевает, что объект/контекст может иметь другие значения/атрибуты (помимо его имени), связанные с ним? - person IAmYourFaja; 08.02.2012
comment
@Adam Tannon «Каталог» подразумевает иерархию и атрибуты. Например, DirContext имеет подконтексты и атрибуты; Контекст не делает. - person user207421; 10.02.2012

Я думаю, что служба каталогов упоминается в этом аббревиатуре только для того, чтобы напомнить службы именования с directory в аббревиатуре, такие как LDAP.

LDAP, DNS и т. д. являются службами имен, поскольку службы каталогов и службы имен являются синонимами.

Из википедии:

В разработке программного обеспечения каталог представляет собой карту между именами и значениями.

Обратите внимание, что в Википедии служба имен перенаправляет на ту же статью.

person Andrea Colleoni    schedule 07.02.2012