Как Вы организуете свои модули NInject?

LINQ является новым и имеет свое место. LINQ не изобретен для замены хранимой процедуры.

Здесь я сфокусируюсь на некоторых мифах о производительности & CONS, только для "LINQ к SQL", конечно, я мог бы быть полностью неправым;-)

(1) Люди говорят, что LINQ statment может "кэшироваться" в SQL-сервере, таким образом, это не теряет производительность. Частично верный. "LINQ к SQL" на самом деле является временем выполнения, переводящим синтаксис LINQ в TSQL statment. Таким образом с точки зрения производительности, трудный кодированный SQL-оператор ADO.NET не имеет никакого различия, чем LINQ.

(2), Учитывая пример, обслуживание клиентов UI имеет "функцию" передачи учетной записи. эта функция сама могла бы обновить 10 Таблиц базы данных и возвратить некоторые сообщения в одном выстреле. С LINQ необходимо создать ряд операторов и отправить их как один пакет к SQL-серверу. производительность этого перевела LINQ->, пакет TSQL может едва соответствовать хранимой процедуре. Причина? потому что можно настроить самую маленькую единицу оператора в Сохраненной процедуре при помощи встроенного инструмента профилировщика SQL и плана выполнения, Вы не можете сделать этого в LINQ.

точка при разговоре единственной Таблицы базы данных и маленького набора CRUD данных, LINQ с такой скоростью, как SP. Но для намного более сложной логики, хранимая процедура является большим количеством tweakable производительности.

(3) "LINQ к SQL" легко делает новичков для представления пожирателей ресурсов производительности. Любой старший парень TSQL может сказать Вам если не использовать КУРСОР (В основном, что Вы не должны использовать КУРСОР в TSQL в большинстве случаев). С LINQ и очаровательным "foreach" циклом с запросом, для новичка настолько легко записать такой код:

foreach(Customer c in query)
{
  c.Country = "Wonder Land";
}
ctx.SubmitChanges();

Вы видите, что этот легкий достойный код так привлекателен. Но под капотом, время выполнения.NET просто переводит это в пакет обновления. Если существует только 500 строк, это - 500 строк пакет TSQL; Если существует миллион строк, это имеет успех. Конечно, опытный пользователь не будет использовать этот способ сделать, это задание, но точка, настолько легко упасть таким образом.

12
задан cbp 9 November 2009 в 05:11
поделиться

1 ответ

Каждая подсистема получает модуль. Конечно, определение того, что оправдывает категоризацию как «подсистема», зависит от ...

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

7
ответ дан 2 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: