Maldito WebService :(

23/12/2008 - 16:36 por José Luis | Informe spam
Hola a todos...

Tengo un WebService que ejecuta una consulta SQL pasándole el comando y un
array de SqlParameter. Devuelve 1 dataset con el resultado.

Cuando añado la referencia al servicio, esta se mete en un namespace y se
crea un nuevo tipo para asignarlo al parámetro:

En el webservice

[webmethod]
public DataSet SqlQuery(string Command, SqlParameter []Parms){
[...]
}


Si la referencia en la que lo añado se llama, por ejemplo, DatosRemotos, en
el código del cliente que la utiliza, crea una nueva clase
"DatosRemotos.SqlParameter". El problema está en que toda la aplicación
trabaja con objetos System.Data.SqlClient.SqlParameter y que las llamadas al
webservice esperan objetos de tipo DatosRemotos.SqlParameter, ¡¡ pero son el
mismo tipo!!

¿Qué es lo que tengo que hacer para que .NET declare los parámetros con los
tipos originales que implementa el webservice y que no cree estas clases que
realmente no sirven para otra cosa que entorpecer????

Saludos

Preguntas similare

Leer las respuestas

#1 Iver
23/12/2008 - 18:58 | Informe spam
Hola Josés Luis,

No se cual sea la finalidad de tu webservice, pero te adelanto que un
webservice es un servicio web como su nombre lo indica, que te permite
encapsular operaciones de un sistema y exponerlo para su uso en la web desde
cualquier aplicación independientemente del leguaje en el que esté escrito.

En otras palabras, es una interfaz capaz de recibir una petición, activar
unos procesos y devolver los resultados. Todo esto, en Internet y a través de
protocolos de red (HTTP,FTP,SMTP).
La comunicación entre los diferentes entornos del Web Services se realiza
mediante XML.

Esto quiere decir que los datos que envias / recibes al consumir un
webservice se generan en formato XML, es por eso que para facilitar la
comunicación entre sistemas, se recomienda que utilices tipos de datos
primitivos y no aquellos tipos de datos complejos.

Puedes generar una clase que contenga los datos a enviar / recibir, pero
tendrías que definir en cada sistema (el que expone el webservice y el que lo
consume) tu clase para que esta se pueda mapear con cada propiedad (sobre
todo si son clases complejas). En particular yo no he tenido necesidad de
pasar datos como dataset en un webservice y se me hace que debes redefinir lo
que necesitas que exponga / se consuma en tu webservice.

Saludos!

Para que entiendas mejor el concepto y no te llene de rollo puedes consultar
la wikipedia [1].

[1] http://en.wikipedia.org/wiki/Webservices

Iván Jaimes (Iver)
http://www.iver.com.mx
Respuesta Responder a este mensaje
#2 José Luis
23/12/2008 - 23:52 | Informe spam
Gracias por tu explicación, pero eso lo tengo claro. Lo que no quiero es que
entre sistemas homogéneos se cree una capa de adaptación intermedia que me
entorpece y limita el desarrollo. Por eso la clase que consume el webservice
que tenemos implementado, que está programado sobre el mismo sistema, con
las mismas librerías y corriendo sobre la misma plataforma que el servidor,
debería no suponer más que ayudas al programador.
Por eso utilizo estructuras complejas, porque el webservice (este en
concreto, no otros que también implementamos) no está pensado (ni lo estará
nunca) para funcionar entre plataformas heterogéneas.

Un saludo

"Iver" escribió en el mensaje de
noticias:
Hola Josés Luis,

No se cual sea la finalidad de tu webservice, pero te adelanto que un
webservice es un servicio web como su nombre lo indica, que te permite
encapsular operaciones de un sistema y exponerlo para su uso en la web
desde
cualquier aplicación independientemente del leguaje en el que esté
escrito.

En otras palabras, es una interfaz capaz de recibir una petición, activar
unos procesos y devolver los resultados. Todo esto, en Internet y a través
de
protocolos de red (HTTP,FTP,SMTP).
La comunicación entre los diferentes entornos del Web Services se realiza
mediante XML.

Esto quiere decir que los datos que envias / recibes al consumir un
webservice se generan en formato XML, es por eso que para facilitar la
comunicación entre sistemas, se recomienda que utilices tipos de datos
primitivos y no aquellos tipos de datos complejos.

Puedes generar una clase que contenga los datos a enviar / recibir, pero
tendrías que definir en cada sistema (el que expone el webservice y el que
lo
consume) tu clase para que esta se pueda mapear con cada propiedad (sobre
todo si son clases complejas). En particular yo no he tenido necesidad de
pasar datos como dataset en un webservice y se me hace que debes redefinir
lo
que necesitas que exponga / se consuma en tu webservice.

Saludos!

Para que entiendas mejor el concepto y no te llene de rollo puedes
consultar
la wikipedia [1].

[1] http://en.wikipedia.org/wiki/Webservices

Iván Jaimes (Iver)
http://www.iver.com.mx
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida