Я разрабатываю веб-сайт с использованием Asp .Net MVC и NHibernate в качестве инструмента ORM. Я только что реализовал некоторые шаблоны, используя некоторые принципы. Это IoC, Service-Repository и UoW.Ускорить процесс создания SessionFactory NHibernate
Я использую почти все возможности NHibernate с точки зрения кэширования, как ниже
- Ленивая Загрузка
- Cache второго уровня
- Query Cache
- Entity Cache
Up до сих пор все было в порядке, я могу загрузить весь веб-сайт за 1 секунду размером почти 7,5 МБ (в основном изображения из Azure Storage) с ut Asp .Net MVC с указанной инфраструктурой, но это действие происходит, когда я загружаю веб-сайт во второй раз.
Большая проблема - NHibernate. SessionFactory добавляет почти 15 секунд к времени безотказной работы проекта, когда это первая загрузка, и это неприемлемо.
У меня есть 25 объектов, и поэтому их сопоставления на самом деле, почему это занимает так много времени в первый раз?
Вот моя конфигурация для NHibernate
public static ISessionFactory GetSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012
.Raw("connection.isolation", "ReadCommitted")
.ConnectionString("connectionString")
.Mappings(gX => gX.FluentMappings.AddFromAssemblyOf<MyEntity>())
.Cache(gX => gX.ProviderClass<SysCacheProvider>()
.UseSecondLevelCache()
.UseQueryCache())
.BuildSessionFactory();
}
У меня нет каких-либо проблем в процессе создания в SessionFactory, кстати. Единственная проблема - это время моего проекта в первый раз. Я просто решил много проблем с помощью стратегий кэширования, но не смог понять SessionFactory.
Любая идея или предложение об этом? Thanks
Спасибо за ваши комментарии. Я не уверен, что первое предложение будет работать с хорошей конфигурацией. Я прочитал связанную статью, которая решает проблему с файлами hbm.xml, но не говорит об истинном api. Я собираюсь дать попробовать кстати. На самом деле предложение seccond - хороший трюк, и я просто имитирую подобное решение сегодня утром и хорошо работаю. Я не уверен, что это хорошее решение, но оно работает. – revolver
Сколько секунд вы спасли от своего решения? – revolver
прошло от 20 секунд до примерно 8 секунд, чуть более половины. Его все еще медленный, но более управляемый. Решение должно работать с беглостью (я уверен, что там есть статьи) – Rippo