Кратко

  • RFC 3367 сделал язык, географию и категорию общими свойствами запроса, но определил их как подсказки, а не обязательные фильтры.
  • Формат вопроса стал совместимым между службами; правила сопоставления, порядок результатов и смысл релевантности остались за каждой службой.

Одно имя не означало один ответ

Общие имена — это слова и выражения, а не уникальные глобальные идентификаторы. «Mercury» может означать планету, компанию, человека или продукт; одна служба тоже может связать одно имя с несколькими записями. RFC 3367 решал более узкую задачу: как клиенту запрашивать у служб записи, связанные с общим именем. Он не определял обнаружение и выбор служб, регистрацию, владение или гарантию уникальности. CNRP был протоколом запросов, а не органом именования.

Общий словарь, локальное решение

Основные свойства включали имя, язык, географию, категорию и диапазон результатов. Клиент мог начать с ServiceQuery, чтобы выяснить, что поддерживает служба; служба могла объявить и собственные типы данных. Но RFC не превращал поля в универсальные проверки. Он называл их «подсказками»: контекстом и предпочтениями клиента. Их порядок мог задавать приоритет, однако служба имела право их игнорировать и должна была попытаться найти наилучшее соответствие.

Разные свойства объединялись логическим AND, а несколько значений одного свойства — OR. При этом ответ не обязан был удовлетворять всем критериям. «Английский» и «Лондон» могли направить поиск, не исключая все записи с несовпадающими атрибутами. Один поставщик мог придавать языку большой вес, другой — считать его слабым сигналом. RFC не задавал общей формулы весов или универсального разрешения равенства.

Кодировка не определяет смысл

UTF-8 позволял передавать текст, а языковые теги — структурированно обозначать язык. Ни один механизм не решал, равны ли разные написания, письменности, транслитерации или имена. RFC 3367 оставлял правила сопоставления общих имён зависимыми от службы и языка. Кодировка сохраняет строку, но не определяет, что она обозначает.

Ранжирование тоже оставалось локальным. Результаты разных служб не становились сопоставимыми только потому, что использовали CNRP. Связанная RFC 3368 о URI go: могла указать конкретный сервер или запись либо передать более широкий запрос, но не устраняла разделение ответственности.

Граница совместимости

RFC 3367 стандартизировал выражение предпочтений, запрос о возможностях и общую логику сочетания полей. Семантическую эквивалентность и итоговый порядок он оставил операторам. Это проектная граница, а не скрытый пробел: общий словарь помогает системам общаться, не делая их суждения одинаковыми.

Взгляд Lu Heng на первичность работающего кода помогает увидеть различие: спецификация описывает, чем реализации могут обмениваться, тогда как пользовательский опыт зависит от фактического поведения служб. Сам RFC не доказывает масштаб внедрения или коммерческий эффект. Исторически важнее узкий вывод: предпочтения стали переносимыми, а релевантность осталась локальной.

Источники