3

mlcp には必ず XDBC サーバーが必要ですか、それとも HTTP サーバーでも動作しますか?

4

2 に答える 2

3

ドキュメントには「REST API インスタンス」と記載されています。これは特に、MarkLogic の REST API によって作成された「サーバー」を指します。暗示も「変更されていません」です。

「内部」では、V8 ではすべての「HTTP」サーバーが XCC プロトコルの http 1.1 準拠のバリアントをサポートしています ( https://docs.marklogic.com/guide/xcc.pdf 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

于 2017-07-26T14:12:49.633 に答える