Crear una biblioteca de enlace dinámico (DLL) es muy adecuado para incorporar nuestra funcionalidad a diferentes proyectos. Te has de preguntar ¿Porqué enredarnos tanto creando una DLL, y agregándola a una aplicación para consumir un WebService si desde la misma aplicación puedo consumirlo? la respuesta es que no todos los lenguajes de programación soportan los WebService, por ejemplo cobol es un lenguaje muy amigable para negocios no lo soporta pero si es posible añadirle referencias como DLL’s, de ésta manera, indirectamente COBOL podría consumir un WebService. Éste ejemplo también ilustra la creación de una DLL en C#.
En resumen, haremos una aplicación que use una DLL y que ésta consuma un WebService:
Aplicación – DLL – WebService
Creando nuestra DLL
- Abrir nuestro Visual Studio 2010
- Ir a Archivo – Nuevo – Proyecto
- En en cuadro de diálogo que aparece, ubicarnos en Plantillas instaladas en la parte izquierda, en los items, seleccionar Otros Lenguajes dentro de éste, ir a Visual C# y clic en el item Windows
- En la parte central del cuadro de diálogo seleccionar en el combo .Net Framework 4 y más abajo dar clic en el icono Biblioteca de clases Visual C#
- En la etiqueta Nombre: escribir el título de nuestra dll, pondremos PruebaDLL y damos clic en aceptar
- Veremos que nos envía al código de la Class1.cs
- Vamos al Explorador de soluciones, donde dice PruebaDLL demos un clic derecho para desplegar un menú
- De ese menú busquemos el item Agregar Referencia de servicio…
- Aparece un cuadro de diálogo, en el botón Avanzadas… de la parte inferior izquierda, demos un clic
- Aparece otro cuadro de diálogo, demos un clic en el botón Agregar referencia web... que aparece en la parte inferior izquierda
- Veremos otro cuadro de diálogo. En la caja de texto donde dice Dirección URL: escribamos la ruta del webservice que vamos a consumirm, en la imagen 1.2 vemos la ruta sin embargo nos mostrará hasta el método, escribamos solamente hasta miServicio.asmx y demos un clic en el botón verde con flecha blanca. Si no tienes noción de cómo crear un web service, haz clic aquí para realizarlo:
- Sin en la parte inferior vemos el nombre del webservice es porque se añadió exitosamente
- Busquemos la etiqueta Nombre de referencia web del lado derecho y en la caja de texto cambiemos el nombre localhost por referenciaWebService y demos un clic en el botón Agregar referencia
- Veremos que en el explorador de soluciones aparece nuestra referencia web:
- Volvamos a la pantalla del código de la clase y veremos lo siguiente:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PruebaDLL { public class Class1 { } }
- Cambiemos el nombre de la clase de Class1 a ConexionAlServicio y agreguemos algo de código. Deberá verse así:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using PruebaDLL.referenciaWebService; namespace PruebaDLL { public class ConexionAlServicio { public Respuesta ingresarDatos(double a, double b, double c) { // creamos la instancia para enviar parámetros WebService servicio = new WebService(); // creamos la instancia para recibir respuestas Respuesta res = new Respuesta(); // enviamos los datos y recibimos respuesta res = servicio.ejecutarEcuacion(a, b, c); // devolvemos el resultado de los cálculos return res; } } }
- Demos un clic en el icono guardar todo (Cntl + Mayus + S)
- En el explorador de soluciones, en el primer item vamos a darle un clic derecho y del menú que veremos demos un clic en Generar solución
- Ahora vayamos a la carpeta donde guardamos nuestra solución. Yo la he guardado en el Desktop (Escritorio) y seguimos esta ruta:
C:\Users\Administrator\Desktop\PruebaDLL\PruebaDLL\PruebaDLL\bin\Debug\ - Ahi veremos la dll que generamosy tendremos el componente: PruebaDLL.dll este ya lo podremos usar en otras aplicaciones añadiéndola como referencia.
Probando nuestra DLL
Para probar nuestra biblioteca tendremos que hacer una nueva solución. Haremos una aplicación para escritorio y aquí te decimos cómo:
- Abre tu Visual Studio 2010
- Ve al menú Archivo y elige Nuevo y posteriormente Proyecto
- Aparecerá un cuadro de diálogo, del lado izquierdo aparecen Plantillas instaladas, busca Otros Lenguajes – Visual C# – Windows
- En la parte central del cuadro de diáologo selecciona el icono Aplicación de Windows Forms
- En nombre, vamos a colocar PantallaDePruebaDLL y clic en aceptar
- Lo primero que veremos, es una ventana de diseño, vamos a agregar 3 cajas de texto, 2 etiquetas y un botón. Procura que tu diseño quede como el de la imagen:
- Ahora agregaremos la referencia. Vamos al explorador de soluciones y en el item que dice PantallaDePruebaDLL damos un clic derecho y del menú seleccionamos Agregar referencia…
- Veremos un cuadro de diálogo, en la pestaña Examinar y busquemos la ruta donde se encuentra nuestra DLL, para el ejemplo la ruta está en: C:\Users\Administrator\Desktop\PruebaDLL\PruebaDLL\PruebaDLL\bin\Debug\ y la DLL se llama PruebaDLL.dll la seleccionamos y damos un clic en aceptar.
- Nuestra referencia ha sido agregada al proyecto y podremos verla en el explorador de soluciones
- Demos doble clic en el botón aceptar que añadimos a la ventana de nuestra vista diseño de formulario. Nos desplegará el código fuente de ésta forma:
-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace PantallaDePruebaDLL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } } }
- Cambiamos el código de la siguiente manera:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using PruebaDLL; namespace PantallaDePruebaDLL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // creamos una variable de instancia // hacia la clase principal de la DLL ConexionAlServicio enlace = new ConexionAlServicio(); // capturamos en variables los datos // de las cajas de texto string valA = textBox1.Text; string valB = textBox2.Text; string valC = textBox3.Text; // calculamos el resultado del primer valor de X label1.Text = enlace.ingresarDatos(Convert.ToDouble(valA), Convert.ToDouble(valB), Convert.ToDouble(valC)).valorX1.ToString(); // calculamos el resultado del segundo valor de X label2.Text = enlace.ingresarDatos(Convert.ToDouble(valA), Convert.ToDouble(valB), Convert.ToDouble(valC)).valorX2.ToString(); } } }
- Ejecutamos nuestra solución, pulsamos la tecla F5 para correrlo, aparecerá la ventana que diseñamos.
- Ingresamos los valores que vemos en la imagen, pulsamos el botón Aceptar y los resultados aparecerán en las etiquetas, tal y como se muestra en la imagen