martes, 30 de septiembre de 2008

Construyendo WebService with attachmente interoperables

En el siguiente artículo podemos apreciar un ejemplo de como construir un servicio web con attachments interoperables:

Building Interoperable Web Services With Attachment Support Using JAXRPC 1.1.2
https://jax-rpc.dev.java.net/whitepaper/1.1.2/attachments-howto.html

Allan

Consumir webservice en .NET con ROR

Pequeño tutorial que explica como piner a hablar a ROR con un web service de .NET

http://wiki.rubyonrails.org/rails/pages/How+To+Consume+.NET+WebServices

Esta presentacion muestra un repaso por lo ruby y ROR muy interesante

http://maximilien.org/tutorials/2007/ws_on_rails/Web_Services_on_Rails.ppt

SDO y PHP

Otra iniciativa relacionada con SOA, y basada en PHP, es SDO PHP. Se puede encontrar más información en este website:

http://www.osoa.org/display/PHP/SDO+with+PHP

SDO es Service Data Objects, y esta implementación permite accesar a diversas fuentes heterogéneas de datos mediante clases en PHP que permiten la abstracción de las mismas. Dada la diversidad de posibles fuentes de datos en un ambiente SOA empresarial, iniciativas como estas son relevantes para migraciones a estas arquitecturas.

SAAJ Standard Implementation

Este es el link a la web oficial del proyecto SAAJ. Contiene un link al Java EE 5 tutorial en cuyo capítulo 18 vienen algunos ejemplos del uso de SAAJ 1.3 . Apenas para una tarde/noche de lluvia trabajando en el laboratorio 1 :) :)

Link al website de SAAJ.

Link al Tutorial.

ws para android

Como entrada curiosa, encontre este ejemplo simple de webservice para android

Viendo el codigo, es realmente simple. Aunque no es un "web service" propiamente dicho, permite acceder un documento xml en un web server. Puede verse que el parsing del xml esta hecho "a pata". Si se encontraran disponibles las librerias de jwsdp, posiblemente se podria hacer algo similar a lo del laboratorio 1.

codigo

INTEROPERABILIDAD

Esta publicación voy a aprovecharla para resaltar la labor del proyecto Tango en el campo de la interoperabilidad de servicios web. Y aunque ya se ha mencionado antes aqui hay un par de links al respecto...

www.3ersector.org.mx/index2.php?option=com_content&do_pdf=1&id=5578
www.microsoft.com/spain/interop/developers/Java.mspx
jaime.cid.googlepages.com/JC_SOA_CercleFiber_20070626.ppt
www.mkm-pi.com/mkmpi.php?page=article_pdf&id_article=1843

WSE - Web Services Enhancements for .NET

Aunque unicamente oimos hablar de WCF, cabe mencionar que no inventa ni es la primera implementacion de los WS-* que tanto usamos :)

Para el caso de .NET, existen los WSE (Web Service Enhancements) que permiten extender las habilidades de los web services que implementamos agregando seguridad, attachements, WS-routing, etc

WSE 3.0 Download Page

WCF es compatible con WSE3... asi que no hay que estresarse por escoger WSE solo porque es un poco "mas viejito" :)

SOAP y PHP

Existen varias formas para crear un Web Service, dentro de estas tenemos algunas como:

http://www.sitepoint.com/article/own-web-service-php-xml-rpc/

http://www.ferdychristant.com/blog/articles/DOMM-6J2QFF

http://cr.php.net/soap


http://www.onlamp.com/pub/a/php/2003/10/30/amazon_rest.html


Que son enfocadas a PHP.

Axis2 MTOM file download web service

Recordando el cuadro de tecnologias visto en post anteriores, vemos que el soporte para envio de attachments en las diferentes formas en java(http://wiki.apache.org/ws/StackComparison) nos muestra que el soporte de axis 1 es para mime y dime, en pruebas recientes de codigo, vemos que este soporte solo se da para el lado del servicio web, porque los clientes axis pueden enviar attachments por medio de mtom. Pero a la vez vemos en el cuadro que el envio mtom, esta para la nueva version de apache axis 2. aqui una breve tutorial para axis2 en lo que se refiere a attahcments http://thilinag.blogspot.com/search/label/Axis2

Attachments

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

Soap w/ Attachments

X

X

X

X

X


X

X

DIME

X



X




X

MTOM


X

X


X

X

X

X

Public Key Infraestructure (PKI)

Encontre este pequeño articulo con información general sobre PKI, esta muy interesante especialmente si no se conoce en que consiste PKI.

PKI Security

Saludos.

Tips de WS en Ruby y WS en diferentes Paradigmas

Algunos tips para consumir WS de .NET con Ruby
http://wiki.rubyonrails.org/rails/pages/How+To+Consume+.NET+WebServices

Un artículo con información para crear WS en ruby basados en los diferentes paradigmas REST, en SOAP y en XML-RPX
http://www.devx.com/enterprise/Article/28101/0/page/3

lunes, 29 de septiembre de 2008

Interoperabilidad: Java EE & .NET

La siguiente presentación es un repaso del tema de interoperabilidad entre tecnologías, específicamente Java EE y .NET. Se describen las soluciones existentes: web services y bridging middleware. Se hace un listado de pros y contras de cada uno de estos enfoques, el cual me parece muy valioso. Finalmente, se hace referencia al libro "Java EE and .NET Interoperability" [Marina et al.], el cual me parece una referencia interesante de estudiar.

http://developers.sun.com/learning/javaoneonline/2006/webtier/TS-4611.pdf

Saludos,

Eduardo

domingo, 28 de septiembre de 2008

Mobile Web Service - Yahoo! Blueprint.

En la búsqueda de herramientas para el desarrollo de aplicaciones para dispositivos móviles compatibles con contenido web y web services, encontramos la solución de Yahoo!, Blueprint.
El ambiente permite crear aplicaciones que pueden consumir web services de manera sencilla simplemente definiendo un esquema de la aplicación y ocultando el "binding" de los datos
El gran atractivo de este sistema es poder desarrollar aplicaciones que son compatibles con diferentes ambientes como Windos Mobile, Java y Symbian.
http://mobile.yahoo.com/developers
http://developer.yahoo.com/mobile/
Doc

martes, 23 de septiembre de 2008

Interoperabilidad - Tutorial Eclipse

El siguiente recurso forma parte del tutorial de Eclipse y nos muestra como incorporar el WS-I Basic Profile para validar nuestros proyectos:

http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.jst.ws.doc.user/concepts/cwsiover.html

Saludos,

Eduardo

Web Services Security Policy Language (WS-SecurityPolicy)

Esta es una especificación que indica las consideraciones a tomar en cuenta al establecer seguridad en los web services para garatizar el máximo de interoperabilidad. La idea es que si alguien pretende aplicar seguridad en un web service esta sea aplicada según el estándar y así evitar que los consumidores del servicio no puedan acceder por seguir el estandar apropiadamente.

Entre otras cosas esta especificación abarca SOAP Message Security, WS-Trust and WS-SecureConversation.

Archivo pdf

Introducción a MTOM

Este artículo me pareció bastante interesante y resulta de mucho valor para desarrollar un servicio usando MTOM.

Introduction to MTOM: A Hands-on Approach
Learn how to use MTOM by building a simple prototype
http://www.crosschecknet.com/intro_to_mtom.php

Allan

Mobile WS Agent Based Framework

Esta es una propuesta interesante de framwork para WS moviles. Los autores sostienen que la heterogeneidad de las plataformas de los dispositivos y grandes cantidades de procesamiento de XML requerida para WS. Los autores mencionan que a pesar de las mejorias hechas a los parsers y aplicaciones en los dispositivos, los WS todavia no alcanzan su maximo potencial.

Ellos proponen el uso de portales de red que eliminen el procesamiento XML en los dispositivos, y utilizan agentes inteligentes que pueden moverse a traves de la red para realizar el procesamiento.

http://dsonline.computer.org/portal/site/dsonline/menuitem.6dd2a408dbe4a94be487e0606bcd45f3/index.jsp?&pName=dso_level1_article&TheCat=1005&path=dsonline/2006/06&file=w3bener.xml&;jsessionid=LZVK5lZLR0bfLkgLsyLQQ55JNmTNVn1n5TkLjyJgC2nKppZ1ztyC!2136579355

NuSOAP para PHP5

Como se menciono en el post de la semana pasada, existe un problema con las clases de NuSOAP si se va a usar PHP5. Esto se da porque PHP5 incluye sus propias librerias para manejo de web services, y hay un choque de nombres con las clases anteriores de NuSOAP.

En este link se puede encontrar una implementacion de NuSOAP para PHP5.

http://code.google.com/p/nusoap-for-php5/downloads/list

Este release es importante en caso de que, por ejemplo, uno tenga codigo con NuSOAP y quiera hacer un upgrade a PHP5.

Interoperabilidad PHP WS - .Net

La interoperabilidad entre .Net y php es bastante sencilla en la mayoría de los aspectos los tipos básicos de datos que son los mayormente probados no presentan problemas de interpretación.
La mayoría de los datos básicos son fácilmente interpretados y procesados en ambas tecnologías, el crear un web Service en .Net que tenga un cliente php es más sencillo que crear un Web Service en php que tenga un cliente en .Net, ya que .Net autogenera el WSDL, mientras en php nos toca crear el WSDL.
Cuando se están trabajando tipos de datos complejos la tarea se torna más difícil ya que crear el WSDL correcto para un cliente en .Net de un Web Service en php puede ser algo engorroso pero no imposible.
Algunas ejemplos de esta interoperabilidad:
http://www.sanity-free.org/125/php_webservices_and_csharp_dotnet_soap_clients.html
http://blogs.digitss.com/php/my-experiences-with-soap-web-service-php-vs-net/
http://arsenalist.com/2007/01/19/php-client-for-web-services/

ASP.NET AJAX

AJAX (Asynchronous JavaScript + XML) es la la unión de varias tecnologías que juntas pueden lograr cosas realmente impresionantes como GoogleMaps, Gmail el Outlook Web Access, sus principales características son:

-presentación basada en estándares usando XHTML y CSS
-exhibición e interacción dinámicas usando el Document Object Model;
-Intercambio y manipulación de datos usando XML and XSLT;
-Recuperación de datos asincrónica usando XMLHttpRequest;
-y JavaScript poniendo todo junto.

Tal vez unas de las razones por las que ajax se ha hecho tan famoso es po que Google está haciendo una significativa inversión en el acercamiento Ajax. Todos los grandes productos que Google ha introducido como Orkut, Gmail, la última versión de Google Groups, Google Suggest, y Google Maps son aplicaciones Ajax.

Estos trozos son rescatados de un artículo publicado por Jesse James Garrett.

http://adaptivepath.com/ideas/essays/archives/000385.php

También les dejo una explicación muy detallada de cómo utilizar un webservice con ASP.NET AJAX

http://www.developer.com/net/asp/article.php/10917_3657826_1

HHFR

La arquitectura expuesta en este articulo pretende reducir los costos en desempeño que tiene SOAP basado en XML en dispositivos móviles. Esto, tanto en el sentido de procesamiento que implica, como en el ancho de banda limitado de algunos dispositivos.

La arquitectura propuesta, Handheld Flexible Representation (HHFR), propone optimizar los contenidos del mensaje SOAP de una manera optima. Pretenden separar los tipos de datos en el cuerpo del mensaje SOAP para representarlos optimamente de manera binaria, integrandose con el estandar actual. Se utilizan mensajes SOAP para negociar el formato del transporte optimizado. Si el endpoint no es compatible con HHFR, se realiza un fallback al SOAP convencional.

Los benchmarks realizados por el grupo de investigacion muestran mejoras de desempeño considerables midiendo el RTT de mensajes, en especial en comunicaciones prolongadas.

A pesar de que es una investigacion inicial, y no un estandar, es un paso hacia mejoras de desempeño considerables.

Documento

.Net Security New Apps

Microsoft tiene planes para compartir mejores prácticas y aplicaciones para implementar seguridad en aplicaciones, esta pequeña entrevista con el director de seguridad de Microsoft comenta un poco la estrategia que Microsoft pretende seguir.

Sharing Security for Developers Industrywide

Esto no esta estrictamente relacionado con Web Services pero si con el desarrollo de aplicaciones en general que al final pueden ser expuestas mediante Web Services.

lunes, 22 de septiembre de 2008

Ajax on Rails

Tenemos este artículo:
http://www.onlamp.com/pub/a/onlamp/2005/06/09/rails_ajax.html
Que nos explica un ejemplo de como se puede implementar Ajax en Rails. Es un poco viejo pero es un buen inicio. La forma más sencilla de implementar Ajax en Rails es por medio de las bibliotecas que ofrece Rails.

Un metodo versatil es "link_to_remote()" que usa tres parámetros:

- El texto a mostrar (recibe el evento que activa el js)
- El id del elemento DOM que contiene el contenido a reeemplazar
- El URL del action a invovcart del lado del servidor

Un ejemplo de fuentes dende el action se llama "say_when":
<html>
<head>
<title>Ajax Demo</title>
<%= javascript_include_tag "prototype" %>
</head>
<body>
<h1>What time is it?</h1>
<div id="time_div">
I don't have the time, but
<%= link_to_remote( "click here",
:update => "time_div",
:url =>{ :action => :say_when }) %>
and I will look it up.
</div>
</body>
</html>

La idea es tratar de incorporar este conocimiento para invocar WS de Ruby desde Ajax al estilo Ruby... vamos a ver como nos va =D

Interoperabilidad - Running Naked!

Richard Pawson nos presenta un enfoque alternativo y muy interesante al problema de la interoperabilidad entre Java y .Net.

Mientras mucha gente intenta resolver el problema de incompatibilidad entre primitivas, y formas propias de cada lenguaje, el autor de este articulo plantea la posibilidad de generar codigo que sea ejecutable indistintamente de la plataforma.

Si se preguntan como, aca esta la respuesta:

http://tssblog.blogs.techtarget.com/2007/10/10/to-run-unmodified-on-java-or-net/

Mi opinion general, despues de leido este articulo: considero que la idea esta tan loca que vale la pena probarla, al menos por simple diversion. Sin embargo, creo que el autor viene a dar una idea nueva como solucion de este problema, proporcionando un punto de vista diferente al comun.

Saludos,

Jose

Interoperabilidad .Net / Java - User Defined Exceptions

Las excepciones definidas por el usuario pueden llegar a representar un problema de interoperabilidad al no ser soportadas por C# .Net

El siguiente articulo menciona una posible solucion a este problema en caso de que nos lo topemos en un futuro:

http://blog.tomaselfving.com/2008/05/javanet-web-service-interoperability.html

Saludos,

Jose

domingo, 21 de septiembre de 2008

Interoperabilidad

Un par de links mas hablando de la interoperabilidad y su mejora en el tiempo.

El primer link es como una nueva compracion de .net con el j2ee. Aqui se presenta mayor comparación entre tecnologías teniendo en cuenta aspectos de webservices.

www.fing.edu.uy/inco/pedeciba/bibliote/reptec/TR0208.pdf

Por su lado el siguiente link presenta algunas ventajas de Java y las mejoras para interoperabilidad.

http://www.estudiagratis.com/cursos-gratis-online-Interoperabilidad-Web-Services-Enhancements-1-0-Java-curso-26321.html

martes, 16 de septiembre de 2008

Web Service Security Guide

Esta es una guia con recomendaciones de MS con diferentes scenarios y configuraciones para asegurar los web services.

Link para hacer download de la guia

Opciones para intercambio de archivos

El siguiente enlace
http://tugdualgrall.blogspot.com/2007/12/web-services-and-files-exchange.html, hace un breve resumen de las formas de enviar archivos entre las tecnologias que estan en el mercado. el mismo hace una pequeña descripcion de las formas como son
  • XML Base64 encoding
  • SOAP With Attachment (SwA) using MIME (Multipurpose Internet Mail Extensions)
  • SOAP With Attachment using DIME (Direct Internet Message Encapsulation)
  • Message Transmission Optimization Mechanism (MTOM)
da un breve explicacion de las ventajas que provee, y a la vez en el articulo descartan la posibilidad de DIME por la simple razon de que fue depreciado por la pespectiva MTOM, en el mismo articulo viene una comparacion de las tecnogias java para la creacion de webservices y las ventajas que presnenta http://wiki.apache.org/ws/StackComparison. ademas provee una opinion en cual utilizar para la interoperabilidad depende principalemente de que framework en java se usa para el proposito. pero en la mayoria se muestra que todo el soporte esta orientado a MTOM. como la mejor opcion.

Artículos sobre AJAX y RUBY

Aquí un artículo viejo (octubre 2006) que habla sobre SOA y AJAX muy interesante, donde expone a grandes rasgos que para implementar SOA la interoperabilidad es fundamental y AJAX pese a todas las demás opciones (Java, PHP y.Net, de Microsoft) que existen es un buen camino para lograrlo.

http://www.informationweek.com.mx/articulo-59-6490-373.html

Otro artículo interesante donde James Gosling resalta la interoperabilidad de JAVA y RUBY, además menciona un poco sobre AJAX.

http://searchsoa.techtarget.com/news/interview/0,289202,sid26_gci1215525,00.html

Es importante resaltar que estos artículos son muy viejos en dos años RUBY y AJAX han mejorado pero nunca esta demás saber un poco de historia…

Seguridad más...

Este es un artículo publicado en el año 2003 sobre seguridad en web services, habla sobre lo que sería el futuro de estos, bueno para esta época ya es el futuro, es una interesante lectura donde se relaciona la seguridad de web services con seguridad en general.

The Future of Web Services Security: A Conversation with Eve Maler

Interoperabilidad PHP WS - Java

Revisando la facilidad de comunicación entre php y java se encuentran problemas en los tipos de datos complejos, php normalmente interpreta correctamente los datos que recibe de java pero java presenta problemas al interpretar los datos complejos recibidos por java, situación que según algunos artículos ocurre de igual forma en aplicaciones cliente de java consultando web Service de php.
Algunos artículos donde se comentan errores son:
http://www.zoe.vc/2007/webservice-mit-php-server-und-java-client/?lan=english
http://forums.devshed.com/php-development-5/web-service-java-client-and-php-server-complex-data-types-548000.html
http://synodinos.net/2007/08/02/web-services-interoperability-fable-with-java-and-php/

Por lo tanto es recomendable probar previamente la correcta interpretación de ambos lenguajes del tipo de datos que se desea enviar-recibir, o utilizar solo tipos de datos básicos.

Diferencias entre diferentes frameworks de Web Services de PHP

A continuación, algunas de las características de los principales frameworks para trabajo con Web Services en PHP:

PHP5 SOAP:
  • Extensión nativa de PHP5
  • La implementación más rápida
  • Soporta SOAP 1.1 y 1.2, WSDL 1.1
  • EL WSDL debe ser creado manualmente
PEAR SOAP:
  • Puede ser usado en PHP4
  • Depende de extensiones PEAR
  • Escrito en PHP
NuSOAP:
  • Escrito en PHP, funciona en PHP4
  • El WSDL es generado "on the fly".
  • Hay problemas de choques de clases con PHP5
Fuente

Interoperabilidad - Caso de estudio

Encontré este artículo que nos muestra como definir un documento WSDL para alcanzar la interoperabilidad deseada al nivel de mensaje SOAP utilizando un caso de estudio. El autor discute ambos estilos de servicios web: RPC y document literal. El URL es:

http://www.ibm.com/developerworks/webservices/library/ws-soa-intersoap/index.html

Saludos,

Eduardo

Migrar código que usa DIME para enviar attachments a WSE3.0 con MTOM

Como mencioné en un aporte anterior Microsoft en su versión del WSE3.0 (Web Services Enhancements 3.0) no presenta el MTOM que es de suma utilidad para enviar archivos de gran tamaño, en el siguiente artículo que pongo de referencia, nos ayuda a migrar código en WSE2.0 que usa DIME a código WSE3.0 que usa MTOM:

Artículo: "How to: Migrate Code that Uses DIME Attachments to Use MTOM"
link: http://msdn.microsoft.com/en-us/library/aa529283.aspx

Allan

lunes, 15 de septiembre de 2008

Ajax en Java WebServices y Framework de WS de Scala

Un poco de desarrollo WS-Ajax en java (Muy clarito este paper de IBM)
http://www.ibm.com/developerworks/webservices/library/ws-wsajax/

Hay un framework para desarrollo web en Scala, aparentemente el más aceptado, sin embargo no está bien documentado. Vale recordar que es un lenguaje muy nuevo.
http://liftweb.net/index.php/Main_Page

Web Services y Dispositivos Móviles - MobiLink

Es común que dispositivos mobiles no tengan acceso a Internet en todo momento. Con este problema en mente, Sybase desarrollo el componente MobiLink (de SQL Anywhere). Este componente permite almacenar información de un web service en una base de datos relacional para que la aplicación cliente tenga acceso a ella cuando no se puede contactar el web service.

El siguiente articulo muestra un ejemplo sencillo de su utilización.
http://www.codeproject.com/KB/webservices/Mobilizing_Web_Services.aspx

Seguridad en Web services para dispositivos móviles

La seguridad en cuanto a el uso de webservices en dispositivos móviles es un tema no muy estandarizado.

Los dispositivos móoviles, dada la particularidad de que transmiten datos sobre redes públicas (y al aire), son susceptibles a diversos ataques que comprometen la seguridad de los datos. Agregar un esquema de criptografía, y por ende agregar "peso" a los paquetes transmitidos (ya sea aumentando el tamaño o el tiempo de procesamiento), comprometen la calidad del servicio.

Aquí, Blackberry Enterprise Services ofrece la estructura necesaria para establecer una comunicación segura entre el dispositivo móvil y el servidor, valiéndose de tecnologías de encriptado y transporte similares a los encontrados en VPNs. Además, aprovecha la tecnología del push, para optimizar la experiencia del usuario.

Sin embargo, ya un dispositivo celular normal no tiene mucho que hacer contra uno como el expuesto en el artículo. La seguridad en dispositivos celulares (de un rango de precios más bajo) sigue siendo un problema abierto.


Mas Informacion

Interoperabilidad

En esta publicación quiero hacer referencia a dos links que me llamaron mucho la atención esta semana, el primero se enfoca en las diferencias entre una misma tecnología que cambio de versión y que esto nos muestra como tambien cambio la forma de implementarse con servicios web. Esta tecnología es la del framework 3.0 de .net y su antencesor. Aquí se muestra una nueva visión que podemos analizar mejor en el proximo link.

http://www.desarrolloweb.com/articulos/958.php

Este segundo link es el mas directo que he encontrado referente al tema de interoperabilidad de java con .net en servicios web, este es un documento completo que realiza la comparación entre las dos tecnologías.

http://es.geocities.com/ntx_puntonet/ComparandoJ2EE.doc

sábado, 13 de septiembre de 2008

Mobile WS -Aplicacion

Hemos publicado varias entradas sobre frameworks y consideraciones técnicas sobre Web Services para dispositivos móviles, pero bueno: ¿ para que queremos tener esa capacidad en nuestros dispositivos?

Una aplicación que está experimentando un "boom" importante son los servicios móviles bancarios y financieros.  De acuerdo con reportes recientes, el "Mobile Banking" esta creciendo rápidamente y se esta volviendo cada vez más popular entre los usuarios jóvenes, dueños de Blackberries, iPhones y PocketPCs.  

En mi experiencia personal lo más cercando a "mobile banking" que he visto en el país es la información de estados de cuenta que el BAC San José envía por mensajes a mi celular. Sin embargo al indagar un poco en el sitio del BAC se puede ver que también se pueden hacer pagos de recibos y tarjetas de crédito. Sin embargo estos servicios funcionan por SMS nada más.

Un caso más interesante es el de Bank Of America, que si dispone de un portal web para dispositivos móviles con servicios bancarios variados:



Más estadísticas sobre el crecimiento del "mobile banking" aqui:





El desarrollo del "Mobile banking" dependerá en el futuro de aplicaciones seguras que utilicen WS en dispositivos móviles. Por esto es importante contar con estandares de seguridad y rendimiento más rigurosos para los dispositivos. 




martes, 9 de septiembre de 2008

Palm -

Si bien en el ultimo año palm a decidio migrar sus sistemas a Windows Mobile, todavia es comun encontrar equipos con el Palm O.S (antes llamado Garnet O.S.). El sistema operativo es bastantante simple y el SDK que se distrinuye para desarollo es para C unicamente.
A pesar de eser un ambiente simple de desarollo, El Garnet O.S sdk tiene un buena cantidad de librerias definidas para networking (incluido web services).

en el sitio de palm develpmente network se puede obtener este sdk. Para facilidad, se instala el IDE Eclipse modificado para utilizar un gcc modificado para producir binarios para el Palm O.S. Tambien se instalan emuladores de palm para prueba.

WSS en .NET... pero NO con WCF :)

Ciertamente soy un .net-ero :), y no niego que cuando me dicen "WS-Security"... lo primero que pienso es WCF en .NET 3.0+

Pero resulta que tambien para los Web Services "puros" de .NET, se les puede implementar el WSS... aunque con un poquito mas de trabajo (o no?), esto se puede lograr con los WS Extensions...


Notese que ya no es tan "bonito" como decir: "implemente seguridad... y utilice estos metodos de encripcion y demas"... sino que ahora hay que habilitar y configurar los Headers de SOAP que se utilizan para la negociacion de seguridad de Web Services

Interoperabilidad - Testing

El siguiente articulo nos muestra una serie de pasos a seguir para validar la interoperabilidad de nuestro WSDL.  Realmente el contenido del articulo es basico, pero seria lo minimo a hacer para asegurarnos la interoperabilidad entre plataformas.

http://www.exforsys.com/tutorials/sws/validating-interoperable-wsdl.html

Testing tools?

Ya existen una serie de herramientas que podemos utilizar para hacer nuestras validaciones:

  • http://www.ws-i.org/deliverables/workinggroup.aspx?wg=testingtools
  • http://www.developers.net/ibmshowcase/view/2841

Saludos,

Jose

Fortify

Todo bien, buscando sobre debelidades en web services me encontre con este producto, el articulo menciona ciertas vulnerabilidades que pueden existir en web services.
El articulo esta bien interesante.

Fortify 360

NuSOAP y algunas funciones de seguridad

NuSOAP ofrece algunas funcionalidades básicas para poder acceder a web services que tengan ciertos requerimientos de seguridad. A continuación, un par de ejemplos.

Si existe un Web Service que requiera autenticación HTTP, se puede utilizar la función setCredentials, como en el siguiente código:

$consumidor = new soapclient('http://serviciophp.com/servicios/servicio.php');
$consumidor->setCredentials('user', 'password');

También se puede acceder a un servicio que esté publicado a través de HTTPS, inicializando el soapclient de manera simiar:

$consumidor = new soapclient('https://serviciophp.com/servicios/servicio_https.php');

No obstante, es necesario instalar la extensión CURL de PHP para poder ejecutar este código con éxito.

Fuente: Professional Open Source Web Services.

Apache Rampart - Axis2 Security Module

Apache Rampart es un módulo para incorporar seguridad a los mensajes SOAP de acuerdo con los estándares del WS-Security Stack  .La última versión de Rampart incorpora los siguientes estándares:
  • WS - Security 1.0 ya comentada aquí
  • WS - Security 1.1
  • WS - Secure Conversation - February 2005
  • WS - Security Policy - 1.1 - July 2005
  • WS - Security Policy - 1.2
  • WS - Trust - February 2005
  • WS - Trust - WS-SX spec - EXPERIMENTAL
Es un módulo que se instala sobre Axis2 

Flex, PHP y WS

Recientemente hablando con un desarrollador me recomendó que investigara sobre Flex ya que permite una muy fácil interacción con php y podría brindar opciones muy viables a la hora de desarrollar un Web Service con php.
Flex es una plataforma de Acrobat para desarrollo web, bastante sencilla y utilizada.
Asi que rápidamente realice una pequeña búsqueda con muy buenos resultados, ya que existen muchos ejemplos y aportes de la integración de estas 2 tecnologías.
Algunos ejemplos sencillos y prácticos.

http://www.flexer.info/2008/02/17/flex-and-php-web-service/
http://www.phpbuilder.com/columns/daniel_williams20071005.php3
http://manfred.dschini.org/2006/12/29/consuming-php-soap-webservices-with-flash-part-i/
http://manfred.dschini.org/2007/02/23/sharing-complex-objects-between-php-and-flash-part-ii/
http://manfred.dschini.org/2007/10/09/php-and-flex-part-iii/

Swordfish

The Eclipse project tiene un projecto de un framework generico para desarrollar SOA. La idea es poder integrar varias tecnologias de manera intercambiable. Esta en fase de "incubacion" por el momento:

Swordfish

Proposal

Attachments Axis MTOM

Entre las diferentes formas de enviar attachments, esta la MTOM y para la implementacion de apache axis esta es la forma. para mencionarlo en la exposicion esta interezante, pero no sabemos aun si se implementaria codigo de prueba. principalmente al ser de la nueva especificacion de axis2

http://ws.apache.org/axis2/1_2/mtom-guide.html

WS moviles - Nokia

Si bien cuando se piensa en WS para dispositivos moviles los primeros aparatos que saltan a la mente son los Pocket PCs y Blackberries, resulta que Nokia tambien se ha dedicado a soportar WS y crear frameworks para ello.

Lo interesante en el caso de Nokia es que ademas de soportar las tecnologias "tradicionales" de WS en Java, tambien posee un framework para crear Web Services para codigo C++ Symbian.

Este sitio contiene mucha informacion para desarrolladores interesados en utilizar WS en dispositivos Nokia:

http://www.forum.nokia.com/main/resources/technologies/web_services/

lunes, 8 de septiembre de 2008

Interoperabilidad - Understanding the WS-I Test Tools

En el siguiente artículo de developerWorks, el autor nos presenta una introducción a las herramientas proporcionadas por WS-I, conocidas como WS-I Test Tools, que nos brindan una forma rápida y fácil para determinar si nuestros servicios siguen los lineamientos definidos en WS-I Basic Profile:

http://www.ibm.com/developerworks/webservices/library/ws-wsitest/

El artículo describe la arquitectura básica de Test Tools, el cual consiste de dos herramientas principales:
- monitor
- analizador

Saludos,

Eduardo

Adjuntos en mensajes SOAP usando DIME y WSE 2.0

Para la presentación de servicios web con adjuntos voy a utilizar como base el siguiente artículo el cual usa el WSE 2.0 para ajuntar archivos en mensajes SOAP con DIME/

How to: Add Attachments to a SOAP Message by Using DIME
link: http://msdn.microsoft.com/en-us/library/ms824597.aspx

domingo, 7 de septiembre de 2008

Servers WS en Ruby

Un resumen de lo que se requiere para crear servers de WS en rails:
Rails viene con un componente llamado ActionWebService (AWS) que hace el hosting de WS en SOAP y XML-RPC, permitiendo que los métodos estén disponibles asociando los WS a clases controllers de la aplicación RubyOnRails. Se encarga de muchos detalles técnicos como parsear los XML request y crear el XML response, y crear un WSDL adecuado para el servicio SOAP

Los pasos para crear servers en Rails son:
1. Determinar el modo de dispatch (Directo, Delegado, o en capas).
2. Crear un API con el detalle de los métodos.
3. Crear los métodos en el controlador

Ahora... a intentar programarlo!!!

sábado, 6 de septiembre de 2008

WS en AJAX

Sin duda la posibilidad traer los datos del servidor a través del webservice sin hacer postback de la página, es una gran ventaja de AJAX aquí pongo un artículo muy completo de cómo implementarlo:

http://www.tecnoshare.com/TecnoBlog/Lists/Entradas%20de%20blog/Post.aspx?List=01b86d9a-d150-44f8-885f-2dab83a12b1c&ID=8

viernes, 5 de septiembre de 2008

Interoperabilidad

Tenemos dos trabajos que permiten darnos cuenta de los esfuerzos que se han hecho para poder lograr lo que se llama interoperabilidad de servicios web. En ambos articulos se muestran consejos y tecnicas para poder lograr esta interoperabilidad que se busca con los web services.

Guía de Interoperabilidad de Servicios Web (WSIG): BEA WebLogic 8.1 SP3 (8.1.3)
http://www.microsoft.com/spain/interop/developers/wsinteroprecsbea.mspx

Interoperabilidad con Patrones de Intercambio de Mensajes creados con BEA WebLogic 8.1.3
http://www.microsoft.com/spain/interop/developers/beaconvwebservices.mspx

martes, 2 de septiembre de 2008

NuSOAP: dos modos de llamado a un servicio.

PHP es un lenguaje que ofrece facilidades de programación por objetos, pero que no impone este paradigma de manera estricta.  De cierta forma se podría decir lo mismo con el NuSOAP y las dos maneras que ofrece de consumir Web Services.

La primera de ellas tiene, de cierta manera, un enfoque más funcional:

$result = $service->call('metodo', $parametros);

Donde $service es una instancia de tipo soap_client, y metodo es un servicio definido en algún lugar.

La otra se asemeja más a frameworks como Axis, y provee un objeto que permite hacer llamadas remotas, ocultando la lógica de Web Services por debajo.  Este objeto es conocido como proxy.

Así, se puede tener código como:

$proxy = $service->getProxy();
$proxy->metodo($argumentos);

WCF - Encrytion

Siguiendo con la seguridad en WCF me encontré este Thread bien interesante donde hablan sobre un problemilla que se da al utilizar la encripción con WCF. Parece ser un feature gratis de Microsoft.

Encrytion in WCF

La seguridad en "web services": entre la incertidumbre y la sobreinformación

En este artículo Roberto López Navarro, expone sus argumentos sobre cómo el debate sobre la seguridad en web services es un tema relativamente reciente y en disputa entre los que proponen estándandares y como dicha batalla aún no ha terminado

Archivo PDF

Articulo: envio de datos sin usar attachments

Aunque el tema esta enfocado a utilizar attachments, no siempre la solucion propuesta es funcional, a veces hacer las cosas de otra forma distinta ayuda.
en este articulo "
Web services programming tips and tricks: Send binary data without using attachments" (http://www.ibm.com/developerworks/webservices/library/ws-tip-noattach.html)
exponen ideas de como enviar archivos en otras formas,
como los protocolos utilizados anteriormente como el DIME (http://msdn.microsoft.com/en-us/magazine/cc188797.aspx) y uno reciente como el MTOM (http://www.crosschecknet.com/intro_to_mtom.php) . tambien muestra un envio de forma binaria puramente, que puede funcionar en casos especiales. el articulo presenta un codigo con la interorperabilidad en java y .net de esta solucion. para nuestro caso solo posibles implementaciones se puede mencionar.







RE: WCF Security

Republico eseta informacion... por si alguien no llego a leer mi comentario al post "WCF Security" de jr.

Vale la pena recalcar que, aunque personalmente soy un "chico .NET" :) definitivamente .NET WS ni WCF son la unica solucion que implementa Web Services ni WS-Security.

Encontre este link por ahi:
http://xfire.codehaus.org/WS-Security
Es un ejemplo de una implementacion de esta tecnologia.

Tambien hay publicaciones de otras empresas importantes acerca de como implementar WS-Security (ya sea en sus tecnologias o no):
http://www.ibm.com/developerworks/webservices/library/ws-security.html
http://msdn.microsoft.com/en-us/magazine/cc163570.aspx

Encontre aqui una explicacion, creo, bastante clara de la arquitectura de seguridad en .NET para Web Services (WCF):
http://msdn.microsoft.com/en-us/library/ms788756.aspx

Y aunque el link parece estar muerto :S me encontre un site que pareciera poder tener mucha informacion muy util tanto para WCF como para el resto de .NET 3.5
http://wcf.netfx3.com/

- mmorales

WS en PHP y WebSphere

Como ya se había comentado Web Sphere es una plataforma propietaria de IBM, que cuenta con un modulo que brinda soporte a php, dicha plataforma esta enfocada a java por los cual este modulo es bastante interesante, en este enlace se discute de esta integración de las ventajas y desventajas que podría presentar.

http://krook.net/archives/160

Daniel Krook quien asegura tener experiencia en utilizar php y Web Sphere y es un Especialista en IT certificado por IBM nos menciona aspectos por tomar en cuenta a la hora de hacer la integración de estas tecnologías, algo en lo que al parecer IBM a estado trabajando.

Habilitar un servicio web para enviar archivos adjuntos grandes

En esta referencia se aprecia como podemos implementar -usando WSE 3.0- el envío y recepción de archivos adjuntos de gran tamaño en un servicio web, usando MTOM.
Artículo: "How to: Enable a Web Service to Send and Receive Large Amounts of Data"Referencia: http://msdn.microsoft.com/en-us/library/aa528822.aspx

Interoperabilidad - Java, Netbeans 6.1, .NET 3.0

http://netbeans.dzone.com/news/advanced-web-service-interoper?page=0%2C0

Este articulo explica paso por paso la creacion de un web service haciendo uso de las ventajas de Netbeans IDE 6.1 asegurandose la interoperabilidad con Microsoft .NET 3.0.

El siguiente es el resumen del articulo:

This article is intended for programmers who are interested in adding additional qualities to their services, clients, or SOA solutions, as well as for beginners in Java web service development. You will learn how to use NetBeans IDE 6.1 to develop Java web service clients and services that can interoperate with Microsoft .NET 3.0 clients and services, how to use encryption and signatures to protect confidentiality and integrity of message transmission without need for SSL, and how to use Reliability features to ensure that none of your application messages are lost or delivered twice.

Saludos,

Jose

Clientes WS en Ruby

Ruby on rails nos permite crear clientes de WS basados en arquitecturas REST, SOAP y XML-RPC. Aparentemente es muy sencillo y requiere algunas bibliotecas que se cargan automáticamente con Rails (por ejemplo: clientsCGI, NET, REXML, Soap4r, XSD, and XML-RPCare).
Luego de haber instalado InstantRails pude explorar un poco la estructura de directorios de las aplicaciones web de ruby on rails, los fuentes se colocan en la ruta ...\\rails_apps\\app\ donde se recomienda que agrupe archivos con una funcionalidad similar (i.e. controllers, views, helpers).
Estoy utilizando unos ejemplos de los libros que mencioné mi post pasado para familiarizarme con el framework. A continuación, y a manera de ilustración, copio el código necesario para consultar un WS de yahoo con REST:

...
Once you have your developer key, we're ready to build a simple controller (saved as code_controller.rb in the app/controllers folder):

class CodeController < ApplicationController
def yahootest
query = CGI.escape("SEARCH TEXT") # URL-encoded search value
yahookey = "YOUR YAHOO DEVELOPER KEYs # Your Yahoo! dev key
url = "http://api.search.yahoo.com/" + # The URL to the Yahoo!
"WebSearchService/V1/webSearch?" + # Search service
"appid=#{yahookey}&query=#{query}" +
"&results=3&start=1"
result = Net::HTTP.get(URI(url)) # make the actual HTTP request
@doc = REXML::Document.new result # turn the results into a
# REXML document
end
end

Then we build a view that displays the search results in a simple view. Save the following code in a file called yahootest.rhtml in the app/code/views folder:

<% @doc.root.each_element do |res| %>
<b>Title:</b> <%= res[0].text.to_s %><br>
<b>Summary:</b> <%= res[1].text.to_s %><br>
<b>Link:</b> <a href="<%= res[2].text.to_s %>"><%= res[2].text.to_s %></a>
<br><br>
<% end %>

Believe it or not, we're done. In just a few short lines of code, we've built a complete web service client for your Rails application. You should be able to test your application with your local version of Webrick at the URL http://localhost:3000/code/yahootest.
...

Sencillo, vamos a ver como me va... =P

lunes, 1 de septiembre de 2008

Perspectivas de webservices en dispositivos móviles

Alejandose un poco de detalles tecnicos, he aqui un articulo que trata de justificar la importancia de los servicios web moviles en la vida (empresarial) moderna, y expone un par de ejemplos de aplicaciones reales que los utilizan: SAP y Siebel.

A la vez, se expone la dificultad de brindar el servicio a el 100% de los dispositivos existentes, dada la gran variedad de modos de acceso a la red que tienen. A pesar de esto, dado el crecimiento de los dispositivos que pueden acceder a Internet, y dado el auge de los webservices en distintas plataformas (Java, .Net), el artículo trata de predecir la evolución próxima de las aplicaciones móviles orientadas a webservices.

[Artículo completo]

Interoperabilidad - Tutorial en developerWorks de IBM

En la comunidad developerWorks de IBM, se encuentra disponible el artículo "Understanding Web Services specifications, Part 6: WS-Interoperability", publicado el día 25 de abril de 2007 por Manas Mandal y Herman Silberman.

Este tutorial nos enseña acerca de los problemas de interoperabilidad en web services con un enfoque muy práctico. En general, explica la naturaleza y origen de los problemas de interoperabilidad y nos introduce "WS-I Basic Profile" (desarrollada por Web Services Interoperability Organization), el cual es un conjunto de guías y mejores prácticas para lograr una interoperabilidad óptima.

Me parece que este material es muy completo y actual (muy importante). El enlace es el siguiente:
http://www.ibm.com/developerworks/edu/ws-dw-ws-understand-web-services6.html

Para poder acceder al material completo, debemos registrarnos de forma gratuita.

Saludos,

Eduardo

Web Services y Dispositivos Moviles - Nokia Web Service Framwork

Buscando información sobre las diferentes plataformas sobre las que se pueden implementar los web services. Encontre referencia al Nokia Web Service Framwork. Este framwor provee un API para desarrollar web services compatibles con J2ME Web Services Specification y C++ para el Symbian OS S60.

Me parece interesante que Nokia desarrolle su propia solución para la implementación de web service y que esta se pueda utilizar en otros aparatos que utilicen el Symbian OS (gran cantidad de celulares de marcas como Nokia, Sony Ericsson, Samsung y Panasonic entre otros.)