Ho un'app per la verifica dell'attrezzo. che utilizza una mappatura fluida di tipo nibernato per l'oggetto db all'interno di mssql db. Dal momento che voglio imparare bene sintonizzare NIB. Applicazioni mvc3, sto usando questa app. a scopo di test che hanno una sola entità semplice con 10 proprietà enum e una proprietà stringa. Quindi, è davvero chiaro come un lampo, ma il tempo di avvio secondo il profiler Nhibernate è di 4.37 secondi. Il che è molto lento per il rendering di un'entità con poche proprietà selezionate/non selezionate.Ottimizzazione della produzione della sessione di nhibere, il tempo di avvio della webApp è molto lento
Il codice è il seguente. Domain.SessionProvider.cs
public static ISessionFactory CreateSessionFactory()
{
var config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("myConnection")))
.Mappings(m => m.FluentMappings.Add<FeaturesMap>())
.ExposeConfiguration(p => p.SetProperty("current_session_context_class", "web"))
.BuildConfiguration();
return config.BuildSessionFactory();
}
Global.asax
public class MvcApplication : System.Web.HttpApplication
{
//SessionPerWebRequest is ommited here as well as other content
public static ISessionFactory SessionFactory =
SessionProvider.CreateSessionFactory();
protected void Application_Start()
{
SessionFactory.OpenSession();
}
}
All'interno myController ho seguendo:
public ActionResult Index()
{
return View(GetData());
}
private IList<FeaturesViewModel> GetData()
{
List<Features> data;
using (ISession session = MvcApplication.SessionFactory.GetCurrentSession())
{
using (ITransaction tx = session.BeginTransaction())
{
data = session.Query<Features>().Take(5).ToList();
tx.Commit();
var viewModelData = FeaturesViewModel.FromDomainModel(data);
return viewModelData;
}
}
}
Il tempo di avvio è davvero così importante? In una corretta installazione questo costo non dovrebbe verificarsi spesso. – Lucero
relativo alle app Web. Penso che questo tempo di avvio usando questa entità lightwave sia "qualcosa". Stai dicendo che controllo la distribuzione? – BobRock
Quello che sto dicendo è che se ciò accade una volta al giorno o ogni più giorni in un ambiente distribuito (ogni volta che il pool di applicazioni viene riciclato), tale costo non è un dealbreaker. – Lucero