Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL PERSISTE Y CAMPUS VIRTUAL Introducción Los nuevos módulos de campus virtual se están desarrollando con .net y tienen que convivir con los antiguos, que están en asp. Para que funcionen se tienen que mantener las variables de sesión con los datos del usuario que se ha identificado. No es posible compartir variables de sesión entre distintas plataformas. Para ello se ha creado la clase ClasePersiste, que lo que hace es permitir el intercambio de datos entre diferentes plataformas ClasePersiste La ClasePersiste tiene como objetivo el poder pasar de una aplicación a otra, sin necesidad de volver a identificarnos, y traspasando los datos que necesitemos con total seguridad. Se puede usar entre aplicaciones .NET o entre aplicaciones ASP Clásico (lo más normal en la mayoría de los casos) o incluso entre aplicaciones PHP. Se ha rediseñado por completo la clase para cumplir con los requisitos de las directrices de programación explicada en los cursos. Incluir la DLL ClasePersiste Primero debemos hacer una referencia a la DLL. Sobre el proyecto, botón derecho, Agregar referencia. Pulsar Examinar y acceder a la carpeta /toolsnet/DLLs/ y seleccionar ClasePersiste.dll 1 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Ilustración 1: Agregar referencia a ClasePersiste Ahora debemos hacer referencia desde nuesto ASPX al Namespace en el que se encuentra nuestra clase ("ua"). using ua; Creación Como cualquier otro objeto lo crearemos mediante una llamada a new más el nombre de la clase. ClasePersiste persiste = new ClasePersiste(); Uso de ClasePersiste Almacenar datos Los datos los dividimos en 6 grupos: Form, QueryString, ServerVariables, Session, Application y datos definidos por el usuario. 2 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Podemos elegir almacenar todos estos datos o elegir los que queramos. Para almacenar todos los datos se utiliza el método Guarda. Almacena el contenido de las colecciones Form, QueryString, ServerVariables, Session, Application y la colección de usuario creada con los métodos Escribe y EscribePorTipo. Devuelve el Id de base de datos asignado al registro. Si devuelve 0 es que se ha producido algún error. Los datos sólo se podrán recuperar con el método Recupera. Sintaxis: var idDatos = persiste.Guarda(); Parámetros: idDatos: Identificador de los datos guardados, necesario para luego recuperarlos Selección de colecciones que se van a guardar Podemos especificar que colecciones de las antes mencionadas se van a guardar y cuales no. Por defecto sólo se guardan las variables definidas por el usuario. Para modificar los valores por defecto se se utilizan los métodos: • GuardaForm: Indicamos que queremos almacenar todas las variables Form (POST) • GuardaQueryString: Indicamos que queremos almacenar todas las variables QueryString (GET) • GuardaServerVariables: Indicamos si guardamos los datos ServerVariables • GuardaSession: Indicamos que queremos almacenar todas las variables Session • GuardaApplication: Indicamos que queremos almacenar todas las variables Application Ejemplo: persiste.GuardaSession = true; Inclusión de datos particulares En vez de guardar todas las colecciones o todos los datos de una colección una mejor práctica es almacenar sólo los datos que necesitemos. Sean de la colección que sean. Para ello se utilizan los métodos: 3 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Escribe Añade un dato a la colección de usuario, incluye el valor. No se especifica el tipo. Los parámetros que recibe son: • Nombre: Nombre de la variable que queremos añadir • Valor: Valor de la variable void Escribe(string Nombre, string Valor) Ejemplo: var persiste = new ClasePersiste(); persiste.Escribe("nombre","Sergio"); EscribePorTipo Igual que el método Escribe pero le indicamos el tipo de variable. Los parámetros que recibe son: • Nombre: Nombre de la variable que queremos añadir • Valor: Valor de la variable • Tipo: Tipo de la variable: Q – QueryString F – Form (Post) V – Server S – Session A – Application void EscribePorTipo(string Nombre, string Valor, string Tipo) Ejemplo: var persiste = new ClasePersiste(); persiste.EscribePorTipo("nombre","Sergio","S"); 4 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Lectura de datos almacenados Una vez hemos almacenado los datos podemos leerlos desde cualquier otra aplicación simplemente sabiendo el identificador que nos ha devuelto el método Guarda. Para leer en modo genérico utilizaremos el método Recupera. Recupera lee de la BD los valores del identificador que recibe como parametro y lo guarda en las colecciones. El único parámetro que necesita es el identificador que identifica la sesión a recuperar. void Recupera(string IdSession) Ejemplo: var persiste = new ClasePersiste(); persiste.Recupera(idDato); Para leer datos específicos utilizaremos los métodos Lee y LeePorTipo de forma análoga a los métodos de escritura Escribe y EscribePorTipo Siempre se llaman después de invocar a Recupera Lee Devuelve el valor de un dato. Al no especificar el tipo busca en este orden: 1. Sin tipo (general) 2. QueryString 3. Form (Post) 4. Session 5. Application 6. Server Como parámetro recibe el nombre de la variable que queremos leer string Lee(string nombre) 5 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL LeePorTipo Devuelve el valor de un dato especificando el tipo. Siempre se llama después de invocar a Recupera. Recibe como parámetros: Nombre: Nombre de la variable que queremos leer Tipo: Tipo de la variable: Q – QueryString F - Form (Post) V – Server S – Session A - Application public string LeePorTipo(string Nombre, string Tipo) Borrado de los datos de la BD Por defecto cuando se recuperan los datos almacenados estos se borran de la base de datos, por lo que ya no se pueden volver a recuperar. Este es el comportamiento normal, ya que una vez pasadas las variables de una aplicación a otra ya no es necesario mantenerlos en la base de datos, que de otra forma creceria innecesariamente. Para casos particulares esta característica se puede cambiar mediante la propiedad BorrarDatos. BorrarDatos Indicamos que los datos no se deben borrar una vez leídos. Por defecto, y por medidas de seguridad, los borra. bool BorrarDatos por defecto está a true Si hemos desactivado esta característica podemos borrar de forma manual los datos de la base de datos pasando le el identificador al método BorrarBatosBD 6 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL void BorrarDatosBD(Int32 id) Gestión de variables de sesión GeneraVariablesSession Recuperamos todas las variables sesión y adecuamos aquellas que sean delicadas: cadena de conexión void GeneraVariablesSession() GeneraVariableSession Recuperamos una variable sesión. En caso de que no exista la inicializa a "" nombreVariable: variable a recuperar void GeneraVariableSession(string nombreVariable) Propiedades y métodos de apoyo NumeroParametros Nos indica el Número de parámetros que hay almacenados int NumeroParametros LimpiaDatos Vacía el contenido de TODOS los diccionarios para comenzar de cero a asignar variables void LimpiaDatos() 7 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Encriptación Es importante encriptar el identificador de los datos guardados y desencriptarlo antes de utilizarlo, ya que normalmente ese dato va por query string y se puede leer. Para ello la ClasePersiste dispone de dos métodos. Encriptar Encripta la cadena que se le envia como parámetro y la devuelve encriptada string Encriptar(string Texto) Desencriptar Desencripta la cadena que se le envia como parámetro y la devuelve desencriptada string Desencriptar(string Texto) 8 Programación avanzada en .NET con C# Servicio de Informática PERSISTE Y CAMPUS VIRTUAL Aplicaciones .NET en Campus Virtual El principal problema que surge a la hora de crear nuevos módulos para Campus Virtual en .net es la integración con el antiguo entorno desarrollado en asp. Sobretodo el mantenimiento de las varibles de sesión que contienen los datos del usuario. Hasta ahora se estaban creando los módulos de .net en una carpeta llamada WebCVNet. pero esta práctica no ha resultado correcta. • Cada aplicación tendrá su propia carpeta, ya no estará dentro de WebCvNet. • Dentro de cada aplicación se creará una carpeta CV para los aspx de Campus virtual si la aplicación tiene módulos para este. Si la aplicación es pura de CV irá en el raiz. • Los datos de session y demás se pasarán mediante ClasePersiste en un asp dentro de WebCV • En el web config de la aplicación habrá que poner en la seccion system.web: <system.web> <sessionState cookieName="ASP.NETCV_SessionId"></sessionState> para que cuando se salga de campus virtual se eliminen todas las varibles de sesión de sus aplicaciones. 9