Crear un Web Service con Monodevelop

Antes de explicaros el ejemplo, explicaré ¿Que es es un Web Service?

Un Web Service es un componente de software que utiliza un conjunto de protocolos y estándares para permitir el intercambio de datos entre aplicaciones.

La comunicación se realiza mediante métodos que al ser invocados por otros sistemas vía una URL devuelven información usando protocolos estándares como HTTP, XML, SOAP, WSDL, UDDI, WS-Security

Este documento de información devuelto por el Web Service puede ser procesado por cualquier aplicación o sistema en cualquier sistema operativo con cualquier lenguaje de programación que tenga las capacidades de procesarlo.

Como inconveniente se encuentra su rendimiento "bajo" si se compara con otros modelos de computación distribuida, tales como RMI (Remote Method Invocation), CORBA o DCOM (Distributed Component Object Model). Es el inconveniente "a pagar" por adoptar un formato basado en texto (XML).

A nivel de programación un Web Service es una clase que generalmente heredada de System.Web.Services.WebService y que contiene métodos que se publicaran en una página .asmx que es la extensión predeterminada de las páginas donde se ejecutan los Web Service.

Los Web Service, como he explicado en la introducción están pensados para ser utilizados por aplicaciones, por lo que no requieren una interfaz gráfica. Aunque para probar su ejecución de forma local Monodevelop provee una plantilla.

Bueno y después de esta explicación vamos al ejemplo.


Lo primero será instalar Monodevelop. Y además se requiere tener el servidor de pruebas, para ello:
$ sudo apt-get intall mono-xsp2
Para crear el Web Service, abre MonoDevelop, para ello ve a Aplicaciones -> Programación -> MonoDevelop.


Ahora pulsamos sobre "Iniciar nueva solución". Elegimos "Aplicación web" e indicamos el título "WebService"


Una vez creada la estructura de la aplicación Web, deberemos añadir el archivo de los Web Service, para ello encima del proyecto "WebService", hacemos click con el botón derecho y vamos a Añadir -> Nuevo archivo...


y seleccionamos ASP.NET -> Servicio web con CodeBehind y le asignamos el nombre del Web Service, en nuestro caso “WebService”.


Las páginas ASP .NET (aspx) y los páginas de los Web Service (asmx) pueden programarse como Server Side Scripting que es una mezcla de etiquetas aspx con código C# dentro de una misma página con extensión .asmx. Es más recomendable utilizar Code Behind ya que permite separar el funcionamiento o sea la lógica de programación en un archivo de clase C# y la presentación en la página .asmx, a la cual se asociada el archivo de clase C#.

En el archivo de clase que se crea contiene la estructura mínima necesaria para tener la clase como Web Service. A la que deberemos añadir los métodos.


En el ejemplo he creado un método que devuelve la suma de dos enteros. Observa que el método lleva el atributo [WebMethod()] antes de su declaración, es obligatorio. Además he añadido la propiedad Description, que se mostrará en el método cuando se publique.
La propiedad tiene otros atributos:
  • BufferResponse, true o false para indicar o no si la respuesta del Web Service es serializado en un buffer de memoria hasta ser completada o hasta que el buffer este lleno.
  • CacheDuration, establece el número de segundos que la respuesta estará contenida en el cache.
  • EnableSession, false o true para el soporte de sesiones.
  • MessageName, identifica mediante un alias los métodos sobrecargados. 
  • TransactionOption, habilita al método para participar o no en una transacción, si ocurre una excepción en el método la transacción es abortada.
Para terminar y antes de ejecutar el proyecto deberemos editar el fichero Default.aspx para que enlace con nuestro Web Service.

Ahora ya podemos ejecutar el proyecto tecleando F5 y si instalamos bien el servidor de pruebas, se abrirá el navegador web y mostrará una página en donde sólo aparecerá un enlace que dice WebService.



Al hacer doble click en el enlace, aparecerá la plantilla que genera Monodevelop de pruebas. Para probar el método haz click en el enlace correspondiente, para que se muestren las opciones del método enlaces en la parte superior y como overview nos muestra sus parámetros y el tipo de dato que devuelve.



Si quieren ver el código fuente completo, aquí les dejo el código.

3 comentarios:

  1. ¡Excelente post! Muy bien explicado y documentado.
    Espero que sigas publicando tema de desarrollo como Mono ya que también sirven para Mac.
    Saludos

    ResponderEliminar
  2. hola, soy estudiante de programacion, y tratamos el tema de los webservice en .NET, pero soy fiel usuario de linux, asi que para el proyecto final pense que podria crear un cliente para mi web service (hecho con Visual Studio 2010) en linux, con el uso de monodevelop, pero me hace falta experiencia en el campo, tienes algun tutorial de consumo web service con monodevelop que pudieras compartir estaré muy agradecido.
    mi correo: rolando.ja.venecia@gmail.com

    ResponderEliminar
  3. hola, soy estudiante de programacion, y tratamos el tema de los webservice en .NET, pero soy fiel usuario de linux, asi que para el proyecto final pense que podria crear un cliente para mi web service (hecho con Visual Studio 2010) en linux, con el uso de monodevelop, pero me hace falta experiencia en el campo, tienes algun tutorial de consumo web service con monodevelop que pudieras compartir estaré muy agradecido

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.