Web Service C#, Cliente JAVA

Servicio en C#  y Cliente Java

Siguiendo con los web service, se realizara un service web de forma inversa anteriormente el servicio fue realizado en Java y se consumió desde C#, en esta ocasión se lo realizara de forma inversa el servicio se realizara en C# y se lo consumirá desde Java.

Para realizar este proyecto se requiere:
  • Visual Studio 
  •  Netbeans.
El ejemplo que se va a realizar es el mismo de las Operaciones con Fracciones, esta aplicación esta realizada con objetos y una interfaz amigable para el usuario comencemos.

Servicio en C#

Para crear un servicio web en C#, debemos crear un proyecto nuevo en Visual Studio. Nos dirigimos a Archivo y seleccionamos la opción de Sitio web

Para este proyecto seleccionaremos la que dice Sitio web vacío de ASP.NET,  y le pondremos un nombre en la parte de abajo

Para que este proyecto se convierta en un servicio web debemos agregar un elemento de tipo Servicio web (ASMX), para lo cual daremos clic derecho en el icono del ServicioNet1, y luego nos dirigimos a la opción de agregar y seleccionamos la opción Agregar nuevo elemento


Seleccionamos el elemento Servicio web (ASMX), y le agregaremos un nombre a nuestro servicio en mi caso le pondré MiServicios con la exención asmx

Ya tenemos el espacio de trabajo para programar nuestra aplicación

Para que se convierta en un servicio web nuestros métodos deben iniciar con la palabra.

  [WebMethod]/////////////////Palabra que convierte el método en servicio web

    public string HelloWorld()/////////////////Método por defecto del Servicio web
    {
        return "Hola a todos";

    }

Una vez que ya tenemos la parte lógica de nuestro programa con todos los metodos de las Operaciones con fracciones 

Clase Fracción
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Descripción breve de Fraccion
/// </summary>
/// 
public class Fraccion
{
     private int numerador;
     private int denominador;

    public int Numerador
    {
        get
        {
            return numerador;
        }

        set
        {
            numerador = value;
        }
    }

    public int Denominador
    {
        get
        {
            return denominador;
        }

        set
        {
            denominador = value;
        }
    }

    public Fraccion()
    {
        numerador = 1;
        denominador = 1;
    }

    public Fraccion(int numerador, int denominador)
    {
        this.numerador = numerador;
        this.denominador = denominador;
    }
    public Fraccion sumaFraccion(Fraccion a, Fraccion b)
    {
        int num = a.numerador * b.denominador + b.numerador * a.denominador;
        int den=a.denominador*b.denominador;
        Fraccion sim = new Fraccion(num, den);
        sim.simplificar();
        Fraccion resp = new Fraccion(sim.numerador, sim.denominador);
        return resp;

}

    public Fraccion restaFraccion(Fraccion a, Fraccion b)
    {
        int num = a.numerador * b.denominador - b.numerador * a.denominador;
        int den = a.denominador * b.denominador;
        Fraccion sim = new Fraccion(num, den);
        sim.simplificar();
        Fraccion resp = new Fraccion(sim.numerador, sim.denominador);
        return resp;

    }


    public Fraccion productoFraccion(Fraccion a, Fraccion b)
    {
        int num = a.numerador * b.numerador;
        int den = a.denominador * b.denominador;
        Fraccion sim = new Fraccion(num, den);
        sim.simplificar();
        Fraccion resp = new Fraccion(sim.numerador, sim.denominador);
        return resp;

    }

    public Fraccion divicionFraccion(Fraccion a, Fraccion b)
    {
        int num = a.numerador * b.denominador;
        int den = a.denominador * b.numerador;
        Fraccion sim = new Fraccion(num, den);
        sim.simplificar();
        Fraccion resp = new Fraccion(sim.numerador, sim.denominador);
        return resp;

    }

    private int mcd()
    {
        int u = Math.Abs(numerador);
        int v = Math.Abs(denominador);
        if (v == 0)
        {
            return u;
        }
        int r;
        while (v != 0)
        {
            r = u % v;
            u = v;
            v = r;
        }
        return u;
    }
    public Fraccion simplificar()
    {
        int dividir = mcd();
        numerador /= dividir;
        denominador /= dividir;
        return this;
    }
    public override string ToString()
    {
        return numerador + "/ " + denominador;
    }



}

Servicio Web
Mi Servicio
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;


/// <summary>
/// Descripción breve de MiServicios
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
// [System.Web.Script.Services.ScriptService]
public class MiServicios : System.Web.Services.WebService
{

    public MiServicios()
    {

        //Elimine la marca de comentario de la línea siguiente si utiliza los componentes diseñados 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld()
    {
        return "Hola a todos";
    }


    [WebMethod]
    public int factorial(int numero)
    {
        int fact = 1;
        for (int i = 2; i <= numero; i++)
        {
            fact = fact * i;
        }
        return fact;
    }
    [WebMethod]
    public Fraccion Suma(Fraccion fra1, Fraccion fra2)
    {
        Fraccion nueva = new Fraccion();
       /* nueva.sumaFraccion(fra1, fra2)*/;
        return nueva.sumaFraccion(fra1,fra2);
    }
    [WebMethod]
    public Fraccion Resta(Fraccion fra1, Fraccion fra2)
    {
        Fraccion nueva = new Fraccion();
        /* nueva.sumaFraccion(fra1, fra2)*/
        ;
        return nueva.restaFraccion(fra1, fra2);
    }
    [WebMethod]
    public Fraccion Multiplicacion(Fraccion fra1, Fraccion fra2)
    {
        Fraccion nueva = new Fraccion();
        /* nueva.sumaFraccion(fra1, fra2)*/
        ;
        return nueva.productoFraccion(fra1, fra2);
    }
    [WebMethod]
    public Fraccion Divicion(Fraccion fra1, Fraccion fra2)
    {
        Fraccion nueva = new Fraccion();
        /* nueva.sumaFraccion(fra1, fra2)*/
        ;
        return nueva.divicionFraccion(fra1, fra2);
    }

}


Ejecutamos el servicio seleccionando la clase MiServicios.cs  el cual corresponde al servicio web que contiene los métodos con las operaciones que realizara nuestra aplicación, para ejecutar damos clic en la opción del icono de play,  seleccionando nuestro navegador preferido. 


Se mostrara una pagina en el navegador con los métodos de nuestro servicio web, tal como se muestra en la imagen


Ya tenemos nuestro servicio web corriendo desde C#, este servicio ya puede ser consumido desde otra plataforma en este tutorial se lo consumirá desde JAVA, siguiendo con estos pasos

Consumir desde Java

Creamos un nuevo proyecto en Java, esta sera de tipo aplicación de escritorio, este proyecto se llamara clienFraccion

Nos dirigimos a la pagina de nuestro servicio web  y copiamos el WSDL que se genero, solo el Link  de la pagina


En nuestro proyecto java damos clic derecho sobre el proyecto, nuevo y seleccionamos la opción Web Service Client

En la ventana que se muestra marcamos la opción WSDL URL  y pegamos el Link que copiamos en el paso anterior, este hace referencia al WSDL

El proyecto nos queda con los paquetes que ase referencia al servicio web, ademas nos da acceso a los métodos para trabajar con ellos

Para el funcionamiento de nuestra aplicación crearemos un Formulario, el cual servirá para el uso de modo visual ante cualquier usuario

En el botón calcular llamaremos a los métodos que se encuentran en nuestro servicio web


























Por ultimo ejecutamos nuestra aplicación y como vemos funciona , así es como se crea un servicio web en C# y se consume desde Java

Comentarios

Entradas populares de este blog

Introducción a la metodología RAD

Sistema Clinico con PhpMaker

Lenguaje de Programación Avanzada