MVC y Web Services

270 views
Skip to first unread message

Jorge Infante Osorio

unread,
Nov 13, 2007, 12:34:46 PM11/13/07
to kum...@googlegroups.com
Hola amigos.
 
Como puedo dentro de la estructura de una aplicacion que usa el patron MVC, incluir el uso de Web Services, donde los pongo, dentro o fuera de la misma, en cual de los elementos sería mejor, en la vista, en el controlador, o en el modelo? la interfaz WSDL donde estaría.....como ven son muchas dudas asi que si alguien me puede aclarar algunas estaría super complacido.
 
Saludos.

Rafael Rodríguez Puente

unread,
Nov 14, 2007, 12:04:27 PM11/14/07
to kum...@googlegroups.com
Yo estoy haciendo algo de eso, en mi opinión, según el modelo MVC,
debes crear un controlador para los WS, este controlador no tendría
ninguna vista asociada, ya que no se utiliza para mostrar información,
y lo mas probable es que no tenga modelo, sino que utilice otros
modelos para buscar los resultados que tiene que devolver.

En pocas palabras, encapsular el WS en un controlador, que no tiene
vista ni modelo, para esto te aconsejo que utilices la versión 0.4.x,
porque la 0.5 tiene problemas para retornar el valor, sólo funciona
bien si devuelves una vista.

--
Lic. Rafael Rodríguez Puente

Jorge Infante Osorio

unread,
Nov 14, 2007, 12:42:19 PM11/14/07
to kum...@googlegroups.com
Si eso lo entiendo, crear un Web Service involucra crear una clase o un conjunto de ellas, que bien pueden estar en los modelos, pero y la interface WSDL, donde la pongo?.
 
Alguien tiene implementado algo como esto?
 
Saludos.
 

 
El día 14/11/07, Rafael Rodríguez Puente <raf...@gmail.com> escribió:



--
Jorge Infante Osorio.
Ingeniero Informático.
CUBA

Rafael Rodríguez Puente

unread,
Nov 15, 2007, 9:12:48 AM11/15/07
to kum...@googlegroups.com
No necesitas un WSDL para hacer un WS en php, aqui va un ejemplo:

<?php
$server = new SoapServer(null, array('uri' => "http://10.7.25.1/04/ws/"));
$server->setClass("WSController");
$server->handle();

class WSController extends ApplicationController{
public function index(){ }
function autenticar($login,$password){
$this->auth = new Auth('class: Usuarios',"login:
$login","password: $password");
if ($this->auth->authenticate()) {
$identity = $this->auth->get_identity();
return array('id'=>$identity['id'],'nombre'=>$identity['nombre']);
}
return 0;
}
}
?>


y ya puedes consumirlo, ej:


$x = new SoapClient(NULL,array('location'=>'http://10.7.25.1/04/ws/',

'uri'=>'http://10.7.25.1/04/ws',"trace"=>1, "exceptions"=>0));


$a = $x->__soapCall("autenticar", array('pepe', sha1('pepe')));
ó
$a = $x->autenticar('pepe',sha1('pepe'));

Deivinson Tejeda

unread,
Nov 14, 2007, 3:48:39 PM11/14/07
to kum...@googlegroups.com
Yo haria el WS sin que sea un controller simplemente una class normal y que sea instancia cuando se necesite...
--
Atte...

Deivinson Tejeda
http://deivinsontejeda.wordpress.com/

Una sociedad libre es aquella que garantiza que sus recursos más importantes permanecen libre
Free Software, Free Society

Jorge Infante Osorio

unread,
Nov 16, 2007, 10:41:12 AM11/16/07
to kum...@googlegroups.com
ahí esta el inconveniente, primero que estoy metiendo logica de negocio en el controlador, damasiada logica creo yo, y el otro es que si estoy programando para aplicaciones de integracion y necesito tener expuesto de manera publica mi WS, necesito irremediablemente una interfaz para el mismo de tipo WSDL..
 
me gustaria saber para los duchos en MVC, si esto de tanta logica en el controlador es una buena practica o no, hasta el momento es la solucion que tambien veo, pero no se si esté bien aplicada....
 
Lo otro es que si tengo que exponer la interffaz del web service, donde lo hago???
 
Como se ha visto esto en Kumbia??
 
Saludos y gracias rafael por tus respuestas.

 
El día 15/11/07, Rafael Rodríguez Puente <raf...@gmail.com> escribió:

Oliver Sosa Cano

unread,
Nov 26, 2007, 10:57:53 PM11/26/07
to kum...@googlegroups.com

Saludos kumbieros

 

Estoy teniendo un problema singular con el código de los caracteres especiales de nuestro alfabeto en las ventanas de Prototype (Prototype Windows, pág 159 del libro de Kumbia). Es decir que en vez de tildes y eñes me salen unos molestos signos de interrogación y otros signos extraños de los que no quiero ni acordarme.

 

Esto sucede cuando cargo nombres, direcciones, etc., de mi BD que tienen tildes y demás. Lo extraño es que en las páginas cargadas normalmente (léase vistas de una acción), donde cargo igualmente esos nombres de la BD, me salen a la perfección. Así que intuyo que sea un problema de codificación de JavaScript, pero todavía no he dado con él.

 

Les comento ahora mis codificaciones para si a alguien le descarga al tema:

 

En la BD (MySQL)

1.       La BD como tal la tengo codificada a Latin1

2.       Cada tabla como sigue:

a.       Table Type: InnoDB

b.      Character Set: latin1 – cp1252 West European

c.       Collation: latin1_spanish_ci

 

En el index.phtml principal que esta en la carpeta views, en el header la codificación es la siguiente:

 

<meta http-equiv='Content-type' content='text/html; charset=iso8859-1' />

 

 

 

Espero ayuda..

 

Saludos desde Cuba.

 

israel medina

unread,
Nov 27, 2007, 8:02:31 PM11/27/07
to kum...@googlegroups.com
una alternativa para mostrar tus datos de la bd es que  uses utf8_encode o el utf8_decode, pero en si el problema es que tu no estas controlando en registro de tus caracteres. Por ejemplo si insertar en la bd Ñandu, deberias reemplazarlo &Ntilde;andu, o si es un acento Acción, entonces tu deberias insertarlo como Acci&oacute;n; bueno estas son alternativas profesionales de solucion. Ahora si lo estas probando en un server propio deberas habilitar en tu conf de php la codificacion iso-859-1, y listo tus problemas se solucionaran.
 
exitos!!!

 
El día 26/11/07, Oliver Sosa Cano <os...@estudiantes.uci.cu> escribió:

<meta http-equiv ='Content-type' content='text/html; charset=iso8859-1' />

Reply all
Reply to author
Forward
0 new messages