domingo, 30 de diciembre de 2012

Ejemplo de Cliente Web Service


Buenas, este post es la continuación de una entrada anterior aunque tampoco es importante ya que este ejemplo se puede aplicar de forma generar para consumir los servicios de otro web service.

Si queremos asociar nuestro anterior web service deberás instalar IIS desde el panel de control y en Visual Studio 2010 ir a la pantalla principal y en “Generar” hacer clic en “Publicar sitio web”.




Se nos abrirá una nueva ventana donde nos permitirá elegir la ubicación pulsamos sobre examinar.
En esta nueva ventana nos vamos a IIS local y lo asociamos hay.




Importante si al acceder a vuestro web service o aparece el siguiente error  “Hay definida una sección 'system.web.extensions/scripting/scriptResourceHandler' duplicada”.

Es porque tenéis configurado vuestro IIS para que trabaje con el frameword 4.0 tenéis que cambiarlo al 2.0 para ello tendréis que ir al panel del IIS y hacer clic en “Grupo de aplicaciones” y modificar la versión del frameword.





Otro problema que os puede aparecer es que no tengas permisos para acceder a la ruta para ello deberéis ir a IIS y en configuración básico ingresar un usuario que posea permisos de administrador.

 Una vez tengamos configurado nuestro web service que vamos a utilizar lo primero será crear el nuevo proyecto que es mi caso solo constara de un simple formulario que servirá para verificar si una persona es residente o no.




Ahora agregaremos la referencia al servicio web para ello vamos  al “Explorador de soluciones” y “References” agregamos referencia de servicio.





Introducimos la ruta de nuestro web service en mi caso esta.





Después pulsamos sobre “Avanzadas...” y dentro de la nueva ventana en “Agregar referencia Web”.




Y agregamos la referencia.



Así quedaría nuestro código

using ClienteWebService.MyWebService;

namespace ClienteWebService
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bool existe = false;
            Service webService = new Service();

            existe = webService.EsResidente(txtDNI.Text);

            if (existe)
            {
                pictureBox1.Image = Image.FromFile
                                    (System.Environment.GetFolderPath
                                    (System.Environment.SpecialFolder.Personal)+ @"\OK.png");
            }
            else
            {
                pictureBox1.Image = Image.FromFile
                    (System.Environment.GetFolderPath
                    (System.Environment.SpecialFolder.Personal) + @"\cancel.png");
            }

        }
    }
}


Bueno como veis es bastante simple llamamos la método “EsResidente” de nuestro web service y este nos devuelve si o no. Y caso de que sea correcto dibuja uno o otra imagen en el formulario.











sábado, 29 de diciembre de 2012

Creación Web Service en VS2010


Bueno esto es una guía rápida de cómo crear un web Service en VS2010 se sobre entiende que se conoce los conceptos de que es un web servicies si no deberéis buscar información antes sobre el concepto de Web Service.

Como ejemplo y deforma generar realizaremos un web service poniéndonos en papel de que somos un ayuntamiento local y vamos a ofrecer un servicio para que se pueda comprobar si un ciudadano es residente o no.

Lo primero es abrir nuestro Visual Studio 2010 e irnos a “Archivo”, “Nuevo”. Y dentro de nuevo e irnos a “Sitio web...”.



Una vez abierto la nueva ventana deberemos cambiar frameword de .NET al 3.5 y posteriormente seleccionar “Servicio Web ASP.NET”




Vale ahora se nos abrirá una ventana como esta que contiene el esqueleto del web service. Fijamos donde pone “[WebMethod]” como podréis intuir que es ahí donde se definirán los servicios que ofrecerá nuestro web service.




Bien como decía al principio nuestro web service nos va mostrar si un ciudadano es o no es residente. Para ello tendremos que crear una pequeña base de datos de ejemplo.

Para ello vamos a la pantalla principal. “Ver” en “Explorador de servidores”. 





Después nos vamos a la ventana de “Explorador de servidores” y pulsamos botón secundario sobre “Conexiones de bases de datos” y agregamos una nueva conexión.





En la nueva ventana seleccionaremos en “Origen de datos” el tipo de bases de datos que queramos usar en mi caso la me voy a traer los datos de Oracle. Así quedaría mi tabla.


Y algunos datos de ejemplo.



El código de mi web service me quedaría así.

    [WebMethod]
    public Boolean EsResidente(string DNI) {


        // Consulta
        String sql = "SELECT COUNT(*) FROM RESIDENTES WHERE  DNI = '" + DNI + "'";

        // Conexion con la BD
        OracleConnection conn = new OracleConnection("Data Source=XE;
                                                      UserID=david;
                                                      Password=1234;"
                                                     );

        // Abrimos conexión
        conn.Open();

        OracleCommand cmd = new OracleCommand(sql, conn);
        cmd.CommandType = System.Data.CommandType.Text;

        OracleDataReader lector = cmd.ExecuteReader();

        if (lector.GetDecimal(0) != 0)
        {
            conn.Close();
            return true;
        }

        conn.Close();
        return false;
   }



Ahora para probarlo pulsamos el botón depurar y se nos abrirá la ventana del navegador web que tengas por defecto mostrando nuestro web service.



Pulsamos sobre nuestro método “EsResidente” y  introducimos un valido DNI.




Y nuestro web services nos devuelve un dato de tipo booleano con el valor  “True” y por lo tanto significa que es residente. 




Ahora que ya tenemos creado el web services se podría crear una aplicación cliente para llamar a nuestro web service. Esto se realizara en el siguiente post.






martes, 25 de diciembre de 2012

Procedimiento _Atomic_fetch_sub_4_Atomic_fetch_sub_4


Bueno si, estas aquí es porque tienes problema al iniciar Visual Studio 2012 RC. Si el mensaje que te muestra al iniciar la aplicación es el siguiente:

No se encuentra el punto de entrada del procedimiento _Atomic_fetch_sub_4 en la biblioteca de vínculos dinámicos C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe."”

 La solución es aplicar un parche de Microsoft que se encuentra aquí