Я бы сделал Ashx в такой ситуации. Из вашего описания это звучит как единое средство поиска, одна таблица (или ограниченная группа таблиц в одной базе данных) и относительно ограниченная область действия. Все вещи MVC, вероятно, излишни. Не переусердствуйте.
Просто создайте класс, который реализует IHttpHandler (или просто создайте общий обработчик, если вы находитесь в Visual Studio 2005 или более поздней версии), проанализируйте строку запроса, либо создайте динамическую строку SQL, либо передайте параметры в хранимую процедуру, и затем используйте XmlTextWriter для создания вывода. Вы можете указать XmlTextWriter либо на выходной поток ответа, либо на поток памяти. Я использую подход потока памяти, потому что он дает мне лучшие варианты обработки ошибок. Затем установите тип содержимого для application / xml и выполните потоковую передачу результатов.
Мне нравится этот подход, потому что он прост для понимания, прост в реализации, прост в обслуживании и дает вам полный контроль. Недостатком является то, что он тесно связан с базой данных и может быть менее гибким, чем один из подходов, основанных на инфраструктуре веб-службы, если область вашего приложения со временем увеличивается.