martes, 9 de septiembre de 2008

Cantidad de Visitas al Articulo:

Web Services con Visual Studio 2005

VS2005_2 Errores inesperados

Días atrás me encontré con un error inesperado cuando estaba consumiendo un Web Service de un tercero, al cual no tenía la posibilidad de acceder como para pedir ningún tipo de revisión.

Como comentario adicional antes de seguir en el desarrollo de éste tema, me gustaría hacer referencia al artículo anterior, donde hablo acerca de las facilidades actuales para los programadores, en la búsqueda de soluciones en línea ante problemas inesperados. En otra época, este inconveniente posiblemente hubiera retrasado el desarrollo quizá varios días, mientras que en la actualidad fueron un par de horas, de búsqueda en foros, blogs, etc., mas pruebas.

El problema

Consistía en que utilizando Visual Studio 2005, herramienta de desarrollo de Microsoft, generaba el proxy de conexión a un Web Service de un tercero sin problemas, automáticamente como lo permite este IDE en particular. Luego programaba la utilización de un método específico, y compilaba la aplicación sin errores. El error surgía cuando instanciaba el objeto del Web Service, de la forma:

using (TipoWS ws = new TipoWS()) { }

La excepción indicada era algo como: "Message = "No se puede reflejar el método TipoWS.Metodo."

Y la InnerException indicaba: InnerException {"El elemento XML 'Datos-Respuesta' del espacio de nombres 'urn:TipoWS' hace referencia a un método y a un tipo. Cambie el nombre del mensaje del método utilizando WebMethodAttribute o cambie el elemento raíz del tipo utilizando XmlRootAttribute."}

Luego de leer varios casos similares, y con la imposibilidad de acceder a modificar el WSDL del Web Service, encontré algunos indicios de solución, que me llevaron a resolver el tema, así que aquí lo comparto con Uds. por si alguno se encuentra con este inconveniente en el futuro.

La Solución

Consistió simplemente en modificar el nombre en el atributo SoapDocumentMethodAttribute, en uno de los dos métodos en que se referenciaba. Existían dos métodos del Web Service que se generaban en el archivo Reference.cs, de la forma:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="urn:TipoWS",
ResponseElementName="Datos-Respuesta", ResponseNamespace="urn:TipoWS", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Respuesta", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public Respuesta Metodo1([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] Encabezado Encabezado, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] Parametro Parametro, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out respuesta Respuesta) {

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="urn:TipoWS",
ResponseElementName="Datos-Respuesta", ResponseNamespace="urn:TipoWS", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Respuesta", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public Respuesta Metodo2([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] Encabezado Encabezado, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] Parametro Parametro, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] out respuesta Respuesta) {

Los métodos, Metodo1 y Metodo2, en el SoapDocumentMethodAttribute, hacían referencia a ResponseElementName="Datos-Respuesta". Esto provocaba el error en tiempo de ejecución antes mencionado.

La solución fue modificar uno de los dos a ResponseElementName="Datos", y el restante dejarlo como había sido generado.

Luego de compilar nuevamente el proyecto, la aplicación funcionó perfectamente.

Conclusiones

Puedo mencionar como conclusiones lo siguiente:

Es una solución factible, y que funciona, teniendo en cuenta la imposibilidad de acceder a modificar el Web Service o mejor dicho la definición WSDL.
En algún blog leí que el error se producía porque al generarse de esta forma el llamado a los métodos, no se cumplía con cierto estándar, pero no encontré mayor información al respecto como para dar fe de esta afirmación.

Aunque leí acerca de los atributos SoapDocumentMethodAttribute, (aunque en honor a la verdad no demasiado en profundidad) no encontré una razón lógica por la cual se de el error.

Tampoco encontré referencias concretas al porqué se genera así el proxy, como para determinar si en el momento de la generación, el programador a través de parámetros de generación, pude exigir chequeos de ésta naturaleza, de tal forma de evitar tener que retocar a mano el archivo generado automáticamente. Especialmente porque cada vez que se refresca la referencia al Web Service, se debe volver a modificar el archivo nuevamente.

Si algún lector tiene una explicación concreta acerca del problema, y una solución potencial, les pido lo publiquen como comentario de tal forma de poder cerrar este tema de la mejor forma posible. Sino, al menos tienen una ayuda para poder cumplir con los tiempos de desarrollo comprometidos :-).

Imágenes by TinyPic

So far, So good.

Leer más...
Cantidad de Visitas al Articulo:

Blog y Redes Sociales - Por qué?

Una puerta a nuevas oportunidades

Hace poco tiempo que comencé a escribir en este blog, y como comenté antes, no se por qué realmente fue que empecé.

La verdad es que luego de empezar, me intrigué en el por qué de un blog. Así fue como encontré varios lugares donde justifican el uso del blog y de las redes sociales para fines más que importantes. Hace unos días atrás leí un artículo de mi amigo Eduardo Díaz, en su blog, con un ejemplo práctico de la utilidad de las redes sociales.

Otro ejemplo que me sorprendió, es que empresas informáticas internacionales, analizan los blogs de los candidatos a puestos de trabajo en ellas, como una métrica muy importante a lo hora de la decisión final. El concepto es que una persona que tiene un blog, y mantiene una cierta cantidad importante de subscriptores , se lo puede considerar como "creíble" en el mercado, lo cual asegura que cuando llegue a los potenciales clientes representando a la compañía, se lo reciba de buena forma. Podemos conjeturar mucho acerca de la veracidad de este concepto, pero la realidad es que se aplica.

Algunos Head Hunters, en sus búsquedas de talentos, realizan preselecciones o chequeos de postulantes, en las redes sociales como por ejemplo LinkedIn. Determinan allí si es una persona con buena reputación en el mundo laboral, por ejemplo.

En mi opinión, cualquier persona que sea capaz de compartir algún concepto que le sea útil al menos a un persona, ya justifica el uso de éstas herramientas. Por ejemplo, en un artículo anterior, donde expliqué que tuve un problema con mi mail, encontré la solución en un blog de alguien que compartió su experiencia. Para otro ejemplo, basta con analizar la velocidad de obtención de ayuda para los programadores hoy en día, en comparación con años atrás. Cuando uno se encuentra hoy ante un problema, rápidamente puede encontrar miles de links de ayuda en blogs, foros, etc., que inmediatamente te dan una orientación hacia la solución. En otros tiempos era todo mucho mas lento, y acceder a buenos consejos de ayuda, era en algunas oportunidades, o bien muy caro, o bien, sencillamente imposible.

La pregunta que surge entonces, es como utilizar estas herramientas para mejorar nuestra imagen, o para que sea un medio de acercamiento a nuevas e importantes oportunidades, y como acceder a ellas de una forma sencilla.

Redes Sociales

Existen diferentes redes sociales, aunque cada una con un enfoque diferente. Ejemplos se pueden mencionar varios, pero a los efectos de éste artículo solo utilizaré los mas conocidos.

facebook

Una red social en la que luego de registrarse, uno puede conectarse con amigos de todas partes del mundo. Compartir ideas, juegos, foros, crear clubes, compartir fotos, vídeos, etc. Permite de una forma fácil y entretenida, una comunicación en línea con muchas personas simultáneamente, aunque se encuentren en diferentes sitios geográficos. Similar a ésta red, existen otras, en las cuales realmente no he ingresado, debido a que el proceso de mantenimiento a cada red es alto, y prefiero mantener bien actualizadas solo una de cada tipo. Otras redes que puedo mencionar de este tipo son Hi5, Unyx o Sonico. La verdad que la decisión de cual usar, dependerá de varios factores. La facilidad de uso puede ser uno, pero a mi criterio, el mas importante, es donde más amigos con las mismas expectativas pueda encontrar, de otra forma, no podría hacer uso de la potencialidad de la misma.

linkedin Esta red está orientada a conectar profesionales de diferentes especialidades. Está mas orientada a compartir información laboral, y conseguir contactos que puedan transformase en nuevos negocios. Como comenté antes, este tipo de redes también es utilizado por los buscadores de talentos en la selección de personal. Otra red de este tipo es Ecademy. En éste caso mantengo actualizadas ambas, para mantener mas opciones de nuevas oportunidades laborales abiertas.

Mi consejo es que si alguien ingresa a este tipo de redes, mantenga actualizados sus datos de contacto, porque nunca se sabe el momento en que alguien necesite de nuestros servicios.

Dependiendo de la red seleccionada, el proceso de suscripción es mas o menos costoso, pero en casi todas es bastante intuitivo. Obviamente, de acuerdo al objetivo de su participación en las mismas, deberá completar mas información de un tipo u otra. Si la intención es conectarse para conseguir nuevas oportunidades laborales, cuanto mas claros y explicativos sean los datos referidos a la formación académica y experiencias laborales anteriores, mas posibilidades existen que lo consiga.

Blogs

Logo_Blogger_SoloExisten muchas alternativas para desarrollar un blog, cualquiera sea la temática que se desee abordar. Algunas alternativas gratuitas, para la creación y administración de un blog que puedo mencionar son: hazblog, blogger de Google, spaces lives de Microsoft, Soy, entre otros. Particularmente yo utilizo blogger, debido a que soy usuario de varios servicios de Google, complementarios al blog, tales como Picasaweb, FeedFurner o Gmail. Con el mismo usuario, puedo acceder a todos estos servicios, para poder agregarle algunas características importantes a mi blog. Además replico el mismo blog en spaces lives.

Para crear un blog, fácil y rápidamente, se pueden usar varios tutoriales, algunos escritos y otros en vídeo a través de Youtube, que nos enseñan, paso a paso como crear nuestro blog.

Lo primero que se debe hacer es definir el objetivo del blog, y el público potencial. Luego, siguiendo los pasos antes mencionados, definir la imagen (gráfica) mas acorde a nuestro espacio. Para esto se puede utilizar alguna de las plantillas entregadas por los mismos sitios de generación de blog, o buscar plantillas desarrolladas por terceras partes, y que se pueden descargar desde Internet.

Por último, si deseamos completar nuestro blog con algunos atributos importantes, necesitamos utilizar servicios adicionales, como por ejemplo:

feedburner
FeedFurner

Como comenté al comienzo, si nuestro deseo es tener un blog altamente consultado, y que este "valor" sea capitalizado por ejemplo como carta de presentación hacia empresas que busquen "escritores creíbles" y populares, es necesario generar espacios en nuestro blog para que los lectores interesados puedan suscribirse, y de esa forma, sean informadas cada vez que escribimos algo nuevo, de tal forma de facilitar su lectura. Luego, esa "cantidad" o "numero" de personas que se suscriben, es el número mágico que me interesa mostrar al mundo, y eso lo puedo hacer con esta herramienta. Luego de suscribirse a este servicio, uno puede agregar a su blog un contador de subscriptores, configurando el color que mejor que convine con la gráfica seleccionada.

tinypic

Es un sitio donde se pueden subir imágenes que luego pueden ser referenciadas desde nuestros artículos, de tal forma de hacer mas atractivos o explicativos los mismos. En el caso de blogger, si se utilizan imágenes ubicadas en el computador local, éstas son almacenadas en el servicio web Picasaweb, en la dirección pública del usuario dueño del blog, generándose una dirección de conexión automática. Además, existen otras opciones de almacenamiento web con el mismo objetivo. Lo que siempre hay que verificar, es si la imagen que usemos tiene licencia de uso libre. Y es práctica común agregar una referencia al final de cada artículo, a la fuente de las imágenes utilizadas.

hithats Este tipo de sitios, nos dan la posibilidad de incrustar contadores de visitas en nuestros sitios, blogs, etc. Permiten, además de seleccionar algún contador que esté de acuerdo a nuestra gráfica, analizar en línea los hits realizados a nuestro espacio, de tal forma de tener claro por ejemplo cual es nuestro público mas frecuente o que tipo de información ha sido mejor recibida por nuestros lectores. Son varios sitios que brindan este tipo de servicios, y la selección estará de acuerdo a la facilidad que cada uno encuentre en el manejo de cada uno.

No entraré en detalles de como generar un blog por ejemplo, dado que existen innumerables tutoriales, en incluso vídeos que muestran paso a paso como se crean y actualizan los blogs. Solo deben ingresar por ejemplo a Youtube, y escribir en la búsqueda "blogger", para que aparezca una lista importante de vídeos relacionados al tema.

Para encontrar una plantilla mas acorde a sus expectativas, si es que las que están incluidas blogger no satisfacen, se pueden descargar plantillas adicionales de otros espacios. Nuevamente, buscando en Internet encontrarán varias ofertas gratuitas de plantillas. Luego estas plantillas, podrán utilizarlas tal cual están, o podrán modificarlas a gusto, en caso de tener conocimientos avanzados en el tema. Pero, en caso de ser un usuario sin conocimientos en informática, podrá generar un blog elegante, sin ningún tipo de necesidad de aprender detalles complicados.

Por último, para la generación y publicación de artículos en el blog creado, se puede utilizar el editor existente en el mismo espacio (que para los usuarios inexpertos lo recomiendo totalmente) o bien utilizar otro tipo de editores como por ejemplo Windows Live Writer, una herramienta de Microsoft. Este tipo de herramientas, tienen la facilidad de administrar mas de un blog a la vez. Esto quiere decir en términos prácticos, que se escribe un artículo una sola vez, y se lo publica en varios blogs, pero en cada uno con su estilo gráfico de acuerdo a lo definido en su creación. Este proceso ahorra mucho tiempo. Como ejemplo les puedo decir que yo utilizo ésta herramienta, y publico los mismos artículos en dos espacios, Informateando... y Espacio de Gustavo Suhit.

Consideración Final

El proceso de generar subscriptores, y luego mantenerlos no es para nada sencillos. Depende de nuestra tenacidad para mantener el blog actualizado y de nuestra inventiva para publicar temas interesantes de manera medianamente continua.

Y por último tengan en cuenta esta frase de Ghandi, y que resume para mi de forma genial, lo que una persona puede llegar a sentir, salvando las distancias, cuando comienza este camino: "Cuando intentas cambiar el mundo, primero la gente te ignora, luego te ridiculiza, después te ataca, después ganas.". Yo definitivamente estoy en el primer paso :-), y Uds.?

Imágenes by TinyPic y Flickr

So far, So good.

Leer más...
 
Este Weblog, InforMateando..., está licenciado bajo Licencia Creative Common - por Gustavo Suhit