Что такое хороший дизайн для расширяемого интерфейса запросов? - PullRequest
0 голосов
/ 02 ноября 2008

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

Теперь мы можем использовать подход создания новых методов для каждого из этих новых методов, но это несколько неудобно; Развертывание нашего приложения на клиентском сайте обычно требует нескольких недель поэтапного тестирования интеграции. Мы предложили механизм именованных запросов, в котором администратор приложения будет определять запросы по имени, которые являются параметризованными, и соответствующий веб-сервис, который просто вызывает эти параметры. Тем не менее, я не могу не думать, что кто-то уже решил эту проблему раньше, поэтому я хотел бы получить от сообщества SO некоторую информацию о возможных проектах.

Спасибо!

Обновление

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

Ответы [ 3 ]

2 голосов
/ 02 ноября 2008

Я бы также рекомендовал рассматривать «шаблон спецификации» в приложениях этого типа как проектное решение для вашей серверной части. Проверьте следующие посты о «шаблоне спецификации»:

http://www.mattberther.com/2005/03/25/the-specification-pattern-a-primer/

http://devlicio.us/blogs/jeff_perrin/archive/2006/12/13/the-specification-pattern.aspx

1 голос
/ 02 ноября 2008
  • Взгляните на Hibernates Criteria API и используйте его или создайте аналогичный функциональность для Ваших пользователей.
  • Если оно того стоит, предоставьте древовидный интерфейс для группировки критериев. («все критерии группы должны совпадать» / «один критерий должен совпадать» / «отрицание»)

Преимущества:

  • Простота сборки.
  • Возможны пользовательские параметры.
  • Возможны мощные запросы.
  • Вы можете применять ограничения, такие как ВЫБРАТЬ ... ИЗ таблицы ГДЕ someRestriction AND (предоставленные пользователем критерии)
0 голосов
/ 02 ноября 2008

Поскольку мы действительно не знаем, как ваши пользователи используют ваш интерфейс, кажется немного преждевременным давать технический совет по поводу того, что кажется намного ближе к проблеме " Заключенные используют Asylum ". Есть несколько очень хороших советов и общих способов решения технических проблем, но работают ли они на ваших пользователей? Может быть, на самом деле не дерьмо о вашей проблеме, а скорее есть хорошо работающее решение одной кнопкой? (Или больше как гугл?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...