3

mlcp 是否一定需要 XDBC 服务器或者它是否也可以与 HTTP 服务器一起使用?

4

2 回答 2

5

这取决于您使用的 MarkLogic 版本——从 MarkLogic 8(当然也包括 9)开始,您也可以使用 REST API 实例,无需设置单独的 XDBC 应用程序服务器。您可以在 MarkLogic 8 发行说明中阅读有关这些增强功能的更多信息:https ://docs.marklogic.com/8.0/guide/relnotes/chap3#id_46078

于 2017-07-26T10:32:22.057 回答
3

文档说明“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 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

于 2017-07-26T14:12:49.633 回答