В прошлом я использовал в основном синглтоны и статические классы для моего DAL, но было поручено создать новый DAL в среде MVC5 с высокой нагрузкой, где важна производительность.В высокоскоростном узле трафика с использованием MVC5 и ADO.net/Stored Procs, если DAL будет одиночным, статическим или запрограммированным классом для лучшей производительности
Такие синглы, похоже, что они будут медленными по производительности и потенциально высокому использованию памяти. Статика будет иметь низкую печать, но также может привести к высокой памяти и возможным проблемам параллелизма.
public class DAL
{
private DAL()
{
}
private static readonly DAL _singleton = new DAL();
public static DAL Instance()
{
return _singleton;
}
}
Вы вопрос не описываете проблему достаточно подробно. Является ли это сайтом с высоким трафиком, запрашивающим базу данных, где содержимое базы данных не меняется часто, или вы можете получать уведомления о соответствующих изменениях данных? Кэширование MVC-контроллера может помочь в этом типе сценария. См. Http://stackoverflow.com/questions/343899/how-to-cache-data-in-a-mvc-application –
В основном очень высокий трафик, где содержимое базы данных огромно, но только обновляется ночью через пакетное задание. И все эти транзакции являются вставками; очень мало фактических запросов на обновление. – PleaseMakeItStop