DIFERENCIAS ENTRE UN WEB SERVICE EN ASP.NET Y WCF

 

La mayoría de las veces buscamos algún tutorial de como levantar un servicio web, y el primero que nos topamos lo llevamos a cabo. Sin embargo, el framework .NET nos provee de diversas herramientas que nos facilitan la creación de Web Services, en este casó nos da la posibilidad de crearlos en dos de sus actuales tecnologías:

  • ASP.NET
  • WCF ( Windows Communication Foundations ).

Windows Communication Foundation (WCF) es la plataforma de última generación de Microsoft diseñada para la creación de sistemas distribuidos. Se lanzó al mercado como parte de .NET Framework 3.0 con la idea de consolidar y ampliar las API de versiones anteriores de Framework (por ejemplo, los servicios web ASP.NET, .NET Remoting, Enterprise Services (COM+) y Message Queuing).

Es por esto que les explicaré a continuación una breve descripción de algunas de las diferencias en utilizar alguna de ellas. Algo que debemos de tener claro es que ambas van a cumplir un mismo objetivo,  permitir el desarrollo de aplicaciones distribuidas, es decir, proveer de servicios que lleven a cabo la lógica de negocios, en este caso, a través de un componente de negocio; Web Service.

Se que esta definición de Web Service es un poco vaga, por lo que  les describiré un poco mas a detalle que es un Web Service de manera breve.

¿Qué es un Web Service?

Un servicio Web es un componente de negocio que proporciona una función útil a los clientes, o los consumidores. Un servicio Web puede ser pensada como un componente verdaderamente con accesibilidad global si se tiene los derechos de acceso adecuados, puede hacer uso de un servicio Web desde cualquier lugar en el mundo, siempre y cuando el ordenador está conectado a Internet. servicios Web utilizan un estándar, con el protocolo Hypertext Transfer Protocol (HTTP), para transmitir  datos y  formatos de datos portátiles que se basan en XML. HTTP y XML son a la vez tecnologías normalizadas que puedan ser utilizados por otros entornos de programación fuera de  Microsoft. NET Framework. Se pueden crear servicios Web utilizando Microsoft Visual Studio 2008. Las aplicaciones cliente se ejecutan en un entorno totalmente diferente, como Java, y también se puede crear servicios Web utilizando Java y escribir aplicaciones cliente en C #.

Con Visual Studio 2008, se puede crear servicios Web utilizando Microsoft Visual C + +, Microsoft Visual C # o Microsoft Visual Basic. Sin embargo, en cuanto a una aplicación de cliente se refiere, la lenguaje utilizado para crear el servicio Web, e incluso cómo el servicio Web realiza sus tareas, no es necesariamente importante. La opinión de la aplicación del cliente de un servicio Web es una interfaz que expone una número de métodos bien definida, conocido como métodos Web. Toda la aplicación cliente lo que necesita hacer es llamar a estos métodos Web utilizando los protocolos estándar de Internet, paso de parámetros en un formato XML y recibiendo también respuestas en un formato XML. Uno de los impulsores de las recientes liberaciones del sistema operativo Windows, el . NET Framework, y sus asociados las herramientas de desarrollo es el concepto de la programación " Web. "La idea es que usted puede construir sistemas mediante el uso de los datos y los servicios prestados por múltiples servicios Web. Los servicios web proporcionan los elementos básicos de los sistemas, la Web proporciona los medios para acceder a ellas.

¿En qué difiere ASP.NET y WCF ?

En el caso de los web services basados en ASP.NET , estos utilizan la clase de XmlSerializer , encargada de guardar o recuperar una representación Xml de un objeto, y de esta forma transformar los datos desde o hacia un servicio.

Sin embargo, este tiene algunas limitaciones como:

  • El XmlSerializer sólo tendrá en cuenta las variables y propiedades públicas de la clase.
  • El objeto debe ser de una clase que tenga un constructor por defecto (sin parámetros)
  • Las clases que implementan el interface IDictionary, como por ejemplo el HashTable, no se pueden serializar. Para ello hay que crear una que no implemente el interface.

En el caso de WCF usa los atributos DataContractAttribute y DataMemeberAttribute para transformar los datos a XML.

[DataContract]
public class Item
{
    [DataMember]
    public string ItemID;
    [DataMember]
    public decimal ItemQuantity;
    [DataMember]
    public decimal ItemPrice;

}

En cuanto a  su programación, en ASP.NET se utiliza el atributo WebService para definir a la clase del servicio, y el atributo WebMethod, para definir a cualquier método de la clase, como se muestra a continuación:

Ejemplo:

[WebService]
public class Service : System.Web.Services.WebService
{
    [WebMethod]
    public string Test(string strMsg)
    {
       return strMsg;
    }
}

En el caso de WFC,  el servicio se codifica de la siguiente manera:

[ServiceContract]
public interface ITest
{
    [OperationContract]
    string ShowMessage(string strMsg);
}
public class Service : ITest
{
    public string ShowMessage(string strMsg)
    {
        return strMsg;
    }
}

El atributo ServiceContract  especifica que una interface define el Servicio WCF y el atributo OperationContract  indica cual de los metodos de la interface define las operaciones del servicio de tipo Contract, en este caso, la interface.

Esta son algunas de las diferencias que podemos encontrar entre usar WCF y ASP.NET para la creación de un Web Service. Les comento que una de las características fundamentales de WCF es la robustez en cuanto a la seguridad del servicio, en donde el mismo framework en WCF ofrece las herramientas necesarias para la seguridad del servicio.