Лично я предпочитаю использовать обычный (управляемый) код для реализации каналов вместо хранимых процедур, главным образом потому, что:
1) Обычно проще взаимодействовать с другой системой (даже если это только общий диск)
2) Легко зарегистрировать все необходимое и отладить, если что-то пойдет не так
3) Вы можете повторно использовать тот же код, который вы используете для нормальной бизнес-логики (это полезно, даже если вы просто ссылаетесь на одни и те же проекты и т. Д.)
4) Часто вам нужно обогащать данные некоторой информацией из других систем, и это опять же намного проще сделать из управляемого кода.
5) Гораздо проще тестировать управляемый код, иметь все модульные тесты, автоматические сборки и т. Д.
Я не уверен, почему это должно быть намного медленнее, чем делать все это в хранимом процессе. Вам просто нужно написать хорошую хранимую процедуру для извлечения нужных вам данных, а приложение C # / java выполнит все преобразования, обогащение и т. Д.
РЕДАКТИРОВАТЬ: Отвечая на комментарий:
Я не думаю, что можно сказать, следует ли вам повторно использовать существующие хранимые процессы, настраивать их или создавать новые. Я думаю, что это снижение производительности или необходимые изменения не слишком велики, чем я бы попытался использовать один набор процедур, чтобы избежать дублирования логики. Но если различия существенны, то, вероятно, стоимость обслуживания дополнительных процедур будет ниже, чем изменение и выпуск существующих.