Tengo aplicación de prueba de implementación. que utiliza un mapeo de nhibernate fluido a un objeto db dentro de mssql db. Dado que quiero aprender a tocar bien nhib. aplicaciones mvc3, estoy usando esta aplicación. para propósitos de prueba que tienen solo una entidad simple con 10 propiedades de enumeración y una propiedad de cadena. Por lo tanto, es realmente una onda de luz, pero el tiempo de inicio según el generador de perfiles de nhibernate es de 4.37 segundos. Lo cual es realmente lento para renderizar una entidad con pocas líneas marcadas/sin marcar.Optimización de la fábrica de sesiones de nhibernate, tiempo de inicio de webApp realmente lento
El código es el siguiente. 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();
}
}
Dentro myController He siguiente:
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;
}
}
}
¿El tiempo de inicio es realmente tan importante? En una implementación adecuada, este costo no debería ocurrir a menudo. – Lucero
con respecto a las aplicaciones web. Creo que este tiempo de inicio con esta entidad lightwave es "algo". ¿Estás diciendo que verifico la implementación? – BobRock
Lo que estoy diciendo es que si esto ocurre una vez al día o cada varios días en un entorno implementado (siempre que su grupo de aplicaciones se recicla), ese costo no es un obstáculo. – Lucero