Comunidad de desarrolladores de Puebla.NET
Iniciar sesión Unete ahora
 
 
Novedades | Anuncios | Eventos | Publicaciones | Foros | Bolsa de trabajo | Certificaciones | Conocenos | Encuestas
 
  Buscar  
 
Anónimo
2390486 visitas desde Octubre de 2004
3 usuarios en línea
Contáctanos en línea:



Certificate Veracruz

Revista MTJ .NET

Nuevos envios

  • Ocultar VerticalScroolBar....
    Enviado por micromatica el Wednesday, March 10, 2010 (UMST)

  • Buy online FLEXERIL
    Enviado por ? el Wednesday, March 10, 2010 (UMST)

  • Generar Setup
    Enviado por chacho el Wednesday, March 03, 2010 (UMST)

  •  

    Nuevas ligas

  • WCF bajo Contrato
    Una práctica introducción a los contratos de WCF

  • Introducción a los Servicios Web con WCF
    Una sencilla y práctica introducción a los Servicios Web con WCF

  • Guía Breve de Servicios Web
    Guía Breve de Servicios Web, desde w3c

  •  

    Nuevas descargas

  • StoreFiles.rar
    Codigo Fuente

  • Imagenes
    Muestra imágenes de acuerdo a una fecha asignada, una vez caducada muestra la siguiente imagen dependiendo de una prioridad asignada, cada imagen tiene un Link y descripción, para ello cuenta con una BD construida en Access, permite hacer Altas, Bajas, Modificaciones y consultas, un buen ejemplo de guia saludos..

  • Transferencia de imagenes en minichat
    Mediante esta aplicación podras enviar imagenes en formularios diferentes y a la ruta que decees.
    ***Saludos desde el Tec de Tepeaca***


  •  

    Libros recientes

  • Proyectos Profesionales Programacion ASP.NET
    5 Prácticos proyectos para ASP.NEt,

  • Programming Microsoft ASP.NET
    Programación de aplicaciones web con ASP.NET

  • Visual Basic Programmer's Guide to Serial Communications
    Desarrollo de aplicaciones con puertos seriales

  •  

    Artículos recientes
  • Servicios Web con WCF
    Una sencilla introducción a los Servicios Web con WCF, con simples ejemplos...

  • Video: Llamando a métodos de servidor desde código JavaScript con AJAX
    Este video muestra como acceder a los métodos de servidor de una página Web desde el código JavaScript corriendo del lado del cliente. El video utiliza Visual Web Developer Express Edition 2008 y AJAX.



  • Excel Automation desde VB
    Como moverse a través de una hoja de excel usando el automation.


  •  
    Servicios Web con WCF

    Publicado por el Wednesday, June 11, 2008 (UMST)

    Una sencilla introducción a los Servicios Web con WCF, con simples ejemplos...

    Una sencilla introducción a los Servicios Web con WCF

    Willy Mejía

     

    El Microsoft .NET Framework 3.0 (aka NetFx3, antes WinFX) introdujo a WCF (Windows Communication Foundation) como una ventanilla única para la creación sobre .NET de todo tipo de servicios distribuidos, que incluye pero no se limita a los Servicios Web.

     

    El siguiente cuadro muestra algunas clases importantes para WCF.

    Elemento Clase o Interface
    Address System.Uri
    Binding System.ServiceModel.Binding
    Contract System.ServiceModel Attributes
    Endpoint System.ServiceModel.ServiceEndpoint

    El presente artículo muestra cómo utilizar las clases y herramientas de WCF para crear y publicar un sencillo Servicio Web así como su cliente. Para lo cual se requiere tener instalado NetFx3 -o bien .NET Framework 3.5- con su correspondiente SDK.

     

    Nota: Para una breve introducción a los Servicios Web puede leer: Guía Breve de Servicios Web.


    Creando un Servicio Web muy simple

    Para ilustrar la creación de Servicio con WCF emplearemos el clásico ejemplo de Hola Mundo, el cual luce así:

     

    Listado de Hello.cs

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.ServiceModel;
    
    namespace HelloService
    {
      [ServiceContract()]
      public class Hello
      {
        private StringBuilder message = new StringBuilder("Hola ");
    
        [OperationContract]
        public string SayHello(string name)
        {
          String msg = message.Append(name + ".").ToString();
          System.Console.WriteLine(msg);
          return msg;
        }
      }
    }

    Nótese que luce como una clase normal pero con algunas adiciones: En primer lugar declaramos la utilización el ensamblado System.ServiceModel.dll, dentro del cual se encuentran los atributos con los cuales marcamos la clase Hello como un servicio (atributo ServiceContract) y al método como una operación (atributo OperationContract). Con esto habilitamos la clase para que pueda ser publicada como un Servicio WCF (el cual posteriormente desplegaremos como un Servicio Web) con una sola operación: la del método SayHello.

    >csc /t:library Hello.cs /r:System.ServiceModel.dll

    Con todo lo anterior ya tenemos un sencillo Servicio WCF casi listo para ser alojado y desplegado como un Servicio Web dentro de un Sitio Web ASP.NET, no obstante podemos probarlo sin necesidad de recurrir a IIS (o Cassini) si creamos un Endpoint dentro de una aplicación de consola que actuará como host del servicio, tal como se ilustra en el siguiente código:

     

    Listado de HelloHost.cs

    using System;
    using System.ServiceModel;
    
    namespace HelloHost
    {
      class Program
      {
        static void Main(string[] args)
        {
          string endpointAddress = "http://localhost:8080/Hello";
          ServiceHost myServiceHost = 
            new ServiceHost(typeof(HelloService.Hello), new Uri(endpointAddress));
          myServiceHost.Open();
          System.Console.WriteLine("El Servicio Web Hello se está ejecutando...");
          System.Console.WriteLine("WSDL: " + endpointAddress + "?wsdl");
          System.Console.WriteLine("Presione una tecla para cerrarlo.");
          System.Console.ReadKey();
          if (myServiceHost.State != CommunicationState.Closed)
            myServiceHost.Close();
        }
      }
    }

    Nótese que se trata de una simple aplicación de consola que utiliza una instancia de la clase ServiceHost y sus métodos Open y Close para crear un Host para una instancia de la clase HelloService.Hello en la dirección (Address) http://localhost:8080/Hello. Esto último gracias a que la clase ServiceHost utiliza la información proporcionada tanto en el código como en el archivo de configuración -que veremos a continuación- para crear un ServiceDescription, el cual WCF utiliza para publicar un ServiceEndPoint.

     

    Por lo que el siguiente paso es crear el archivo de configuración que se vinculará al ejecutable HelloHost.exe, con el siguiente contenido:

     

    Listado de HelloHost.exe.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="HelloService.Hello" behaviorConfiguration="enableMetadata">
            <endpoint contract="HelloService.Hello" binding="basicHttpBinding" />
            <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="enableMetadata" >
              <serviceMetadata httpGetEnabled="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

    Lo importante a destacar es la línea:

    <endpoint contract="HelloService.Hello" binding="basicHttpBinding" />

    En la cual se especifica tanto la clase/interfaz que define al servicio (Contract), así como la forma de enlace (Binding) con el "Extremo" (Endpoint), cuya ubicación en la red (Address) se definió en el código del host. Estos tres elementos: Address, Binding & Contract, constituyen el ABC de los Endpoints de WCF. Para mayor información leer: Extremos: direcciones, enlaces y contratos.

     

    Nota: El resto de la configuración (de color oliva) solo sirve para habilitar la exposición de los Metadatos del servicio, de modo que se pueda tener acceso al WSDL autogenerado. Pero no es necesaria para poder consumir el servicio, por lo que si se facilita el WSDL por otra vía no sería necesaria dicha configuración extra.

     

    Tras compilar y ejecutar la aplicación se mostrarán dos líneas indicando que el servicio se está ejecutando así como la ubicación del documento WSDL del mismo, para cualquier cliente que desee consumir el mismo.

    >csc /t:exe HelloHost.cs /r:System.ServiceModel.dll,Hello.dll
    >HelloHost.exe
    
    El Servicio Web Hello se esta ejecutando...
    WSDL: http://localhost:8080/Hello?wsdl
    Presione una tecla para cerrarlo.

    Nota: Por motivos de seguridad se requiere de una cuenta con privilegios de Administrador para ejecutar el host.

    Lo siguiente a realizar es crear un cliente que lo consuma.


    Creando un Cliente muy simple para un Servicio Web muy simple

    Ahora crearemos —en un directorio/proyecto distinto— el cliente para nuestro Servicio Web el cual debe estar publicado y en ejecución.
     
    Pero primero necesitamos generar los artefactos cliente. Para ello utilizaremos la herramienta svcutil (Herramienta de utilidad de metadatos de ServiceModel) incluida en el Windows SDK for .NET Framework 3.x, a la cual le pasamos como argumento la ubicación del documento WSDL:
    >svcutil http://localhost:8080/Hello?wsdl

    Esto generará un archivo con la clases proxy, las cuales encapsularán la invocación de las operaciones del Servicios Web. En nuestro caso se generará el archivo Hello.cs (con la clase HelloClient que utilizaremos directamente en la aplicación cliente) así como el archivo output.config, el cual renombraremos como Client.exe.config, de modo que coincida con el nombre del ejecutable de la aplicación cliente.

     

    Una vez generados los artefactos cliente solo resta crear el cliente en sí, nuevamente una simple aplicación de consola:

     

    Listado de Client.cs

    using System;
    
    public class Client
    {
      static void Main(string[] args)
      {
        String arg = null;
        String result = null;
        if (args.Length > 0) {
          arg = args[0];
        }
        else {
          arg = "Anónimo";
        }
        try {
          HelloClient service = new HelloClient(); 
          result = service.SayHello(arg);
        }
        catch (Exception ex) {
          result = ex.ToString();
        }
        finally{
          System.Console.WriteLine(result);
        }
      }
    }

    Nótese que para invocar la operación de nuestro Servicio Web primero creamos una instancia de la clase HelloClient (generada por svcutil) por medio de la cual después invocamos al método SayHello —tras del cual se invoca la operación del Servicio Web, el cual a su vez invoca el método correspondiente de la clase Hello implementada al inicio del artículo...

     

    Solo resta compilar tanto el proxy como la aplicación cliente:

    >csc /t:library Hello.cs
    
    >csc /t:exe Client.cs /r:Hello.dll

    Después ejecute la aplicación cliente con algún argumento, su nombre por ejemplo, si no se especifica argumento alguno la salida será "Hola Anónimo":

    >Client Willy
    
    Hola Willy.

    La misma salida se desplegará en la consola del servicio.


    Nota final

    Con lo que hemos realizado vemos lo fácil que es crear y publicar un Servicio Web así como su cliente con WCF.

     

    No obstante todo esto tan sólo fue el inicio, la finalidad fue dar una introducción al desarrollo de Servicios Web utilizando WCF esperando le motive a continuar para después "emplearse en la Fábrica". Quedan entonces muchas cosas por tratar, como crear un servicio y cliente a partir de un WSDL, el despliegue en IIS, utilizar contratos tanto de servicios, como de mensajes y de datos, Interoperabilidad y WS-*, etc...

     

    Espero que sirva de algo y hasta la próxima.


    Willy Mejía

    willy.mx.kz


     

    Agregar comentario