0

私は Web サービス分野全体に慣れていないので、質問がばかげている、または明白に思われる場合はご容赦ください。

作成中の新しい Web サービスで提供できるエンティティが多数あります。これらのエンティティの一部は、オブジェクトの非常に大きなグラフで構成されています。

ただし、クライアントがこれらのエンティティの一部を検索して、(潜在的に大きな) 結果セットを取得したい場合があります。この結果セットには、エンティティ全体ではなく、これらの巨大なエンティティの軽量表現を含める必要があると考えています。結局のところ、それらは GUI の「見つかったエンティティ」リストに表示されるだけで、個別に取得されます。

この問題を処理するための適切なパターンは何ですか? それが自分の XML スキーマとどのように関連しているか特に気になりますか? 重量表現と同じ XML 要素タイプを使用すると (たとえば、isSkeleton ブール スイッチを使用して)、すべての XML 制約が役に立たなくなります (子要素が存在しないため)。

一方、潜在的に大きなエンティティ (独自の XML 定義を持つ) ごとに特殊な「軽量」DTO を作成する場合、これらの DTO とエンティティとの間の変換に手間がかかる必要があります。

4

1 に答える 1

1

あなたが説明していることに従っているかどうかはわかりませんが、次のことを行う必要があるようです。

  • 検索のコンテキストで、さまざまな種類のエンティティを共通の方法で表す
  • 結果セットに多数のエンティティが返される可能性があります
  • 個々のエンティティにアクセスする場合にのみ、さらに詳細を提供する必要があります

これはSolrの理想的な用途のように思えます。Solr は、 Luceneの上に構築されたオープンソースの検索フレームワークです。XML をペイロード ベースとして使用して、HTTP 経由で Lucene ベースの検索インデックスにアクセスできます。REST 指向であり、JSON も話すため、言語に依存しません。

Solr のほとんどの実装は、Web サイトの検索結果ページの背後で提供される結果へのアクセスを使用して、舞台裏で実行されます。あなたの要件は、Solr サーバーのクエリへのアクセスを直接公開するのに非常に適している場合があります。結果を操作するすべての要素 (ページング、フィルタリング、並べ替えなど) は既に処理されています。実際には自分でやりたくないすべてのロジスティクス作業。

実装者としての実際の作業は、検索インデックスに何を入れるかを決定することです。バリアント エンティティの共通要素を保持するようにインデックスを構成すると、検索速度が非常に速くなります。特定の結果セットを取得すると、アプリケーションは元のソースからエンティティの詳細を取得できます (エンティティ全体を検索インデックスにプッシュしたくない場合は、別の可能性があります)。

于 2010-06-23T11:58:05.943 に答える