Обязательно ли для mlcp нужен XDBC-сервер или он также работает с HTTP-сервером?
MarkLogic: Нужен ли для mlcp сервер XDBC?
Ответы (2)
Это зависит от используемой вами версии MarkLogic — начиная с MarkLogic 8 (и, конечно, также и с 9) вы также можете работать с экземпляром REST API, нет необходимости настраивать отдельный сервер приложений XDBC. Подробнее об этих улучшениях можно прочитать в примечаниях к выпуску MarkLogic 8: https://docs.marklogic.com/8.0/guide/relnotes/chap3#id_46078
В документации указано «экземпляр REST API». Это относится конкретно к «серверам», созданным REST API MarkLogic. Подразумевается также «не модифицированный».
«Под капотом» в V8 все серверы «HTTP» поддерживают вариант протокола XCC, совместимый с http 1.1 (https://docs.marklogic.com/guide/xcc.pdf раздел 2.12.1). Но HTTP-серверы «поддерживают» функции, которые также нарушают это, например, использование переписчиков (которые активно используются в REST API). Частично для решения этой проблемы был введен декларативный рерайтер («XML Rewriter»), который позволяет маршрутизировать запросы на очень раннем этапе конвейера обработки. Средство перезаписи XML поддерживает синтаксис «xdbc passthrough», который при размещении в верхней части документа перехватывает запросы XDBC и обрабатывает их должным образом.
Это задокументировано в https://docs.marklogic.com/guide/app-dev/XMLrewriter, порт 8000 и недавно созданные серверы REST, включают что-то вроде этого:
<match-path any-of="/eval /invoke /spawn /insert">
<set-error-format>compatible</set-error-format>
<dispatch xdbc="true">$0</dispatch>
</match-path>
Порт 8002 не поддерживает xcc. Смешивание REST, не-REST-приложений и xdbc очень полезно, особенно в качестве «стандартной» начальной загрузки на порту 8000. Как упоминает grtjn, это не обязательно рекомендуется. Если бы у меня был выбор, я бы избегал этого и делал отдельные серверы по многим причинам. То же самое с смешиванием использования REST и «приложения» HTTP на одном сервере/порте. Есть много «движущихся частей», которые должны быть правильными, чтобы это работало хорошо, и это открывает потенциальные дыры в безопасности и неожиданное поведение, если вы не полностью понимаете, что происходит. Поскольку REST, приложения HTTP и XDBC построены на одной и той же технологии и базовом протоколе (HTTP 1.1) — ошибочный или хорошо составленный код может создавать запросы, которые могут выглядеть как любой из них.
-D