Compartir a través de


Session y persistencia del modelo de objetos ReportDocument

¿Qué es Session?

Session es un enfoque basado en servidor Web utilizado tanto en ASP como en ASP.NET para conservar el estado. Session permite conservar cualquier objeto durante toda una sesión de usuario mediante el almacenamiento de dicho objeto en la memoria del servidor Web.

Session se suele utilizar para cualquiera de estas acciones:

  • Almacenar información que debe conservar su estado durante toda la sesión de un usuario, como la información de conexión o de cualquier otro tipo que sea necesaria cuando los usuarios se desplazan por la aplicación Web.
  • Almacenar un objeto que debe conservar su estado sólo en una recarga de páginas o en un conjunto de páginas agrupadas funcionalmente.

El punto fuerte de Session es que conserva la información de estado del usuario en el servidor Web para tener acceso en cualquier momento y desde cualquier página. Puesto que el explorador no debe almacenar esta información, se puede utilizar cualquier explorador, incluso dispositivos exploradores como PDAs o teléfonos móviles.

Limitaciones del enfoque de persistencia

  • La cantidad de memoria de servidor requerida por Session se incrementa a medida que aumenta el número de usuarios conectados.
  • Cada usuario que tenga acceso a la aplicación Web genera un objeto Session independiente. Cada objeto Session se mantiene durante el período de tiempo que dure la visita del usuario más un período de inactividad.
  • Si se conservan muchos objetos en cada Session, y hay muchos usuarios utilizando la aplicación Web simultáneamente (creando muchos Sessions), la cantidad de memoria de servidor dedicada a la persistencia de Session puede ser importante, limitándose la escalabilidad.

Para obtener detalles sobre enfoques de persistencia alternativos, vea la siguiente información:

Conservar el modelo de objetos ReportDocument con Session

Si se ha encapsulado el informe en el modelo de objetos ReportDocument, este modelo de objetos se debe conservar mediante un enfoque basado en servidor como Session o Cache.

Para conservar un modelo de objetos ReportDocument con Session, cree una instancia de ReportDocument y, a continuación, asígnela a Session.

Nota

Para obtener un ejemplo completo, vea el tutorial Tutorial: Conservar el modelo de objetos ReportDocument con Session.

Session es el enfoque más sencillo y el preferido cuando se aprende a crear aplicaciones Web ASP.NET utilizando Crystal Reports. También es el enfoque recomendado para almacenar instancias de ReportDocument en las que el informe tiene una compartibilidad baja. Para obtener una explicación sobre compartibilidad, vea Almacenar en caché informes con "alta compartibilidad".

Limitaciones de persistencia del modelo de objetos ReportDocument con Session

Siempre que una instancia de ReportDocument tenga un alto grado de compartibilidad, piense en utilizar Cache en vez de Session.

Diferencias entre Session y ViewState

Session se ocupa principalmente de la persistencia del estado de los objetos de la clase de código subyacente. ViewState lo hace del estado de los controles de la página Web. Cuando un control de la página Web está enlazado a un objeto de la clase de código subyacente y ambos necesitan conservarse en las recargas de páginas, Session y ViewState comparten las funciones de persistencia.

En este caso, ViewState conserva un control CrystalReportViewer y Session, un objeto ReportDocument que está enlazado al control.

Tutoriales

Para comprender perfectamente la persistencia de informes, puede practicar con el siguiente tutorial.