WCF, как правильно передать произвольный запрос хранилища данных? - PullRequest
0 голосов
/ 04 января 2011

У меня есть служба WCF, написанная для некоторой БД, и мне нужно фильтровать и возвращать данные на основе сложных запросов.Каков наилучший способ сделать это?

  • Я знаю, что это плохая практика, и я должен предоставить отдельные методы обслуживания, такие как GetOrdersByProductId (идентификатор объекта), но мои запросы действительно огромны, около 15предикаты = 225 функций - нет смысла.
  • Службы RIA здесь не вариант.
  • Я могу сериализовать дерево выражений с помощью MetaLinq, но я думаю, что выполнение произвольной лямбды на сервере еще опаснее, чем чистоеSQL-запрос, вы можете поместить любой вызов функции там.

1 Ответ

4 голосов
/ 04 января 2011

Неважно, насколько сложны ваши запросы. Важно то, как они будут использоваться.

Если ваши вызывающие абоненты должны передать 15 параметров, чтобы заполнить 15 предикатов в вашем запросе, то они должны передать их - так просто. Создайте класс «QueryParameters» вместо использования 15 отдельных параметров, но необходимо предоставить информацию.

Не позволяйте абонентам вашего сервиса произвольно придумывать новые запросы. Вы должны решить, какие запросы будут доступны, и как параметры будут указаны. Затем просто предоставьте эти параметры абонентам вашего сервиса.

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