BuildingBlock
 

Fecha: 09/Ago/2004 (06/08/2004)
Autor: Erick Aragón hackjavasun@yahoo.com.mx


Introducción.

En este artículo se explicara como consumir un servicio Web desde una Aplicación Windows, parecerá muy choteado pero la característica principal de este será la utilización de Building Block de acceso a los datos.

Ahora..Que es un Building Block de acceso a los datos:

        El Building Block de acceso a los datos de Microsoft para .NET consiste de un ensamblaje único basado en .NET, el cual contiene toda la funcionalidad necesaria para realizar las tareas más comunes de acceso a los datos contra una base de datos Microsoft SQL Server 2000. 

        El Building Block de acceso a los datos no esta distribuido con el .Net FrameWork así que si quieren utilizarlo lo pueden descargar de la pagina de Microsoft los link los daré mas adelante.:

         Este ensamblaje básicamente consiste en dos clases :

La clase SqlHelper proporciona un conjunto de métodos estáticos que puede utilizar para ejecutar varios tipos de comandos diferentes contra una base de datos SQL Server.

La clase SqlHelperParameterCache proporciona la funcionalidad de memoria caché del parámetro de comandos utilizado para mejorar el rendimiento.

        Ahora que ventajas ofrece utilizar esto. La primer ventaja que se le encuentra es la simplificación del código. Por ejemplo para una consulta si no se utiliza el Bloque de Aplicación de Acceso a Datos (DAAB)  necesitaremos crear un SqlCommand y un SqlConnection antes de realizar la consulta, quedando un código parecido al siguiente:

SqlConnection conn=newSqlConnection(connString);

SqlCommand cmd=newSqlCommand(cmdString,conn);

cmd.ExecuteNonQuery();

Pero, si utilizamos SqlHelper proporcionado por el DAAB, resolvemos todo en sólo una línea.

        SqlHelper.ExecuteNonQuery( connString, System.Data.CommandType.Text, cmdString);

        Otra ventaja es que asegura que se implemente su lógica de acceso a los datos en una forma eficiente y efectiva.

Ahora empezaremos el programa en en el que se aplicara el DAAB.

Primero debemos bajar el DAAB.

            Puedes bajar la versión 1.0 del DAAB del sitio  Microsoft Download Center.

            Puedes bajar la versión 2.0 del Data Access Application Block del sitio Microsoft Download Center

Para este ejemplo se utilizara la versión 1.0

        Después de bajar el archivo lo ejecutamos, la instalación es muy sencilla son un acepto y unos cuantos clic en siguiente :D.

        Al terminar la instalación se crea un submenú en  Inicio\Programas\Microsoft Application Blocks for .NET dentro de este hay un submenú "Data Access" dentro del cual encontraremos Documentación referente a DAAB y accesos para Cargar el Proyecto ya sea en VB o en C#. De tarea queda que le peguen una revisada.

        Ya instalado el DAAB abrimos el Proyecto hecho en VB o C# ya que se cargue presionamos F5, o en el Menú Generar\Generar Solución o bien presionamos las teclas Ctrl+Mayus+B :D, esto es para crear el Assembly (dll) ya que el archivo de instalación no lo tiene o bien no lo crea al instalar el DAAB.

        Cerramos la solución y creamos un nuevo proyecto el cual será un Servicio Web

  1. Cree un nuevo proyecto de servicio Web de Visual Basic ASP.NET de la manera siguiente:
    1. En el menú Archivo, seleccione Nuevo y haga clic en Proyecto.
    2. En el cuadro de diálogo Agregar nuevo proyecto, haga clic en Proyectos de Visual Basic bajo Tipos de proyecto y después en Servicio Web ASP.NET 
    3. En el cuadro de texto Nombre, escriba ServicioWeb .
    4. En el cuadro de texto Ubicación, escriba la dirección URL de su servidor (por ejemplo, http://localhost ejecuta el servicio Web en su servidor Web local). Haga clic en Aceptar.
  2. En el página Service1.asmx.vb[Design], cambie a la vista Código. Aparecerá la ventana de código del servicio Web.

 

Yo le pondré ServicioWeb :D.

 

Ahora nos vamos al explorador de soluciones y le damos botón alterno y seleccionamos Agregar Referencia.

Nos saldrán una ventana como la de abajo, clicqueamos en Proyectos y le damos clic en examinar para buscar el Ensamble que se creo cuando Generamos la solución DAAB. Por ultimo damos clic en Aceptar.

Al dar clic en Aceptar en el Explorador de Soluciones en la Parte Referencias (References) del Proyecto nos debe aparecer como se muestra en la imagen.

Después de agregar la referencia Importamos el namespace con las siguientes instrucciones:

[Visual Basic]
Imports Microsoft.ApplicationBlocks.Data

[C#]
using Microsoft.ApplicationBlocks.Data;
 

 

Ahora manos al código!.

Código en Visual Basic "Servicio Web":

Tecleamos el siguiente código con el cual creamos una función que nos regresara en un DataSet el contenido de la tabla Customers de la DB Northwind.

<WebMethod()> Public Function GetCustomers() As DataSet

'Modificar esta cadena de conexión para utilizar la información de inicio de sesión y de SQL Server.

Dim con As String = "workstation id=SENZAO;packet size=4096;user id=sa;data source=senzao;persist security info=False;initial catalog=Northwind"

Dim ds As New DataSet

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' La siguiente línea es la implementación de la función ExecuteDataset de la clase SqlHelper como podemos ver recibe tres parámetros :

' -connectionString - Una cadena de conexión valida para un SqlConnecction.

' -commandType - El tipo de comando (Procedimiento Almacenado, Texto, etc.)

' -commandText - El nombre del procedimiento almacenado o la Instrucción T-SQL

ds = SqlHelper.ExecuteDataset(con, CommandType.Text, "select * from Customers")

'''''Esta función regresa un DataSet con los resultados generados por el comando.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Return ds

End Function

El código que comúnmente se utilizaría para esta funcion seria como el siguiente.

Dim con As New SqlConnection("workstation id=SENZAO;packet size=4096;user id=sa;data source=senzao;persist security info=False;initial catalog=Northwind")
        Dim daCust As New SqlDataAdapter("Select * From Customers", con)
        Dim ds As New DataSet()
        daCust.Fill(ds, "Cust")

Return ds

Probar el servicio Web

  1. Presione la tecla F5 para compilar y ejecutar el servicio Web. Se devuelve una página Web que le permite interactuar con el servicio Web desde Microsoft Internet Explorer.

    Observe que la dirección URL de la página devuelta es http://localhost/ServicioWeb/Service1.asmx

  2. En la página Web Service1 , haga clic en GetCustomers. Se devuelve una página Web que muestra detalles del método Web GetCustomers.

  3. Cierre las páginas Web.

Ahora crearemos lo que será la aplicación cliente.

  1. En Visual Studio .NET, cree un nuevo proyecto de aplicación de Windows de Visual Basic. Form1 se agrega al proyecto de manera predeterminada.

  2. Agregue dos controles Button y un control DataGrid a Form1. Button1 y DataGrid1 se agregan al proyecto de manera predeterminada.

  3. En el menú Proyecto, haga clic en Agregar referencia Web. Escriba la dirección URL de su servicio Web (en este caso, escriba http://localhost/ServicioWeb/Service1.asmx), presione ENTRAR y haga clic en Agregar referencia. La entrada de la referencia Web recién agregada aparece en el menú Ver del Explorador de soluciones.

 

Pegue el siguiente codigo en el evento clic del Button1.

Dim MyService As New localhost.Service1

DataGrid1.DataSource = MyService.GetCustomers()

DataGrid1.DataMember = "Table"

Probar la aplicación cliente

  1. Presione la tecla F5 para compilar y ejecutar la aplicación de cliente.

  2. Observe que DataGrid1 en principio está vacío. Haga clic en Cargar. Observe que DataGrid1 ahora muestra los registros de clientes.

Nota.- Recuerda calificar la publicación, no seas malo :D.


ir al índice

Fichero con el código de ejemplo: ErickAragon_BuildingBlock - Tamaño 31KB