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