mlcp 是否一定需要 XDBC 服务器,或者它也可以与 HTTP 服务器一起使用?
这取决于您使用的 MarkLogic 版本 - 从 MarkLogic 8(当然还有 9(开始,您也可以使用 REST API 实例,无需设置单独的 XDBC 应用程序服务器。您可以在 MarkLogic 8 发行说明中阅读有关这些增强功能的更多信息:https://docs.marklogic.com/8.0/guide/relnotes/chap3#id_46078
文档指出"REST API 实例"。 这特指由MarkLogic的REST API创建的"服务器"。 暗示也是"未修改"。
">引擎盖下",在V8中,所有"HTTP"服务器都支持XCC协议的http 1.1兼容变体(https://docs.marklogic.com/guide/xcc.pdf sec 2.12.1(。 但是HTTP服务器"支持"的功能也打破了这一点,例如使用重写器(REST API大量使用(。 部分为了解决此问题,引入了声明性重写器("XML 重写器"(,它允许在处理管道的早期路由请求。 XML 重写器支持"xdbc 直通"语法,如果将其放在文档顶部,则会捕获 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