Si su aplicación ASP.NET solo tiene unos pocos usuarios, probablemente no le importe qué tan rápido o lento sea y probablemente le brinde un rendimiento bastante bueno de todos modos. Pero, a medida que agrega más carga a su aplicación ASP.NET, las posibilidades de que el rendimiento de ASP.NET disminuya significativamente son bastante altas. Incluso podría detenerse si se le aplica suficiente carga. E, irónicamente, todo eso sucede justo cuando su empresa está experimentando más actividad, por lo que el impacto es aún mayor.
ASP.NET hoy en día se ha vuelto muy popular para las aplicaciones de alto tráfico y ahora es común ver 10-20 granjas web equilibradas de carga de servidor y, en algunos casos, incluso 50-100 granjas de servidores. Por lo tanto, en estas situaciones, el rendimiento de ASP.NET es un problema aún más delicado de resolver.
NCache Detalles NCache Docs Documentos de almacenamiento en caché de ASP.NET
Usar NCache como caché distribuida
La razón principal por la que el rendimiento de ASP.NET cae a medida que aumenta la carga es su base de datos, que no puede manejar cargas más grandes de la forma en que lo hace su granja web de aplicaciones ASP.NET. Esto se debe a que puede agregar más servidores a la granja web ASP.NET pero no puede hacer lo mismo con su base de datos.
Entonces, en estas situaciones, su mejor apuesta es usar un caché distribuida como NCache. NCache está en la memoria, por lo que es mucho más rápido que la base de datos. Y, NCache construye un grupo de servidores de caché y puede hacer crecer el grupo de forma lineal al igual que la granja web. Como resultado, con NCache, su rendimiento de ASP.NET sigue siendo excelente incluso bajo cargas de transacciones extremas. Puedes usar NCache de las dos formas siguientes:
Almacenamiento de estado de sesión ASP.NET
Puede configurar su aplicación ASP.NET para almacenar el estado de sesión de ASP.NET en NCache en lugar de InProc, State Server o SQL Server. Tenga en cuenta que no se necesita programación aquí. Solo modifica el código web.config de la siguiente manera:
1 2 3 4 5 6 |
<sessionstate cookieless="false" regenerateexpiredsessionid="true" mode="Custom" customprovider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" exceptionsenabled="true" enablesessionlocking="true" emptysessionwhenlocked="false" sessionlockingretry="-1" sessionappid="NCacheTest" useinproc="false" enablelogs="false" cachename="myReplicatedCache" writeexceptionstoeventlog="false" asyncsession="false"> <providers> <sessionstate></sessionstate></providers></add></providers></sessionstate> |
Caché de datos de la aplicación ASP.NET
La otra forma es que tú datos de la aplicación de caché en un caché distribuido como NCache por lo que la próxima vez que su aplicación ASP.NET necesite estos datos, los encontrará en el caché. Aquí hay una pequeña muestra de código sobre cómo almacenar en caché los datos de la aplicación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using Alachisoft.NCache.Web.Caching; ... Cache cache = NCache.InitializeCache("myCache"); // Create a key to lookup in the cache // The key for will be like “Employees:PK:1000” string key = "Employee:EmployeeId:" + emp.EmployeeId.ToString(); Employee employee = (Employee)Cache[key]; if (employee == null) { // item not found in the cache. load from db LoadEmployeeFromDb(employee); // Now, add it to the cache for future reference Cache.Insert(key, employee, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null ); } |
Cuantos más datos almacene en caché, menos tendrá que ir a la base de datos y más rápido será el rendimiento de su aplicación ASP.NET.