none
Usar cliente un cliente Oracle instalado en equipo servidor RRS feed

  • Pregunta

  • Hola,

    Requiero instalar un cliente Oracle en un equipo servidor, al cual se conecten multiples equipos mediante un formulario de Windows Forms, he estado investigando y aparece WCF y Sockets para la funcionalidad que necesito, el caso es que no se como implementarlo.

    El funcionamiento seria como lo indiqué al principio multiples clientes conectados a este equipo servidor usando el cliente Oracle de este.

    Les agradezco mucho su ayuda!


    Jessyd Correal

    lunes, 15 de febrero de 2016 17:42

Todas las respuestas

  • hola

    >>al cual se conecten multiples equipos mediante un formulario de Windows Forms

    en ese servidor tienes la db Oracle ?

    porque el cliente se instala desde donde te conectas a la db, si la aplicacion es winform y esta se conecta a la db entonces el cliente oracle debes instalarlo en la pc donde ejecutas la aplicaicon winforms

    Ahora si la aplicacion winform se conecta al servidor mediante web service, quizas con WCF, en ese caso el cliente lo instalas en el servidor web, y no en los cliente (porque estos no se conectan directo a la db, sino que lo hacen al web service)

    >>El funcionamiento seria como lo indiqué al principio multiples clientes conectados a este equipo servidor usando el cliente Oracle de este.

    el cliente Oracle se instala en cada pc que se conecte a Oracle

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 15 de febrero de 2016 18:55
  • Hola Leandro gracias por tu respuesta

    No, seria un equipo intermedio el cual tenga el cliente oracle y conexion con la db y a este equipo "puente" se conecten multiples equipos "cliente" y utillicen su cliente Oracle para hacer transacciones a traves de un win form. Esto para no tener la necesidad de instalar el cliente oracle en cada pc.


    Jessyd Correal

    lunes, 15 de febrero de 2016 19:06
  • Hola por favor me pueden dar una idea de como hacer que en un equipo servidor instale un cliente oracle y que a este servidor se conecten multiples equipos y utilicen el cliente Oracle instalado en este equipo servidor.

    Gracias!


    Jessyd Correal

    lunes, 15 de febrero de 2016 21:34
  • la verdad no soy experto en Oracle, pero en proyectos donde lo he usado el conceto de "equipo puente" no existe, quizas debas plantear el tema en algun foro de Oracle

    si desde las aplicaciones winform te conectas a la db oracle entonces el ODAC debes instalarlo en cada pc

    Ahora bien si implementas servicio web, entonces el ODAC solo se intala alli y los cliente consumen los web service, alli los lcientes no necesitan del ODAC porque no se conectan a Oracle sino que los datos son proporcionados por el servicio web

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 15 de febrero de 2016 22:00
  • Gracias Leandro

    Si eso es lo que requiero entonces necesito desarrollar un servicioWeb donde instale el ODAC y a este se conecten los clientes por medio de Windows Forms verdad?


    Jessyd Correal

    lunes, 15 de febrero de 2016 22:06
  • >>necesito desarrollar un servicioWeb donde instale el ODAC

    si los servicio web se conectaran a Oracle entonces va a necesitar ODAC instalado

    recuerda que los servicio los hosteas en el IIS

    >>a este se conecten los clientes por medio de Windows Forms verdad?

    exacto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 0:09
  • Gracias Leandro

    Entonces debo crear todos los metodos insertar, actualizar, eliminar en el web service, hosteo el sitio en el IIS y con WCF se comunicaria con el win form asi seria el esquema verdad?

    Te agradezco


    Jessyd Correal

    martes, 16 de febrero de 2016 12:41
  • >>debo crear todos los metodos insertar, actualizar, eliminar en el web service

    exacto

    >>hosteo el sitio en el IIS y con WCF se comunicaria con el win form asi seria el esquema verdad?

    asi es

    recuerda que el cliente tendra una "Service Reference" al servicio para usar los metodos que expone

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 14:33
  • Gracias por tu ayuda ahora ya he creado el Webservice WCF y he creado un metodo que me permite conectarme a la base de datos

    namespace WCF
    {
        // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Servicio" in code, svc and config file together.
        // NOTE: In order to launch WCF Test Client for testing this service, please select Servicio.svc or Servicio.svc.cs at the Solution Explorer and start debugging.
        public class Servicio : IServicio
        {
            public OracleConnection ObtenerConexion ()
            {
                string strCnn = System.Configuration.ConfigurationManager.ConnectionStrings["cnnOracle"].ToString();
                OracleConnection cnn = new OracleConnection(strCnn);
                return cnn;
            }
        }


    Ya lo he colocado en el IIS y funciona correcto, ahora cuando quiero agregar la referencia de servicio desde Win Form me aparece este error

    There was an error downloading 'http://172.29.253.26:4444/_vti_bin/ListData.svc/$metadata'.
    The request failed with HTTP status 404: Not Found.
    Metadata contains a reference that cannot be resolved: 'http://172.29.253.26:4444/'.
    The remote server returned an unexpected response: (405) Method Not Allowed.
    The remote server returned an error: (405) Method Not Allowed.
    If the service is defined in the current solution, try building the solution and adding the service reference again.

    Me pueden ayudar por favor


    Jessyd Correal

    martes, 16 de febrero de 2016 16:34
  • >>ahora cuando quiero agregar la referencia de servicio desde Win Form me aparece este error

    Un servicio de WCF no puede devolver un OracleConnection, tienes que devolver dartos simples, definir una clase, un List<> y eso devuelves

    deberias leer sobre los Data contracts

    Utilización de contratos de datos

    la conexion a Oracle la usas interna dentro del servicio, NUNCA envias ningun objeto de Oracle al cliente

    Nota: olvidate tambien de los dataset, envia objetos que tu definas como clases

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 17:05
  • Gracias por la explicación, entonces como hacer para que el cliente se conecte a la base de datos y haga transacciones usando este Web Service, por esa razon le estaba definiendo métodos así, para que el win form los obtuviera por referencia y los utilizara


    Jessyd Correal

    martes, 16 de febrero de 2016 17:29
  • >>entonces como hacer para que el cliente se conecte a la base de datos

    si usas servicio web el cliente NUNCA se conecta a la db

    >>haga transacciones usando este Web Service

    las tansacciones las defines dentro del mismo servicio, si este debe recibir varios objetos y realizar muchas operaciones entonces crear un webmethod que realice esta operacion compleja recibiendo todos los datos del cliente


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 17:41
  • Ya lo he implementado como dices y ya invoque un método desde la misma solución que inserta en una tabla y lo ha hecho bien, ahora que quiero agregar esta referencia de servicio al winform me sigue apareciendo el error

    Este es el WebMethod

    public class Servicio : IServicio
        {
            private OracleConnection ObtenerConexion ()
            {
                try
                {
                    string strCnn = System.Configuration.ConfigurationManager.ConnectionStrings["cnnOracle"].ToString();
                    OracleConnection cnn = new OracleConnection(strCnn);
                    return cnn;
                }
                catch (Exception)
                {
    
                    throw;
                }
                
            }
    
            private int EjecutarComando(string Query)
            {
                OracleConnection cnn = ObtenerConexion();
                OracleCommand cmd = new OracleCommand(Query, cnn);
                cnn.Open();
                int resultado = cmd.ExecuteNonQuery();
                cnn.Close();
                return resultado;
            }
    
            [WebMethod]
    
            public int InsertarCliente(string cedula, string nombre, string apellido, int profesion)
            {
                string Query = string.Format("INSERT INTO CLIENTES_WS VALUES ('{0}', '{1}', '{2}', {3})", cedula, nombre, apellido, profesion);
                return EjecutarComando(Query);
            }
    
        }

    There was an error downloading 'http://172.29.253.26:4444/_vti_bin/ListData.svc/$metadata'.
    The request failed with HTTP status 404: Not Found.
    Metadata contains a reference that cannot be resolved: 'http://172.29.253.26:4444/'.
    The remote server returned an unexpected response: (405) Method Not Allowed.
    The remote server returned an error: (405) Method Not Allowed.
    If the service is defined in the current solution, try building the solution and adding the service reference again.

    Esa URL es la que esta hosteada en el IIS


    Jessyd Correal

    martes, 16 de febrero de 2016 18:54
  • hola

    como estas invocando el servicio desde el cliente ? estas creando una "service reference"

    imagen

    si pones la url en el browser puedes visualizar la pagina por defecto del servicio ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 19:18
  • Hola leandro

    Si desde el cliente en "add reference" le coloco la URI con el que lo tengo hosteado en el IIS y me aparece ese error, en el ISS le tengo habilitado el examen de directorios y me aparecen las carpetas del proyecto


    Jessyd Correal

    martes, 16 de febrero de 2016 21:51