Como exponer un WebService apartir de un DATASET en XML (Visual .NET 2005 & C#)

La forma mas facil de hacerlo en .NET 2005 con C# es declarando un objeto DataSet y mandar llamar su metodo MyDataSet.GetXml(). Pero creanme que al momento de exponerlo tendran problemas. puesto que ni Jdeveloper , ni Aqualogic Service Bus reconocen el tipo de dato complejo que por default genera , asi que esta es mi solución a dicha situación.

Primeramente debemos crear la estructura de salida que contiene nuestro dataset , y lo haremos mediante una clase.
Supongamos que nuestro dataset nos va arrojar la clave de nuestros clientes y en su caso un tag de mensaje en caso de algun error.



Agregamos la Clase wsElements a nuestro proyecto. y creamos la estructura













Aqui el codigo con la estructura de salida que vizualizaremos en XML.


























Nos regresamos al codigo de nuestro servicio web llamado Clientes y declaramos un objeto de tipo array de nuestra clase qua acabamos de crear y lo asignamos a la variable wsResult
















Ahora lo siguiente es obtener la informacion de nuestro dataset y de ahi obtener el numero total de registros, esto nos ayudará a dimensionar nuestro arreglo.













Por ultimo asignamos la informacion de nuestro DataSet a wsResult.














Y listo , procedemos a ejecutar el servicio web , el resultado debera ser un XML con la estructura que creamos en wsElements.













La ventaja de hacerlo de esta forma , es que no vas a tener ningun problema si tus WebServices seran consumidos por alguna aplicacion Java.



Espero que sea de ayuda.