viernes, 22 de octubre de 2010

Uso de Master.Page en ASP.NET. Tres Pasos Sencillos

Master Pages (Páginas Maestras) - La característica de las "Master Pages" nos proporciona la habilidad de definir una estructura y unos elementos de interfaz comunes para nuestro sitio, tales como la cabecera de página o la barra de navegación, en una ubicación común denominada "master page", para ser compartidos por varias páginas del sitio. Ésto mejora la administración de nuestro sitio y evita la duplicación innecesaria de código para estructuras o comportamientos del sitio que son compartidos.
La idea principal es encerrar en una sola plantilla las características generales de nuestra aplicación web tales como un diseño uniforme para todas las páginas de la aplicación, funcionalidades, etc. las cuales serán heredadas a las demás páginas que usen como base nuestra Master Page.
1.       Agregar un nuevo elemento del tipo Mater Page, lo llamaremos  General.Master  Este es una página normal, a la cual podremos agregar estilos, definir la estructura de todo nuestro sitio. Tendra la característica  de  tener ContentPlaceHolder,  los cuales agregaremos cuantos necesitemos.   Cada ContentPlaceHolder servirá para ingresar información en las páginas que dependen de una master especifica:  
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
    asp:ContentPlaceHolder>
2.       Agregar un pagina ASPX Adicional,   teniendo cuidado que al momento de agregarla deberemos  hacer check  en la opción “Select Master Page”,  una vez hecho esto y haciendo click en seleccionar se desplegara la lista de MaterPage disponibles para nuestro sitio.  En nuestro caso solamente tenemos una General.Master.  Hacemos click en OK

3.       Una vez agregada nuestra página,  veremos que no se formara como cualquier pagina aspx normal, el código que nos generará para esta nueva página web, no es el mismo que generá para una nueva página web estándar.  sino que solo contendrá  controles de tipo: <asp:Content que harán referencia a cada ContenPlaceHolder agregados dentro de nuestra master.page.   Es importante recalcar que solo dentro de cada asp:content se podrá escribir, será el área permitida para agregar información. Cuando veamos el diseño de nuestra página aspx,  observaremos que tiene todo el diseño agregado dentro de la master, habrá heredado todo el esquema y estilos de esta. Al pasar a la vista de diseño vemos que el único lugar donde podemos colocar información es dentro del ContentPlaceHolder lo demás está bloqueado pero heredamos todo el diseño del MasterPage.

Uso de AdRotator en ASP.NET


El componente ADRotator automatiza la rotación de imágenes de anuncio en una  página Web. Cada vez que un cliente abre o recarga la página este componente presenta una nueva imagen según las definiciones especificadas en un archivo.
Este control se utiliza para añadir mensajes animados a una página web, como pueden ser noticias o publicidad, siendo capaz de presentarlos de forma aleatoria ya que se actualiza cada vez con la carga de página, lo que permite mostrar diferentes mensajes para cada usuario. Es posible asignar prioridades a los anuncios para que unos aparezcan con mayor frecuencia que otros.
Se utiliza un archivo XML con las siguientes características:
ImageUrl: Especifica una URL relativa o absoluta a un archivo de imagen, que será la que se presente en el navegador.
NavigateUrl: Determina la dirección URL de la página a la que se va a acceder cuando el usuario pulsa la imagen mostrada.
AlternateText: Indica el texto alternativo que aparecerá en pantalla en caso de que no se pueda acceder a la imagen correspondiente, o como ToolTip en caso de que esta sí se muestre.
Keyword: Parámetro que determina la categorías utilizadas para filtrar anuncios, como pueden ser informática, tutoriales, discos, ...
Impressions: Parámetro que indica, en forma de número, el orden del anuncio en la secuencia de rotación con respecto al resto de anuncios del archivo de configuración. Cuando mayor sea el número, el mayor valor es 1, con mayor frecuencia aparecerá y a igualdad de valores, es el propio AdRotator el que gestionará y presentará aleatoriamente los anuncios.
Se deberá crear un archivo XML con el siguiente formato:
xml version="1.0" encoding="utf-8" ?>
<Advertisements>
    <Ad>
        <ImageUrl>images/foto1.jpgImageUrl>
        <NavigateUrl>http://www.direccion1.comNavigateUrl>
        <AlternateText>Informacion de Direccion 1AlternateText>
        <Keyword>ASP.NETKeyword>
        <Impressions>0.5Impressions>
    Ad>

    <Ad>
        <ImageUrl>images/foto3.jpgImageUrl>
        <NavigateUrl>http://www.direccion3.comNavigateUrl>
        <AlternateText>Informacion de Direccion 3AlternateText>
        <Keyword>DesarrolloKeyword>
        <Impressions>1Impressions>
    Ad>

    <Ad>
        <ImageUrl>images/foto3.jpgImageUrl>
        <NavigateUrl>http://www.direccion3.comNavigateUrl>
        <AlternateText>Informacion de Direccion 3AlternateText>
        <Keyword>ComercioKeyword>
        <Impressions>1Impressions>
    Ad>
Advertisements>
Una vez creado el archivo XML,  se deberá agregar el Control AdRotator ubicado en los controles Standard de Microsoft Visual Studio y relacionarlo con el archivo creado.   En la vista HTML deberá quedar de la siguiente manera:
<asp:AdRotator ID="AdRotator1" runat="server" AdvertisementFile="~/XMLFile.xml" />
Después de esta configuración nuestro AdRotator estará listo para mostrar imágenes de forma aleatoria, cada vez que se cargue la página.

jueves, 21 de octubre de 2010

Guia Practica ASP.NET. Nivel Basico

1.       Cree un nuevo sitio web llamado LaSubasta
2.       Cree una Nueva Base de Datos en SQL Server llamada  LaSubasta,  defina tablas como Usuarios  con campos UsuarioID, Nombre, Login, Contrasena.   Tabla Productos  con campos:  ProductoID, Nombre, PrecioInicial, PrecioMinimo, Marca

3.       Cree una Master Page llamada web.Master, con la siguiente estructura:






4.       Cree una Nueva Hoja de Estilos en Cascada llamada:  Estilos.CSS.  Agregue los estilos básicos, color de fondo del sitio, tipo de letra, tamaño,  estilos para las tablas.  Ademas agregue estilos personalizados llamados: “Normal”, “Grande”,   “Especial”.   Use su capacidad de diseño en esta hoja de estilos.

5.       En el Web.Master defina un Control para crear un Menu donde se iran agregando las páginas de nuestro sitio,  cree por defecto las siguientes paginas: Default.aspx,   Productos.aspx, Contacto.aspx, Buscar.aspx, Comprar.aspx Salir.aspx

6.       Cree un Control de Usuario, llamado registro:  donde Especifique el Nombre, Direccion, Correo Electronico,  Telefono,  cree validaciones respectivas para cada caso usando los validadores de ASP.NET.  Almacene la información del Nombre en un Cookies llamado “UsrNombre” y muéstrelo en una etiqueta dentro del Master Page.  Una vez exista el Cookies,  oculte el control. Agregue el Control  en la web.Master.

7.       En la página Productos.aspx agregue un Grid y utilizando el asistente cargue todos los productos de la tabla del mismo nombre de nuestra base. Defina un estilo acorde.

8.       Cree una nueva Clase llamada productosDB.vb crear un método para acceder a todos los productos.

9.       En la página Buscar.aspx,  cree controles de usuario para definir datos tales como:   Producto,  Marca,  Estilo.  Para todos los casos agregue Drop-Down-List,  accese a los datos en Producto usando la case ProductosDB.VB y Construya los otros.  Agregue un Boton que tenga como titulo Agregar.   Cuando el usuario haga click en Agregar almacene estos datos datos en variables de Session.

10.   Cree un nuevo Control de usuario que lea los datos de las variables de sesión agregadas anteriormente, y muestre la información que el usuario anda buscando.  En el caso de no existir no mostrar el control. Agregarlo a la MasterPage.

11.   Desde la pagina default crear unos controles de texto para producto, marca y un botón que diga Buscar,  haciendo click en este enviaremos parámetros a una nueva pagina llamada resultados donde obtendremos los valores de los parámetros enviados y posteriormente en un grid desplegaremos los datos encontrados de los parámetros. Para esto crearemos un nuevo método donde regresaremos estos datos.

12.   Defina una página de error, y configure par que cuando exista un error  vayamos a esta página.  Defina un mensaje personalizado.  Esta página tendrá la estructura del Master Page.

13.   Crea un Control de usuario llamado Anuncios,  configure un AdRotator con diferentes imágenes de publicidad, defina para cada uno de ellos valores de aparición.

14.   En la página Salir.aspx elimine el valor de los cookies “UsrNombre” y redirija a la página de default.aspx

Caracteristicas del Nuevo Tipo de Datos: FILESTREAM


A lo largo del tiempo, los desarrolladores hemos inventando variadas técnicas, para almacenar datos no estructurados como ser mapas de bits (bitmaps), archivos de texto, archivos de audio, etc.  Algunas de ellas han sido, por ejemplo guardar en la base de datos la ruta donde el archivo se alojaba en el sistema de archivos.
Claro que esto trae problemas de seguridad, o de pérdidas de referencias por cambios en la ruta.
Una novedad de SQL Server 2008 en lo que a tipo de datos se refiere es la introducción del FILESTREAM esta nos trae solución a aquellos problemas, permitiéndole a las aplicaciones utilizar las API de streaming con el mismo rendimiento que el sistema de archivos, y a su vez mantener una consistencia transaccional el mismo esquema de seguridad entre la información estructurada y la no estructurada.
La seguridad para los objetos almacenados en un campo del tipo FILESTREAM goza de los mismos privilegios que cualquier tipo de dato ya existente. Solo es necesario establecer los permisos a la tabla o la columna que lo contenga.
Es decir, si el usuario tiene permisos de acceso a la columna correspondiente, podrá abrir el archivo asociado a ella.
El tipo de dato FILESTREAM es implementado como una columna varbinary(max), y totalmente integrado en el motor.  Lo cual permite utilizar todas las técnicas de copias de respaldo y restauración para resguardar los datos.
Los BLOBS (Binary Large Object) consisten en conjuntos de datos no estructurados como ficheros de texto, imágenes o vídeos
Características FILESTREAM :
 - Almacena grandes ficheros de datos binarios no estructurados directamente en un sistema de ficheros NTFS: documentos, imágenes, etc.
 - Se preserva el control por parte de la BD y la consistencia transaccional.
Un ejemplo de uso de FILESTREAM es  la posibilidad de controlar mediante la base de datos una carpeta de archivos de vídeo.
Detalle de las características de FILESTREAM :
 Especifica que la columna se ha de almacenar en el sistema de ficheros NTFS:
  - La columna sigue siendo manejable mediante comandos T-SQL.
  - Se puede acceder desde el sistema de ficheros y desde la API del SO.
 Es un atributo de una columna varbinary(max).
 Se implementa como una columna varbinary(max) en la que los datos son guardados como BLOBs en el sistema de ficheros:
 EL tamaño máximo de los BLOBs viene limitado únicamente por el tamaño del volumen de almacenamiento.
 La limitación estándar de los tipos varbinary(max) de 2 GB no se aplican a estos BLOBs que se almacenan en el sistema de ficheros.
¿Cuándo es recomendable utilizar el tipo de datos FILESTREAM?
- Se necesita almacenar objetos que ocupan como media más de 1 MB.
- Es importante el acceso rápido en modo lectura.

Algunas limitaciones FILESTREAM:
- Creación de reflejo de la base de datos , la creación de reflejo de la base de datos no es compatible con FILESTREAM. No es posible crear un grupo de archivos FILESTREAM en el servidor principal.
- La creación de reflejo de la base de datos no puede configurarse para una base de datos que contiene grupos de archivos FILESTREAM.
- SQL Server Express es compatible con FILESTREAM. El límite de tamaño de base de datos de 4 GB no incluye el contenedor de datos de FILESTREAM.
- Cuando una tabla contiene una columna FILESTREAM, cada fila ha de tener un ID de fila único.
- Las columnas FILESTREAM solo pueden almacenar datos en volúmenes de disco locales, almacenamiento remoto en futuras versiones.
- No soporta columnas FILESTREAM en parámetros de tabla
- No soporta Database Mirroring
Seguridad :
- Solo la cuenta de servicio tiene permisos sobre el sistema de ficheros del contenedor FILESTREAM.
- Cuando una base de datos se abre, SQL Server retringe el acceso al contenedor/es FILESTREAM, excepto cuando el acceso se realiza desde transacciones T-SQL y la API OpenSqlFilestream
- Cuando la BBDD se cierra, los datos físicos del contenedor sen completamente accesibles y sujetos a la seguridad de Windows. Es recomendable asegurar los directorios que contienen FILESTREAMs para que los archivos no sean accidetalmente modificados o borrados.

Pasos para Habilitar FILESTREAM
1. Abrir SQL Server Configuration Manager. Seleccionar la instancia y ubicarnos en la pestana FILESTREAM, habilitar Enabled FILESTREAM for Transact-SQL acces,   Enabled FILESTREAM for file I/O streaming Access. Opcionalmente podemos habilitar la opción de permitir que los clientes tengan acceso a los datos FILESTREAM
2. Tambien podemos habilitarlo via T-SQL: 
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
3.       Verificar en la Administracion de Equipo,  Carpetas Compartidas,  Sesiones,  y veremos nuestra Carpeta compartida de SQL para FILESTREAM.
4.       Configurar la base de datos de tal manera que agreguemos un FileGroup del tipo FILESTREAM,  posteriormente un File en la base apuntando al Filegroup y con una ruta del sistema de archivos local.
5.       Creamos una Tabla para almacenar datos FILESTREAM. Hacer notar que deberá contener una columna UNIQUEIDENTIFIER no nula y de carácter único.
CREATE TABLE Documentos
(DocumentoID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
 Nombre VARCHAR(100),
Contenido VARBINARY(MAX) FILESTREAM NULL)
6.       Realizamos la inserción a la Tabla
INSERT INTO Documentos
 ( DocumentoID,     Nombre, Contenido )
 VALUES ( NEWID(), 'Bernardo',  CAST('Archivo de Texto' AS VARBINARY(MAX))
7.       Por último comprobamos la ruta, y lo que se inserto:
SELECT CAST(Contenido AS varchar), Contenido.PathName(), * FROM Documentos d