Microsoft Web Express Developer
2005 con Crystal Report .Net Fecha: 06/Mar/2005 (05/03/05)
|
Tecnología de la programación!!!
Introducción
El propósito de este articulo es tratar el desarrollo de aplicaciones Web con
Microsoft Visual Studio 2005, Microsoft SQL Server 2000 como motor de bases de
datos y Crystal Report .Net. Dada la amplitud del tema, este articulo solo
examina el desarrollo de una aplicación Web, exponiendo distintas tecnologías
desde el punto de vista de alto nivel. Basándome en mi experiencia como
desarrollador y consultor, analizo algunos aspectos de gran importancia, como
los conceptos acerca de HTML, Web, Internet, Internet Information Server,
Objetos ActiveX, ASP etc.
Dado que este tema abarca
muchos otros temas, puede resultar muy útil un diagrama de lo que realmente se
debe saber para poder crear aplicaciones Web. Si se examina la figura 1.0, se
verán las áreas principales y una cierta orientación sobre el orden en que se
deben aprender. En primer lugar, se observará que HTML se encuentra al principio
de la lista. La verdad es que HTML es el lenguaje de Internet. Aparte de lo que
se escucha de XML, tovía se sigue necesitando conocer HTML para poder mostrar
páginas al usuario final.
Figura 1.0 Diagrama para el desarrollo de aplicaciones Web.
XML también se puede utilizar
para mostrar información. Sin embargo XML, al igual que HTML, es todo texto,
pero requiere al menos un paso adicional para mostrarlo al usuario en la forma
que lo hace HTML. Por esto, en este articulo se considera HTML como el formato
utilizado para visualización de texto, mientras que XML se puede utilizar para
pasar, y quizás mostrar datos.
Tras aprender HTML, se hace
necesario aprender un lenguaje de guiones. Habitualmente se trata de VBScript,
JavaScript o ECMAScript. Muchos desarrolladores de sitios Web programan tanto en
VBScript como en JavaScript. Con los lenguajes de guiones se pueden hacer muchas
cosas importantes. En primer lugar, permiten hacer uso de la programación del
lado del cliente y de DHTML (HTML dinámico, en cierto sentido una forma avanzada
de programación al lado del cliente). Esto permite ejecutar código en la máquina
cliente. Esto añade alguna potente funcionalidad, pero puede limitar el alcance
de la aplicación a determinados exploradores de internet.
Un lenguaje de aguiones también
permite crear páginas con programación en el lado del servidor. Los guiones del
lado del servidor proporcionan una gran potencia porque se ejecutan en el
servidor y no se ven afectados por ninguna de las capacidades del explorador
cliente. Son métodos más potentes y con mayor alcance que el que proporciona una
aplicación DHTML.
La utilización de lenguajes de
guiones también proporcionan una mayor potencia al uso de controles, Applets de
Java. En el cliente se pueden usar controles sin necesidad de programación en el
lado del cliente, pero para interactuar con esos controles o complementos
normalmente se precisa algo de programación en el lado del cliente.
Una vez que se domina HTML y un
lenguaje de guiones, se pueden crear páginas que hagan uso de programación en el
lado del cliente y programación en el lado del servidor. Entonces, llega el
momento de mejorar las capacidades incorporadas, potentes características, tales
como el acceso a base de datos, la comunicación con componentes y por el cual se
podrían crear componentes propios y usar lenguajes completos para crear
controles o servicios Web.
Qué son las
aplicaciones Web
Cuando se habla de aplicaciones Web, a lo que nos referimos es a la construcción
de sitios que hagan algo. Sitios que permitan introducir información y que
respondan inteligentemente a las solicitudes. Entre las aplicaciones Web se
encuentran los sitios de comercio electrónico, que se están expandiendo a un
ritmo vertiginoso. Esos sitios también permiten examinar un catálogo, pero en
ellos además se pueden colocar artículos en el carrito de la compra, elegir las
opciones de envió y finalmente pagar los artículos, todo ello sin tener que
hacerse por teléfono.
Otros tipos
de aplicaciones son aquellas que de muy distintas formas mantienen las
relaciones entre empresas. Por ejemplo, una empresa A podría dedicarse a la
recopilación de datos demográficos específicos. Esto significa que ese tipo de
sitio requiere un acceso en tiempo real a las bases de datos, y la capacidad no
sólo de leer los datos, sino también de generar sobre la marcha una página que
refleje los valores obtenidos de la misma.
Servidores Web
y HTML Los servidores Web pueden estar compuestos por un
software muy sencillo. Una computadora cliente conectada a una red, solicita una
página concreta de un determinado servidor Web. En un servidor Web una página es
simplemente un archivo en una unidad de disco fijo. El servidor localiza la
página en alguna computadora y envía una copia de la página (archivo) a la
computadora cliente solicitante, tal y como se puede observar en la figura 2.0.
Figura 2.0 Un sencillo servidor Web que remite una
página en respuesta a una solicitud de un cliente.
Por lo tanto, los servidores Web, en su funcionalidad básica, simplemente envían
archivos al explorador solicitante. Y ésta es una de las cosas importantes que
se deben comprender sobre las páginas estáticas en HTML, por el cual el servidor
Web no las procesa de ninguna forma. Dicho de otra forma, los servidores Web son
'mudos' por lo que las páginas Web estáticas se refiere. Sin embargo la mayoría
de los servidores disponen de la capacidad para realizar procesamiento antes de
enviar las páginas al cliente. Ese procesamiento de las páginas requiere alguna
forma de inteligencia en el servidor Web, y es de esto que este artículo trata. Programación
en lado del cliente Con la programación del lado del cliente se pueden validar algunos
de los datos en la máquina cliente antes de enviarlos al servidor. Esto
proporciona a los usuarios informes de error inmediatos, mientras siguen en esa
página de formulario y sin necesidad de volver atrás tras recibir un mensaje de
error. Puede resultar necesario acceder a una base de datos para validar
determinados valores, mientras que no suele disponer de un acceso directo a la
base de datos en la máquina del cliente, aunque ese acceso a la base de datos es
factible.
Los clientes también se pueden mejorar con
otras técnicas. Por ejemplo, podemos usar controles ActiveX y Applets de Java.
Aunque estas tecnologías son bastantes diferentes, el resultado final es
similar: la interfaz del cliente puede hacer cosas que no puede hacer
normalmente con HTML. De momento, la diferencia principal entre ambas es que los
controles ActiveX sólo funcionan en IE. Las Applets de Java funcionan tanto en
IE como en Navigator, aunque no todos los Applets funcionan igual de bien en
ambos exploradores.
Programación en
el lado del servidor La programación del lado del servidor es un elemento
agregado muy importante en el diseño o construcción de sitios Web, ya que
permite de una u otra forma el manejo de datos de forma dinámica. Los primeros
servidores Web que permitían construir páginas dinámicas utilizaban CGI. CGI es
aun muy común en la actualidad y los servicios de IIS de Microsoft pueden usar
CGI al igual que las páginas ASP. CGI es una tecnología que nos permite invocar
programas compilados o guiones en el servidor Web. CGI se ve a menudo en los
servidores Web de sistemas UNIX, y muchos de los programas CGI son guiones Perl. ASP nos
permite disponer de un entorno de aplicación mucho más complejo del que
podríamos conseguir solamente con HTML y la programación en el lado del cliente.
Por ejemplo, podríamos necesitar acceder algunos datos, o incluso programas de
un gran sistema. Esos programas podrían trabajar sobre una cantidad considerable
de datos y enviarnos los resultados. Pondríamos entonces poner los datos
resultantes en una base de datos para una posterior manipulación, antes de
producir la página final que se enviará al cliente. La figura
3.0 muestra la posibilidad de ejecutar programas en un gran sistema, añadir y
recuperar datos de una base de datos, y construir una página con los resultados
queda fuera de las posibilidades de HTML estandar y programación del lado del
cliente. A continuación se muestra un grafico que detalle de forma básica como
se podría diseñar un esquema de esta categoría.
Figura
3.0 Una aplicación Web compleja
Para tener más claro todo lo anteriormente
descrito y adentrarnos en la oferta de Microsoft para esta área, necesitamos
tener presente algunas cosas como las siguientes: HTML
estandar sólo para la visualización de datos y la aceptación de entradas del
usuario. Para
la validación de formularios se suele utilizar programación del lado del
cliente. La
programación del lado del cliente con VBScript sólo es admitida en IE. La
programación del lado del cliente con JavaScript es admitida tanto para IE como
Navigator.
Dynamic HTML es una mezcla de programación y HTML que a menudo es específica del
explorador. La
programación en el lado del servidor es código que se ejecuta en el servidor
Web. La
programación en el lado del servidor no depende de las capacidades del
explorador cliente.
IIS y ASP de Microsoft El servidor Web de Microsoft se denomina Internet
Information Server (IIS). IIS se encuentra incorporado en los sistemas
operativos de Windows NT o superior. Un subconjunto de IIS, denominado servidor
personal de Web, está disponible para Windows 95, Windows 98. IIS puede actuar
como un sencillo servidor Web, sirviendo páginas HTML estáticas como cualquier
otro servidor Web. Sin embargo, IIS tiene muchas otras características que lo
convierten en una plataforma popular en la que desarrollar potentes aplicaciones
Web. IIS incorpora objetos que facilitan la creación de aplicaciones Web y la
programación en lado del servidor con las Páginas de servidor activo. Por lo que
se refiere a las páginas de servidor activo, el motor ASP puede manejar
lenguajes de guiones. ASP a menudo de clasifica como tecnología libre de
compilación, esto es, Las ASP no son compiladas por el desarrollador. En cambio,
simplemente se colocan los archivos en el directorio adecuado del servidor Web.
Cuando el cliente solicita una ASP, es entonces cuando se interpreta con el
motor ASP y se guarda en memoria en un estado compilado. Las ASP son
parte del entorno IIS. Sin embargo, un producto de terceros denominado
Chili!Soft ASP (http://www.chilisoft.com) permite ejecutar ASP en servidores
distintos de IIS. Por ejemplo, aunque se use Lotus Domino o Netscape Enterprise
Server como servidor Web, se podrán ejecutar ASP en ellos. Incluso existe una
versión para el popular servidor Web Apache de sistemas UNIX. El producto
permite llevar las ASP fuera de las plaraformas de Microsoft, haciendo que sea
una solución viable para entornos mixtos.
Microsoft Web
Express Developer 2005 Tras la liberación de Visual Studio WHIDBEY 2005 Beta
1. Microsoft incorpora nuevas características a la plataforma de desarrollo ASP
.NET con una nueva y mejorada herramienta denominada Web Express Developer 2005,
que incorpora todas las características de la versión anterior para .net
framework 1.1 y las nuevas para .net framework 2.0. A continuación mencionare
algunas de las nuevas y mejoradas ideas que Microsoft incluye en esta primera
entrega Beta 1 de Visual Studio WHIDBEY: ASP .NET
incorpora una nueva propiedad denominada Datasource. Este control
se utilizará de forma declarativa o mediante programación en una aplicación para
encapsular la lógica de la consulta que se requiere para operar datos en una
base de datos. El control
GridView es un sucesor del Datagrid y agrega la capacidad de controlar la
paginación, ordenación, eliminación y actualización de datos. DetailsView
es un control enlazado a datos que procesa un único registro desde el origen de
datos asociados. Similar a una vista de formulario de Microsoft Access,
proporcionando botones de paginación para desplazarse de un registro a otro.
Incorporación de Master Page. Los desarrolladores podrán compartir rápidamente
el diseño en numerosas páginas mediante la creación de plantillas en las que se
especifiquen la ubicación de los controles, las barras de menús, los encabezados
y pie de páginas. Similar a la herencia visual de Windows forms, las páginas
principales permiten que otras páginas de un sitio Web hereden de una página
principal, adquiriendo automáticamente la apariencia y el funcionamiento de
ésta. Por lo tanto, cuando un desarrollador desea modificar el diseño de todas
las páginas, únicamente debe realizar actualizaciones en la página principal. ASP .NET
incorpora temas y máscaras para mejorar la apariencia visual de las aplicaciones
Web. Implementando una solución Web A continuación para demostrar un sencillo ejemplo,
exploraremos una solución utilizando la nueva herramienta de diseño Web Express
de Microsoft Visual Studio 2005 Beta 1. Dicho proyecto incluirá los siguientes
requerimientos: A continuación para construir un sitio Web utilizando
Web Express Developer 2005, explico paso a paso las instrucciones básicas que se
deben de ejecutar, una vez que se esta dentro de Visual Studio 2005. Paso #1: Paso #2: El
Asistente muestra una serie de plantillas que pueden ser utilizadas para
fines iguales o diferentes, esto es, dependiendo de las características que
se quieran desarrollar en el sitio. La
opción seleccionada en este caso es la que aparece en el recuadro y es con
la que se trabajara.
Para la recuperación del contenido de un sitio Web
a continuación expongo los siguientes formularios y opciones con algunos
comentarios básicos acerca de estos:
Paso #1: Primeramente se debe seleccionar del menú archivo la opción abrir sitio Web.
Paso #2:
Con esta
primera opción se recupera la solución Web directamente desde la carpeta del
proyecto, tal y como se recupera un proyecto Win32 EXE local.
Con la
opción IIS Local, se recupera el proyecto utilizando el directorio o carpeta
virtual desde Internet Information Server.
Sitios
FTP requiere el nombre del servidor donde se encuentra el proyecto y su
ubicación o directorio. Con la
opción sitios remotos, se requiere la dirección Web donde se encuentra
localizada la solución.
A continuación muestro un diseño preliminar para
un sitio Web utilizando una página ASP, mezclando objetos de Crystal Report .Net
y en la cual detallo algunos de los objetos utilizados en dicho proyecto.
Como se observa las páginas se dividen en dos
partes. La primera posee la extensión aspx, la cual permite visualizar los
objetos que se insertan en la misma. La segunda con extensión aspx.vb, es la que
contiene o contendrá el código fuente o comúnmente dicho la programación, la
cual puede involucrar acceso a una base de datos, presentación estática de datos
e imágenes etc.
A continuación muestro la página en tiempo de
ejecución utilizando Internet Explorer 6.0 y ejecutándose localmente.
Como se observa en la página se muestra registros
de datos relacionados al catálogo de productos de la base de datos NorhtWind de
SQL Server 2000, dicha página esta conectada a un reporte diseñado en Crystal
Report 10, el cual crea el vínculo entre la página y la base de datos mediante
un archivo ODBC diseñado para este propósito en Windows.
El control de lista, muestra las categorías de la
base de datos, el cual tiene como objetivo crear un criterio de búsqueda dentro
del reporte. Una vez que fue seleccionada una categoría se hace clic en el botón
buscar el cual dispara un procedimiento que permite ir a consultar a la base de
datos el registro correspondiente y mostrarlo en pantalla.
A continuación muestro el código fuente que se
ejecuta en la página:
Seleccionar del menú archivo la opción
nuevo sitio Web.
'--Espacio de nombres de Crystal Report .Net
imports CrystalDecisions.Web
imports CrystalDecisions.ReportSource
imports CrystalDecisions.Shared
imports CrystalDecisions.CrystalReports.Engine
'--Espacio de nombres Nicasoft.Net.v1.0.2005.dll
Imports ns = Nicasoft
'--Espacio de nombres de System.Data.dll
Imports System.Data.SqlClient
Imports System.Data
Partial class default_aspx
private sub SelectElements()
'--Se crea una búsqueda mediante la propiedad SelectionFormula
'--Aqui se busca la catégoria del producto, mediante el ID de la lista
'--del elemento seleccionado.
with me.crystalreportviewer1
.SelectionFormula = "{Categories.CategoryID}=" & me.cbob_cat.selectedvalue
End with
end sub
'--instancia a la clase acceso a bases de datos.
Dim DataSource as new ns.AccessDatabase
sub page_load(byval sender as object , byval e as System.EventArgs) handles me.load
dim crwebreport as new reportdocument
if not me.ispostback then
'--Inicializar algunas propiedades de conexión.
with me.datasource
'--nombre del servidor.
.GetServerName = "GIOVANNI"
'--nombre de la base de datos.
.GetDatabaseName = "NorthWind"
end with
'--inicializar la información de conexión.
dim ADONetConnection as String = me.datasource.getinfoconnection
'--ado.net no tipado inicializado.
dim cnt as new sqlconnection(adonetconnection)
dim sql as string = "select * from categories"
dim sqlDA_CatProducts As new sqldataadapter(sql, cnt)
dim datcatproducts as new dataset
'--llenar el dataset.
me .DataSource.FillDataSet(cnt, datCatproducts, sqlDA_CatProducts)
'--Llenar el ComboBox con todas las categorias de los productos.
with me.cbob_cat
.DataSource = datCatproducts
.DataTextField = "CategoryName"
.DataValueField = "CategoryID"
.DataBind()
end with
end if
'--asignar la ruta del reporte.
crWebReport.Load("C:\VS2005\CRWebApp_FindProducts\crNorthWind_CatProducts.rpt")
'--Conectar el reporte en tiempo de ejecución.
'--Aquí se pueden utilizar dos formas la primera es ubicando el archivo con el método
'--load de la instancia de clase crwebreport.
'--La segunda forma presentada en forma de comentarios es utilizando la propiedad
'--ReportSourceID. La cual debe de estar previamente configurada en el objeto
'--ReportSource1, parte de los nuevos componentes de Crystal Report .Net para
'--Visual Studio 2005.
with me.crystalreportviewer1
.ReportSource = crWebReport
'.reportsourceid = "reportsource1"
.DataBind()
end with
end sub
sub btnb_cat_click(byval sender as object , byval e as System.EventArgs)
'--Llamar al procedimiento que permite hacer el filtro.
SelectElements()
end sub
private sub CrystalReportViewer1_ReportRefresh(byval source as object , byval e as CrystalDecisions.Web.ViewerEventArgs) handles CrystalReportViewer1.ReportRefresh
end sub
end class
La tecnología de formularios Web es algo nuevo en .net framework, el cual proporciona una herramienta de diseño visual para construir aplicaciones ASP.NET dentro de Visual Studio. ASP.NET esta integrado a una parte de .net framework el cual tiene acceso a todas las características del mismo, como por ejemplo: En el diseño o construcción de un sitio Web, se puede utilizar cualquier lenguaje de programación de .NET, utilizando las facilidades de depuración, acceso a ADO.NET, acceso al entorno operativo y otros servicios utilizados en las clases de .net framework.
Conclusiones
Indudablemente el Internet a venido de manera vertiginosa creciendo y cambiando la forma de vida del mundo actual. Pues gracias al Internet nacieron ideas como los e-commerce, sitios o portales que compran y venden productos, mediante el uso de un teclado, un clic de un ratón y unos cuantos dígitos de una tarjeta de crédito a miles de millas de nuestros hogares. Pero el Internet actual no se limita nada más a este tipo de servicios, ya que permite compartir información entre millones y millones de personas desde diferentes sitios del planeta. Pero desde las incontables ventajas que ofrece el Internet, también podemos observar su parte oscura, tales como sitios con contenido muy crudo no actos para menores, ataques de virus a grandes servidores de información a sitios de comercio electrónico.
"Internet ha
desarrollado nuevas oportunidades para creadores de música, literatura, cine y
software para que puedan hacer su trabajo más accesible los usuarios en todo el
mundo. Para lograr este potencial,
una protección rigurosa de la Propiedad Intelectual será aún más importante que
antes".
Bill Gates
Espacios de nombres usados en el código de este artículo:
CrystalDecisions.Web
CrystalDecisions.ReportSource
CrystalDecisions.Shared
CrystalDecisions.CrystalReports.Engine
Nicasoft.Net.v1.0.2005 (Haga
clic aquí para descargar el espacio de nombres)
System.Data.SqlClient
System.Data
Fichero con el código de ejemplo: gcuadra_CRWebApp.zip - 137,10 KB