Лучший способ обработать легковесное (скелетное) представление в XML-схеме веб-службы? - PullRequest
0 голосов
/ 23 июня 2010

Я новичок во всем пространстве веб-сервисов, так что извините, если это кажется глупым или очевидным!

У меня есть несколько сущностей, которые могут быть созданы новой веб-службой, которую я создаю.Некоторые из этих объектов состоят из очень больших графов объектов.

Однако иногда клиенту нужно искать некоторые из этих объектов и возвращать (потенциально большой) набор результатов.Я думаю, что этот набор результатов должен содержать более легкое представление этих огромных сущностей, а не всей сущности.В конце концов, они будут отображаться только в списке «найденные объекты» в графическом интерфейсе ... и затем извлекаться по отдельности.

Какой хороший способ решения этой проблемы?Я особенно обеспокоен тем, как это связано с моей схемой XML?Если я использую тот же тип элемента XML, что и представление с большим весом (скажем, с булевым переключателем isSkeleton), то все мои ограничения XML будут бесполезными (потому что дочерних элементов там не будет).

С другой стороны, если я сделаю специализированный «легкий» DTO для каждого потенциально большого объекта (с его собственным определением XML), мне нужно будет с преобразованием в и из этих DTO и моих объектов.1009 *

1 Ответ

1 голос
/ 23 июня 2010

Не уверен, что я следую тому, что вы описываете, но, похоже, вам нужно сделать следующее:

  • В контексте поиска представьте различные типы объектов вобщий способ
  • В наборе результатов может быть возвращено потенциально большое количество сущностей
  • Требуется предоставить дополнительную глубину только при обращении к отдельным сущностям

Это звучит какидеально подходит для Solr .Solr - это поисковая платформа с открытым исходным кодом, построенная на основе Lucene .Он обеспечивает доступ через HTTP к поисковому индексу на основе Lucene, используя XML в качестве основы полезной нагрузки.Он ориентирован на REST, также говорит на JSON, поэтому не зависит от языка.

Большинство реализаций Solr работают за кулисами, а доступ к результатам предоставляется на странице результатов поиска на веб-сайте.Ваши требования могут действительно подходить для предоставления доступа к запросу сервера Solr напрямую.Все элементы работы с результатами уже обработаны - пейджинг, фильтрация, сортировка и т. Д. Вся логистическая работа, которую вы действительно не хотите делать самостоятельно.

Как разработчик, ваша настоящая работаопределить, что входит в ваш поисковый индекс.Индекс можно структурировать так, чтобы он содержал общие элементы ваших вариантов сущностей, а скорость поиска была бы невероятно высокой.После извлечения заданного результирующего набора ваше приложение может извлечь более глубокие сведения о сущности из ее исходного источника (если вы не хотите помещать всю сущность в поисковый индекс, что является еще одной возможностью.)

...