Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 10-mar-2007, 08:22   #1 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 750
Enviar un mensaje por Skype™ a enriqueplace
Integración PHP / Java a través de Webservices (POO)

Estoy investigando esta área y quisiera conocer experiencias o alguna sugerencia sobre materiales o artículos al respecto (este tema también lo pregunto en el área de Java y está a su vez relacionado con POO).

La idea es construir un sitio web basado en PHP y a través de webservices (soap) acceder a la "capa de dominio" desarrollada enteramente en Java.

He realizado algunas pruebas sencillas y han funcionado sin problemas, accediendo a un webservices implementados en Java al estilo:

Código PHP:
$client = new SoapClient("http://sitio.com/Calculator.wsdl");

echo 
$client->hola("hola mundo"); 
Lo único que hace es devolver "tu has dicho 'hola mundo'", pero se empieza a complicar cuando quiero pasar valores tipados como fechas, pues Java espera algo del tipo "Date".

Pero tengo las siguientes dudas (no tengo experiencia en el tema):
  • ¿Cual es la forma para trabajar con los tipos de datos de ambos mundos? PHP es tipado dinámico y no 100% OO, lo opuesto a Java
  • ¿Se puede implementar un acceso transparente a las clases disponibles en Java? puedo pasar objetos de un lado a otro, o debo usar alguna otra estrategia para poder hacerlo así?

Tal vez debe manejar todo como String y rearmarlos del lado de Java.

¿Sugerencias, experiencias?
__________________
Saludos, Enrique Place

Reserva tu lugar, no te lo pierdas:
Nuevo Taller a Distancia de POO para PHP (2008)
enriqueplace está desconectado   Responder Citando
Antiguo 10-mar-2007, 12:22   #2 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Integración PHP / Java a través de Webservices (POO)

La idea a mi parecer de un WebService es la capacidad de hacer procesos transparentes, que no dependan de un lenguaje en especifico (por eso lo mas comun es enviar requests XML (o sea un string)).

Entonces lo que se debe hacer es enviar un XML desde PHP con el request bien puesto, y desde Java interpretarlo y extraer las partes que necesitas, y devolver el resultado.
GatorV está desconectado   Responder Citando
Antiguo 12-mar-2007, 05:12   #3 (permalink)
lcervantes está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 62
De acuerdo Re: Integración PHP / Java a través de Webservices (POO)

Interesante este hilo.

No tengo experiencia en el tema, pero por lo que he visto, java la utilizan para la parte de acceso a la Base de Datos devolviendo XML, y php en la parte de implementación, visualización. Recogiendo estos datos del xml generado y enseñando la pagina.

Otra cosa que igual se tendria que considerar es que interesaría que los datos devueltos estuvieran en la misma codificación. UTF-8 creo que es la mas adecuada. Aveidentemente depende de como tengas metidos los datos en la Base de Datos.

Saludos
lcervantes está desconectado   Responder Citando
Antiguo 12-mar-2007, 13:46   #4 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 750
Enviar un mensaje por Skype™ a enriqueplace
Re: Integración PHP / Java a través de Webservices (POO)

Ambos tienen razón, voy a explicar un poco mejor ahora que tengo más información y voy entendiendo mejor el problema.

Por donde viene mi confusión:

Tengo el concepto sobre WS y así lo he usado las veces que lo he necesitado: trabajar en bruto con datos entregados como "cadena de texto", en la mayoría de los casos en formato "xml".

La situación que me plantea mi contraparte (experta en Java, ignorante en PHP) es que de su lado trabaja con DTOs (Data Transfer Object) y me argumenta que yo debería poder recibir y hasta enviar DTOs de un lado a otro (yo, conocedor de PHP, no experto ni en WS ni en Java ).

Aquí es donde me pierdo, y no sé si es posible, y de que forma. He buscando información pero sin éxito.

¿Alguien que me prenda una vela?
__________________
Saludos, Enrique Place

Reserva tu lugar, no te lo pierdas:
Nuevo Taller a Distancia de POO para PHP (2008)
enriqueplace está desconectado   Responder Citando
Antiguo 12-mar-2007, 16:52   #5 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Integración PHP / Java a través de Webservices (POO)

Pues yo creo estaria interesante ubicar un poco del tema de los DTOs y hacer una implementacion en PHP, aunque yo repito, XML fue desarrollado para esto, solo que luego a los programadores nos da "flojera" estar construyendo y parseando los XMLs
GatorV está desconectado   Responder Citando
Antiguo 12-mar-2007, 20:44   #6 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 750
Enviar un mensaje por Skype™ a enriqueplace
Re: Integración PHP / Java a través de Webservices (POO)

Si, esa es la sensación que tuve desde el principio, pero como todo tema que uno no domina, por lo menos dejo el "beneficio de la duda"

Este vendría a ser el diagrama con la arquitectura que me plantean:

__________________
Saludos, Enrique Place

Reserva tu lugar, no te lo pierdas:
Nuevo Taller a Distancia de POO para PHP (2008)
enriqueplace está desconectado   Responder Citando
Antiguo 12-mar-2007, 21:13   #7 (permalink)
zsamer tiene algunos puntos positivos de karma
 
Fecha de Ingreso: noviembre-2003
Mensajes: 786
Re: Integración PHP / Java a través de Webservices (POO)

hola, no sé si sirve para el caso, encontré este hilo buscando patrones en php Transfer Object

saludos.
zsamer está desconectado   Responder Citando
Antiguo 13-mar-2007, 07:04   #8 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: Integración PHP / Java a través de Webservices (POO)

También podría usarse JSON para el intercambio, que tiene soporte tanto en java como en PHP.
Panino5001 esta en línea ahora   Responder Citando
Antiguo 13-mar-2007, 08:27   #9 (permalink)
chcma está en el buen camino
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 1.870
Re: Integración PHP / Java a través de Webservices (POO)

Todo esto es un mundo... también tenemos .NET que puede devolverte objetos de tipo DataTable...

Si desde PHP5, llamamos a un Método de un WS que nos devuelve un objeto DataTable, con los datos... ¿Como podríamos tratarlo?

Si alguien sabe la respuesta, le agradecería que me contara, yo solo pongo el problema sobre la mesa, por que no tengo ni idea.
__________________
Charlie.
chcma está desconectado   Responder Citando
Antiguo 13-mar-2007, 09:04   #10 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 750
Enviar un mensaje por Skype™ a enriqueplace
Re: Integración PHP / Java a través de Webservices (POO)

Les comparto nuestros avances y pruebas:

Código PHP:
<?php

class Cliente{
    public 
$nombre;
    public 
$direccion;
    function 
__construct($n,$d){
        
$this->nombre $n
        
$this->direccion $d
    }
}
$clientSoap = new SoapClient("http://sitio.com:8080/WSFinancialFacade?wsdl ");

$unCliente = new Cliente("enrique""parque posadas");

$unObjetoRetornado $clientSoap->hola$unCliente ) ;

var_dump($unObjetoRetornado);

echo 
"Retorno: ".$unObjetoRetornado->nombre;

?>
Resultado

Código PHP:
object(stdClass)#4 (2) { 
   
["nombre"]=>  string(20
   [
"direccion"]=>  string(20
}

RetornoMi nombre es "enrique" 
Otras pruebas

Código PHP:
var_dump($clientSoap->__getFunctions()); 
Retorna

Código PHP:
array(1) { 
   [
0]=>  string(27"Cliente hola(Cliente $c)" 

Ejecuto

Código PHP:
var_dump($clientSoap->__getTypes()); 
Retorna

Código PHP:
array(1) { 
   [
0]=> string(53"struct Cliente { string nombre; string direccion; }" 

Resumiendo

Se logra a través del wsdl armar algo de lo que está del lado del servidor, pero dinámicamente. Según me comenta mi colega en java tiene la opción de hacer wsdl2java (o algo similar) y generar estáticamente la estructura del lado del cliente (como un cabezal), así, si quiere usarla sabe como hacerlo sin tener que solicitar información extra. En el caso opuesto (php), estaríamos armando siempre dinámicamente la estructura pero de forma incompleta (mucho menos información).

Los DTOs sería en este caso la clase Cliente que viaja por el WS.

¿No estamos tan lejos ni tan mal, no?
__________________
Saludos, Enrique Place

Reserva tu lugar, no te lo pierdas:
Nuevo Taller a Distancia de POO para PHP (2008)
enriqueplace está desconectado   Responder Citando
Antiguo 13-mar-2007, 09:54   #11 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Integración PHP / Java a través de Webservices (POO)

Muy interesante todo lo que propones Enrique, y nos sirve para abstraer aun mas y dar mas seguridad a todo el sistema al limitar el acceso fisico a los datos a travez de otra capa de seguridad.
GatorV está desconectado   Responder Citando
Antiguo 13-mar-2007, 10:00   #12 (permalink)
Colaborador
enriqueplace tiene algunos puntos positivos de karma
 
Avatar de enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 750
Enviar un mensaje por Skype™ a enriqueplace
Re: Integración PHP / Java a través de Webservices (POO)

Como dice la frase: "lo lograron porque no sabían que era imposible"

La verdad que es todo un mundo nuevo y recién estoy tratando de digerir los conceptos, pero yo también pesaba que WS era sinónimo de XML y parseo.

¿Y ahora, cómo se hace para realizar una conexión segura de un WS?
__________________
Saludos, Enrique Place

Reserva tu lugar, no te lo pierdas:
Nuevo Taller a Distancia de POO para PHP (2008)
enriqueplace está desconectado   Responder Citando
Antiguo 13-mar-2007, 11:48   #13 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 13.916
Re: Integración PHP / Java a través de Webservices (POO)

Yo creo que el SoapClient es capaz de usar SSL si usas https para abrir la conexion, pero no estoy seguro abra como dices, mirar la documentacion del SoapClient.
GatorV está desconectado   Responder Citando
Antiguo 13-mar-2007, 17:02   #14 (permalink)
Colaborador
Panino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy prontoPanino5001 llegará a ser famoso muy pronto
 
Avatar de Panino5001
 
Fecha de Ingreso: mayo-2004
Ubicación: Buenos Aires
Mensajes: 1.677
Re: Integración PHP / Java a través de Webservices (POO)

Muy interesante. Ojalá puedas seguir compartiendo así aprendemos todos.
Panino5001 esta en línea ahora   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 05:01.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93