Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Integración PHP / Java a través de Webservices (POO) (http://www.forosdelweb.com/f68/integracion-php-java-traves-webservices-poo-471750/)

enriqueplace 10/03/2007 09:22

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?

GatorV 10/03/2007 13:22

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.

lcervantes 12/03/2007 05:12

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

enriqueplace 12/03/2007 13:46

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?

GatorV 12/03/2007 16:52

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

enriqueplace 12/03/2007 20:44

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:

http://www.surforce.com/java2php.gif

zsamer 12/03/2007 21:13

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.

Panino5001 13/03/2007 07:04

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.

chcma 13/03/2007 08:27

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.

enriqueplace 13/03/2007 09:04

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? ;-)

GatorV 13/03/2007 09:54

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.

enriqueplace 13/03/2007 10:00

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? ;-)

GatorV 13/03/2007 11:48

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.

Panino5001 13/03/2007 17:02

Re: Integración PHP / Java a través de Webservices (POO)
 
Muy interesante. Ojalá puedas seguir compartiendo así aprendemos todos.


La zona horaria es GMT -6. Ahora son las 08:53.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.