none
Webservice y XMLDocument RRS feed

  • Pregunta

  •  

    Hola a todos.

     

    Tengo que crear un web service para una aplicación cliente. El problema empieza cuando yo solo me encargaré de hacer el webservice no la aplicación cliente, por lo tanto no se si la harán con .net, con java, con php o con que tecnología.

     

    Mi web service accede a base de datos SQL Server 2005, recoge un dataset y como supongo que no puedo devolver un dataset como tal por que no serian capaces de usarlo las tecnologias no .net, pues me dije de pasarlo a XML.

     

    Mi duda es la siguiente;

    He convertido ese Dataset a un objeto XMLDocument y es lo que devuelvo.¿¿¿ Las demás tecnologías serian capaces de trabajar con ese XMLDocument??? Si no es así, que me recomiendas que devuelva mi WebService??? No tengo mucha experiencia en webservices y xml y no se me ocurre otra forma de enviar el resultado.

     

    Un saludo y gracias.

    martes, 22 de julio de 2008 8:15

Respuestas

Todas las respuestas

  • Hola Antonini:

     

    Sí lo que devuelves es un XML (No el DataSet serializado puesto que solo podrás ser consumido por clientes .NET) no tendrás problemas para que tu WebService sea consumido por cualquier tecnología que no sea net (Se parsea el XML en el cliente y ya está)

     

    Yo optaría por devolver objetos. Ejemplo:

     

    Code Snippet
    [WebMethod(Description = "Usado para comprobar si se puede hacer inicio de sesión")]
            public Usuario CheckConnection()
            {
                try
                {
                    DatosUsuario du = new DatosUsuario();
                    return du.ObtenerOperador();
                }
                catch (Exception ex)
                {
                    //Manejamos la excepción
                    IPSACExceptionPolicy exceptionPolicy = new PSACExceptionPolicy();
                    exceptionPolicy.HandleException(ex, Constantes.LOGGER_PRESENT_POLICY_NAME);
                    throw new ApplicationException("No se pudo obtener los datos del operador.");
                }
            }

     

     

     

    Salu2

    martes, 22 de julio de 2008 8:28
  •  

    Un ejemplo de mi codigo es este:

     

     

    Code Snippet

    <WebMethod()> Public Function ObtenerDatosCompletosFicheros(ByVal iIDFichero As Integer) As XmlDocument

    Dim dsFichero As New DataSet

    Dim FicheroXMLDoc As XmlDocument

    Try

    oLNWebService.ObtenerInformacionCompletaFichero(dsFichero, iIDFichero)

    FicheroXMLDoc = ConvertirDataSetEnXMLDoc(dsFichero)

    Return FicheroXMLDoc

    Catch ex As Exception

    End Try

    End Function

     

    <WebMethod()> Private Function ConvertirDataSetEnXMLDoc(ByVal ds As DataSet) As XmlDocument

    Dim strXMLdoc As String

    Dim XMLdoc As New XmlDocument

    Try

    strXMLdoc = ds.GetXml

    XMLdoc.LoadXml(strXMLdoc)

    Return XMLdoc

    Catch ex As Exception

    End Try

    End Function

     

     

     

    ¿¿Seria válido??

     

    martes, 22 de julio de 2008 8:54
  • Según esto sí:

     

    GetXml method returns matches the one specified by the XML Schema that defines the typed dataset. You can then exchange this XML string with Java clients that can then deserialize it into a corresponding Java class.

     

    Mira este artículo de la MSDN:

     

    http://msdn.microsoft.com/en-us/library/ms998428.aspx

     

    Salu2

     

    martes, 22 de julio de 2008 9:11
  • Gracias por el articulo,

     

    Gracias a el he podido leer, que en vez de hacer tantos lios de pasar el dataset a string con GetXML y despues el string del XML a un objeto XMLDocument, lo mejor es devolver directamente el valor string obtenido con el GetXML que ese tipo de dato si es compatible con cualquier tecnologia.

     

    Muchisimas gracias!

     

    martes, 22 de julio de 2008 9:47
  • De nada compañero, recuerda dar por respondido el tema para que otros puedan aprovechar el hilo Wink

     

    Salu2

     

     

    martes, 22 de julio de 2008 9:56