Хранимые процедуры CLR - PullRequest
       27

Хранимые процедуры CLR

2 голосов
/ 22 марта 2010

В приложении ASP.NET у меня есть небольшое количество довольно сложных, часто используемых операций для выполнения с базой данных. В этих операциях одна или несколько таблиц нуждаются в обновлениях или вставках на основе логической оценки как входных параметров, так и значений определенных таблиц. Я сохранил разделение логики и доступа к данным, поэтому операция в настоящее время выглядит следующим образом:

  1. Запрос получен от клиента
  2. Бизнес-уровень вызывает уровень данных для извлечения данных из базы данных
  3. Результат процессов бизнес-уровня и определяет, какая операция выполнение
  4. Бизнес-уровень вызывает соответствующий операция с данными
  5. Ответ отправлен клиенту

Как видите, клиент продолжает ждать, пока к базе данных поступают два отдельных запроса. В поисках решения этой проблемы я нашел хранимые процедуры CLR, но не уверен, правильно ли я понял, для чего они полезны.

Я написал замену вышеприведенному коду, который особенно помещает шаги 2-4 в CLR SP. Насколько я понимаю, SP будет выполняться локально SQL Server, и в результате на сервер будет сделан только один вызов.

Мой вопрос в основном, это предполагаемое использование SP CLR или я что-то упустил?

Я понимаю, что это структурный компромисс, поэтому, если есть лучший способ сделать это, я бы с удовольствием его услышал.

1 Ответ

3 голосов
/ 22 марта 2010

Процедуры CLR предназначены для расширенной обработки запросов, когда хранимой процедуре будет действительно сложно.Я столкнулся с очень немногими ситуациями, когда они были намного более выгодными.Они не предназначены для работы на бизнес-уровне, хотя вы могли бы это сделать.Я бы не вставил все в процесс CLR;разделение слоев очень полезно в приложении.Если вам нужно ускорить ваш код, проверьте имеющиеся профилировщики памяти / кода, которые могут помочь вам определить проблемные точки в вашем коде.

Когда это возможно, замените код на стороне сервера обратными вызовами AJAX, веб-службами и т.поскольку это действительно ускорит его (по крайней мере, позволит вам выполнять больше асинхронной работы).

HTH.

...