Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help

Browse by Tags

All Tags » wcf

Preguntas de los lectores: DataSets y Web Services

Esta pregunta me llegó por e-mail y la respuesta acabó tan larga que mejor la pongo como una entrada:

De antemano te digo que tu blog es muy interesante y se entienden todas las cosas que has puesto... ahora bien tengo una duda que puede sonar un poco tonta pero aqui va...
En cuanto a los xml de los web services en visual studio un dataset que se envia por un web services es convertido a xml para viajar por el HTTP asi que lo puedo dejar de esa manera para que otra aplicacion lo recoja como un xml????
en el caso de que no... al serializar el objeto DataSet obtengo, eso si en la vista del browser un tag String y dentro de ella todo el codigo del xml, evidentemente eso no es lo que se ocupa o si??
Bueno disculpa por las preguntas pero me interesan demasiado las respuestas.... de antemano muchas gracias!!!

—Luis Mario Carvajal

Primero que nada, gracias Luis.  Se siente muy padre que las personas encuentren algo que escribes útil.

Segundo, las preguntas que haces son bien interesantes.  La respuesta a la primera es, sí, un DataSet se serializaría a XML—al tratarse de servicios Web todos los tipos son serializados a XML, porque en escencia estamos hablando de XML sobre HTTP, como tú lo mencionaste.

Sin embargo, no se recomienda utilizar un DataSet para pasar datos, ya que es un objeto bastante complejo: tiene muchas colecciones (DataTables, DataRelations, etc.), y cada una de ellas, a su vez tiene colecciones (un DataTable tiene una colección de DataRows, etc.).  Así que al serializar el grafo de todos eso objetos, acabas con mucho overhead, mucho XML complejo para transmitir solo unos cuantos datos. Y, aunque en teoría sí podrías consumir eso de otra aplicación—dependiendo si estas usando ASP.NET Web Services o WCF, ya que utilizan serializadores distintos—no es muy interoperable con otras plataformas. 

A pesar de estas recomendaciones, debo mencionar que si el consumidor de tu servicio usa .NET, no debe tener problemas para consumir ese DataSet como un objeto de .NET, ya que el generador de la clase proxy que viene con Visual Studio utiliza unos artilugios para des-serializar el DataSet apropiadamente.

Ahora, que si lo que te interesa solo es extraer los datos del DataSet en formato XML, una manera muy sencilla de hacerlo—y mucho mejor que hacer ToString(), creo—es a través del método WriteXml() que es parte de la clase DataSet y DataTable.  Aunque no te da mucho control sobre el XML Schema que utiliza para exportar esos datos, utiliza una estructura bastante sencilla y amigable como para leerlo y manipularlo con otras herramientas.

Finalmente, creo que también es importante mencionar que si simplemente estás exponiendo datos, existen otros formatos más breves (que no usan XML), pero que siguen siendo amigables a los servicios, como JSON.  WCF maneja JSON de una manera relativamente fácil, y puedes consumirlo utilizando ASP.NET AJAX, por ejemplo.  Una última alternativa también es exponer tus datos como un ADO.NET Data Service (que es una característica nueva del .NET Framework 3.5 SP1).

Espero te ayude.

Enjoy smile_shades

Desempeño de WCF vs. otras tecnologías de comunicación distribuída

Una razón más para considerar WCF:

To summarize the results, WCF is 25%—50% faster than ASP.NET Web Services, and approximately 25% faster than .NET Remoting. Comparison with .NET Enterprise Service is load dependant, as in one case WCF is nearly 100% faster but in another scenario it is nearly 25% slower. For WSE 2.0/3.0 implementations, migrating them to WCF will obviously provide the most significant performance gains of almost 4x.

A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies

Presentación y material de WCF y CardSpace disponibles

El jueves pasado me tocó dar una de las pláticas durante el ProNet CodeCamp que tuvimos junto con Microsoft en la Comunidad .NET de Cd. Juárez. El tema fue Windows Communication Foundation y Windows CardSpace.

Estuvo bastante divertido. WCF es una de las tecnologías del .NET Framework 3.0 que más me gusta porque a pesar de que es un poco abstracta, habilita la infraestructura necesaria para orientación a servicios, las nuevas especificaciones de Web Services, etcétera. De hecho tengo planeado un par de posts, o incluso un screencast para tratar el tema y compararlo con Web Services "clásicos" usando ASP.NET.

Para mi sorpresa, CardSpace fue el que pareció generar más interés y preguntas en el público, sobre todo cuando vimos el demo de cómo integrarlo a una aplicación de consola con WCF.

En fin, aún no hemos publicado una reseña del evento completo, pero por lo pronto ya están disponibles la presentación y demostraciones que utilicé en la sección de archivos del sitio de la Comunidad. Pueden descargar el material de la siguiente dirección:

http://comunidadnetjuarez.org/files/folders/presentaciones/entry575.aspx

Para que funcionen los ejemplos de CardSpace es necesario tener instalados ciertos certificados digitales en la máquina que están corriendo. Para no batallar mucho, te recomiendo correr los scripts de instalación que vienen en el .NET Framework Training Kit para WF, WCF y CardSpace. Este kit está genial porque trae demos y hands-on labs para estas tres tecnologías, y puedes ver una agenda de aprendizaje por día o por tecnología.

También aproveché la ocasión para subir la presentación y demostraciones que utilicé el año pasado en el Microsoft Developer Community Day. El tema en aquella ocasión fue Desarrollo con .NET 3.0, la evolución del .NET Framework, que es una buena introducción a lo que tiene esta versión del framework. Ese material esta disponible aquí:

http://comunidadnetjuarez.org/files/folders/presentaciones/entry574.aspx

Finalmente, alguien me pidió que si podía también poner aquí los enlaces que recomendé en las presentaciones. Aquí estan, más algunos otros que no incluí en la presentación:

Para WCF:
Para CardSpace:
Enjoy.

Cursos gratis de .NET Framework 3.0

No sé si te enteraste, pero de aquí al lanzamiento al público de Windows Vista (en enero), Microsoft está ofreciendo gratis 3 cursillos sobre las tecnologías principales del .NET Framework 3.0 (en inglés). Cada uno de ellos dura como 2 horas. Hay uno para Windows Presentation Foundation, otro para Windows Workflow Foundation y otro para Windows Communication Foundation.

Así que si después de la plática de ayer en el Developer Community Day te quedaste con las ganas de aprender un poco más, pues inviértele unas cuantas horas, que al fin y no pagas nada ;)

PD. ¡Gracias a Abe por su reseña del evento! (casi me chiveo con sus palabras jejeje)