Мы собираемся использовать версию EF 4.0, я сделал кое-что. Протестировав и сравнив EF 3.5 с версией, я нашел кое-что интересное.
Методика испытаний:
Я разработал простой веб-сайт ASP.NET, который имеет кнопку и элемент управления Gridview, нажимая кнопку «Я заполняю сетку». Я скопировал код заполнения сетки данных:
private void BindData()
{
using (NorthwindEntities context = new NorthwindEntities())
{
DataGrid.DataSource = context.Categories;
DataGrid.DataBind();
}
}
Я запустил Load-test на этой веб-странице, тестовый шаблон такой:
Начальный счетчик пользователей = 30, Увеличивать счетчик пользователей на 10 каждые 10 секунд, Максимальный счетчик пользователей = 250, [я запускал этот тест в течение 5 минут]. Я провел этот тест для веб-сайта, который использует версию EF 3.5, а также для веб-сайта, который использует EF 4.0, наблюдения интересны ...
Общее количество запросов (веб-запросов, отправленных тестовым агентом), обработанных в течение 5 минут, всегда больше в версии EF 3.5 (хотя дельта очень меньше).
Уровень конкуренции CLR очень высок на веб-сайте версии EF 4.0 (сравните с веб-сайтом версии 3.5 EF), просто интересно узнать, включена ли дополнительная блокировка в EF 4.0.
Также было бы неплохо знать:
Есть ли какое-либо улучшение производительности в версии EF 4.0?
Мне было интересно, есть ли какие-либо указания от команды EF о том, как использовать EF с контекстом веб-приложения (особенно о том, как использовать ObjectContext
, обмениваться ли одиночным ObjectContext среди веб-сессий или позволить каждому сеансу иметь свой владеть ObjectContext
, или позволить каждому запросу создавать и уничтожать ObjectContext
(как я делал в моем тесте перф.).