martes, 21 de octubre de 2008

Interoperabilidad - Documento Final

Pueden revisar el documento de la investigación Interoperabilidad - Java .NET en sus correos.

Saludos,

Eduardo

Exposicion de WS Security

Estamos pensando en concentrarnos en lo siguiente:

Aunque la exposicion sera de WS-Security, vamos a concentrarnos principalmente en la implementacion con Microsoft WCF.

Durante la exposicion, vamos a presentar como implementar seguridad en un Servicio de WCF basado en Web Services y usando WS-Security en los siguientes escenarios:
  • Como implementar seguridad de mensajes utilizando PKI (PKI, Certificados Digitales).
  • Como implementar firma digital o encripcion de mensajes.
Importante para todos:
Si no estan familiarizados con los terminos:
  • Firma Digital
  • Certificado Digital (X.509)
  • Encripcion asimetrica
  • PKI
Les recomendamos repasar o estudiarlos antes de la exposicion, pues no vamos a cubrir los conceptos teoricos de la teoria o infraestructura de PKI.

- mmorales

Avance de exposicion y algunas dudas con attachments

Como primer punto para la exposicion, la idea era manejar interoperabilidad entre los diferentes tipos de envios como lo son DIME y MTOM. para el primero, tuvimos pruebas satisfactorias de subir archivos y descargar archivos del mismo, pero en el caso de MTOM no he encontrado un ejemplo claro de como enviar archivos entre axis y .net por lo que solo mantendriamos en la exposicion la demostracion de envio pero creo que no podamos hacer la interaccion, por lo pronto solo puedo asegurar que encontre un ejemplo con servicios creados para ambas tecnologias, y como interactuan, pero piden el reemplazo de unos paquetes que aun estoy probando. Si resulta satisfactorio tal vez haremos la demostracion
como ultimo post solo algunas preguntas que hicieron acerca de attachments escritas en este enlace, http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=51&t=005513
donde se ven algunas interrogantes al manejarlos, cabe recalcar como la primera el como maneja el servidor los archivos temporales que estan involucrados mientras se hace el proceso de transmision del servicio web.

Web Services y Dispositivos Moviles - .Net

He seguido con el testing de consumir Java Web Services en un cliente en .Net compact framework.
Solo he intentado con el paso de hileras y no he tenido mayores problemas.
Espero que montemos el web service final para la exposición para probar con él.

Aplicacion de prueba para web services -cont.

La idea seria usar Axis en el lado del servidor para no complicarse mucho la vida. Publicar metdos basicos de la calculadora: sumar, restar, multiplicar y dividir.

Como se menciono se utilizara JAX-RPC en el lado del Blackberry. En este momento tengo dos emuladores, el del modelo 8120 y el 9000, el BB mas nuevo. Con el simulador MDS se pueden conectar a localhost, donde estan los servicios de Axis.

Tambien investigando el API de Blackberry para presentar la calculadora en el dispositivo decentemente.

Seguridad - Nada que decir

Este titulo es para hacer juego con el anterior post :)
Ayer tuvimos examen del otro curso por lo que se ha echo bastante complicado trabajar en la exposición, si Dios quiere a partir de mañana podremos trabajar fuerte en ella.

Saludos,
Jr

Interoperabilidad - Algo que decir...

Encontre algo que decir, estaba viendo las diferencias entre JAX-RPC y su sucesor JAX-WS. Entre muchas de las interesantes caracteristicas de JAX-WS encontre que incorpora varios lineamientos de WS-I:

WS-I Basic Profile 1.1
WS-I Attachments Profile 1.0
WS-I Simple SOAP Binding Profile 1.0

Lo anterior, hasta cierto punto nos garantiza un mayor grado que interoperabilidad. Seria bueno averiguar si Axis2 tambien esta incorporando estos estandares.

Saludos,

Jose

Interoperabilidad - Exposicion

Nada que decir, hoy exponemos. Tan tan!

Para no terminar mi aporte de forma tan abrupta les cuento que la exposicion basicamente tendra 3 partes bien definidas: Introduccion, WS-I (Basic Profile) & Proyecto Tango, y finalmente un par de ejemplos.

Saludos,

Jose

lunes, 20 de octubre de 2008

Ruby-RoR-Ws

Un resumen bastante bueno para comprender tanto Ruby, como Rails y WS en RoR lo encontramos en:

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

Para el desarrollo en Rails es muy importante el modelo MVC pues dependiendo de la funcionalidad de las clases así serán ubucadas en carpetas. Acordemonos que Rails trabaja bajo el concepto de "Convention over configuration".

a) Para el acceso a BB contamos con ActiveRecords = Object relational mappings

b) Podemos definir un controller de la forma
class ConferenceController < ApplicationController

def index
render_text “Welcome to ConfApp”
end

def list
@conference_page, @conferences = paginate :conferences, :per_page => 10
end
def new
@conference = Conference.new
end

def show
@conference = Conference.find params[:id]
end

#...
end

c) Las vistas se desarrollan con archivos .rhtml que son similares a los jsp y asps. Cada controlador tiene una carpeta para sus vistas.

d) Action Web Services nos proporciona Server-side support para SOAP y XML-RPC Web services. Soporta WSDL (no en su totalidad)

Aplicacion para prueba de webservices

Como parte de la exposicion de dispositivos moviles, se implementara el tipico webservice de Calculadora (que se usa como ejemplo muy comunmente).

Para consumir este servicio se utilizara el API de J2ME soportado por el dispositivo, que incluye una version reducida de jax-rpc. Las pruebas, dado que no tenemos un dispositivo blackberry real, se haran con emulador.

De ser posible, dado que el servicio es en realidad sencillo, puede explorarse la posibilidad de hacer el mismo cliente pero para palm (con el api de .net), o, por que no, con un gateway sms... en este ultimo (y remoto caso), se probaria con un emulador de sms propiamente (logica smpp)

Exposición Web Services con Adjuntos

Dentro de la agenda de exposición como comenta Jeffry hablaremos de MTOM, pero primero hablaremos de la implementación con DIME, en el lado de .NET utilizaremos Visual studio 2003 o 2005 con WSE 2.0, tanto para el server como para el cliente, luego desmostraremos la interoperatividad con Java en Axis (y al igual que en .Net haremos un servidor y un cliente).

Una vez hecho esto migraremos el código con WSE 2.0 a WSE 3.0 usando Visual Studio 2005, con el objetivo de use MTOM y probaremos su funcionabilidad. Una vez hecho probaremos la interoperatividad que como lo comenta Jeffry se ha tenido problemas.

Para el momento de la exposición ya tendremos un mayor avance.

Allan

miércoles, 15 de octubre de 2008

Interoperabilidad

Cuando se habla de interoperabilidad en servicios web, se tiene el concepto de que la simple tarea de poder comunicar dos tecnologías como .Net y Java es suficiente para que haya interoperabilidad entre las partes. Sin embargo muchas de las características más importantes para el cliente no se cumplen.

El proyecto Tango es una iniciativa de Sun para crear Interoperabilidad entre Java y .Net, y se ha utilizado Windows Comunication Foundation, para interactuar con los servicios web en la plataforma de .Net 3.0.

El proyecto Tango enfatiza su trabajo en tres aspectos de suma importancia para el uso de servicios web. Estas tres tecnologías son: Seguridad, Confiabilidad y Transacciones.

El motivo principal de la creación del proyecto Tango se divide en dos puntos muy precisos, los cuales son:
· Una implementación de las especificaciones clave de los servicios web (WS-*). http://wsit.dev.java.net/specification-links.html

· Interoperabilidad con el framework 3.0 de .NET.

martes, 14 de octubre de 2008

WS-I Testing Tools V1.1

Ya en posts anteriores he hecho referencia a la organización WS-I y sus herramientas de verificación de interoperabilidad http://www.ws-i.org/. En resumen, tenemos que los autores del WS-I Basic Profile querían proporcionar una manera sencilla de asegurar la compatibilidad con esta especificación. Así es como crearon un conjunto de herramientas para que los desarrolladores puedan verificar que los artefactos generados fueran conformes al Basic Profile.

Este conjunto de herramientas está conformado por:
- Monitor: intercepta mensajes hacia y desde un servicio Web
- Analizer: inspecciona varios artefactos de servicios Web (incluyendo los mensajes interceptados por la herramienta Monitor)

Es importante mencionar que existen implementaciónes en Java y C# y, como parte de nuestra exposición, nos gustaría mostrar la forma de incorporar y utilizar estas herramientas en nuestros proyectos.

Por ejemplo, a continuación se muestran los pasos para la utilización de la implementación C#.

En primer lugar, descargaremos las herramientas "Interoperability Testing Tools V1.1" de la página del WS-I. En la carpeta "common/profiles" se encuentran los archivos correspondientes para cada perfil. Nosotros vamos a usar el fichero "BasicProfileTestAssertions.xml" para comprobar que cumplimos con el perfil básico.

En la carpeta "cs/bin", editamos el archivo "monitorConfig.xml" para configurar la herramienta de monitorización:
- Con la etiqueta indicamos el puerto en el que la herramienta escuchará las peticiones al servicio web que vamos a comprobar.
- Con la etiqueta indicamos el host y puerto real del servicio web.

Los demás valores podemos dejarlos tal y como vienen por defecto. De esa forma, la herramienta reenviará todos los mensajes recibidos en el puerto indicado en listenPort al host y puerto indicados en schemeAndHostPort y guardará todos estos mensajes en un fichero "tracelog.xml" que usaremos más adelante.

Una vez completada la configuración, ejecutamos la herramienta "monitor.exe" para comenzar a monitorizar.

A continuación tenemos que crear un archivo WSDL modificado para que la URL donde el cliente vaya a buscar el servicio Web se encuentre en el host y puerto donde tenemos escuchando a la herramienta "monitor.exe" en lugar del host y puerto real, por lo demás, el archivo WSDL es igual. La herramienta "monitor.exe" se encargará de redireccionar las peticiónes que reciba al host real que hemos indicado antes en el archivo de configuración y de paso monitorizará todos los mensajes intercambiados en el proceso, que quedarán almacenados en el archivo "tracelog.xml".

Después de alguna llamada al servicio Web que pase a través del monitor ya tendremos unos cuantos mensajes en el archivo de logging, así que podemos cerrar la herramienta de monitorización.

A continuación editamos el archivo"analizerConfig.xml" para configurar la herramienta de análisis:
- Con la etiqueta indicamos el nombre del puerto del servicio Web.
- Con la etiqueta indicamos la dirección del archivo WSDL.

Si dejamos los demás valores tal y como vienen por defecto, la herramienta utilizará los mensajes almacenados en el archivo "tracelog.xml" y el archivo "BasicProfileTestAssertions.xml" para hacer las pruebas.

Finalmente ejecutamos la herramienta "Analyzer.exe" para conseguir el archivo "report.xml" que contiene los resultados de los tests.

Saludos,

Eduardo

Exposicion: Posibles caracteristicas a Comparar.

Para tratar de comparar estos Frameworks, open source que soportan web service en php se debe tratar de compara la facilidad de programacion, instalacion, uso, entre otros aspectos basicos, pero comparar caracteristicas especiales es importate, para ello podemos buscar que caracteristicas especiales nos ofrecen:

El WSO2 para php cuanta con la siguiente pagina con caracteristicas especiales:
http://wso2.org/project/wsf/php/2.0.0/docs/features.html

Mientras que al buscar para NuSoap esto fue una de las pocas cosas encontradas:
http://phpwebservices.blogspot.com/2008/01/nusoap-feature-list.html

El hecho que aparentemente sea mas sencillo puede ser ampliamente compensado con un excelente desempeno en las caracteristicas basicas.

Webservices ASP.NET 3.5 AJAX

Este articulo explica como usar webservices en ASP.NET 3.5 en ambiente AJAX y como llamar un servicio web del lado del cliente.

http://www.codedigest.com/Articles/ASPNET/52_ASPNET_35_AJAX_and_WebServices__.aspx

Exposición: algunos detalles de los servicios a implementar

Para la exposición se planea crear una serie de servicios utilizando los diferentes frameworks escogidos para trabajo con Web Services en PHP. Para facilidad de pruebas y para una mejor comprensión del código que se presentará, se decidió hacer una clase base que contiene 3 métodos que se van a publicar como servicios. Esto nos permitiría, además, hacer pruebas de "interoperabilidad" entre los diferentes frameworks.

El código de la clase es el siguiente:




abstract class DateWebService{

protected function getDateString(){
return date("H:i:s, l F d Y");
}

protected function getDateStruct(){
$dateStruct;
$dateStruct['time'] = date("H:i:s");
$dateStruct['date'] = date("F d Y");
$dateStruct['dayofweek'] = date("l");
return $dateStruct;
}

protected function getDayOfTheWeek($day, $month, $year){
$timestamp = mktime(0,0,0,$month,$day,$year);
if($timestamp == false){
return false;
}
else{
return date("l", $timestamp);
}
}


}

?>

Se pretende así tener una base de un método que sólo devuelva un tipo simple (string), uno que devuelva algo más complejo (arreglo), y uno que reciba parámetros.

Si no se pudiera publicar los métodos de una clase, se recurriría a hacer una función con la misma implementación.

Seguridad Web Services Exposicion

Todo bien,
Lastimosamente no he tenido chanse de trabajar en la exposicion esta semana.
Hasta el momento lo que se tiene definido es hacer dos pequeños demos, utilizando Visual Studio 2005 y 2008 Team System Edition.

Se esta pensando en usar maquinas virtuales para correr las aplicaciones en dos maquinas en la misma maquina fisica; pero aun no se tiene completamente definido, la otra opcion es tener un par de laptops y montar el demo entre ellas.

Saludos,
jr

Temas iniciales de la exposicion

Para la exposicion se desea mostrar los diferentes tipos de attachments, entre los que recalcamos mime, dime, mtom, para la demostracion en la exposicion, la interoperabilidad entre java .net para los protocolos mime y dime funcionan perfectamente, pero para el caso de mtom, presenta especificaciones especiales que pueden hacer que los servicios no tengan interoperabilidad, en parte se debe a lo reciente del protocolo mtom, por lo pronto en esta pagina encontramos un ejemplo de codigo de mtom, ya que esta hecho en apache axis2 mostraremos una forma de motarlo facilmente, ya que la exposicion esta orientada mas a attachments mas que a tecnologias.


Codigo de MTOM
http://www.java2s.com/Open-Source/Java/Web-Services-Tools/Axis2/AXIS2-Examples/mtom/Catalogmtom.htm

Breve intro a Ruby y RoR

Como parte de nuestra exposición presentaremos una breve introducción a Ruby y RoR. A continuación un extarcto de dicha sección.

Ruby:
- Creado por Yukihiro "Matz" Matsumoto, liberado en 1995.
- Es gratis.
- Lenguaje orientado a objetos, interpretado, reflexivo.
- Gramática compleja pero muy expresiva.
- Las variables son de tipo dinámico.
- Posee una biblioteca “core” y un poderoso API.
- Case sensitive.

Se puede bajar Ruby de http://www.ruby-lang.org/es/
La instalación contiene ejecutables (interprete y otras herramientas), bibliotecas, Gems (el administrador de actualizaciones y nuevas herramientas), los fuentes de Ruby y ejemplos.
Con Ruby instalado creamos un ejemplo creando una clase en el archivo Test.rb

#Una clase
class Persona
#Constructor
def initialize (nombre, apellido)
#Con @ variables de instancia
@nombre = nombre
@apellido = apellido
end
#Metodo
def saludar
puts("Hola, yo soy #{@nombre} #{@apellido}")
end

end

#Herencia con '<'
class Juan < Persona
#Constantes en MAYUSCULA
SEXO = "Masculino"

def initialize (edad)
super("Juan", "Perez")
@edad = edad
end
#métodos de acceso
attr_reader :SEXO #get
attr_accessor :edad #get y set

end

juan = Juan.new(20)
juan.saludar()
puts("Tengo #{juan.edad} años y mi sexo es #{juan.SEXO}")


Se ejecuta el comando >Ruby Test.rb
Hola, yo soy Juan Perez
Tengo 20 años y mi sexo es Masculino


Un buen tutorial se encuentra en la página http://rubytutorial.wikidot.com/

Ruby on Rails (ROR):
- Framework para desarrollar aplicaciones web con base de datos en lenguaje Ruby (http://www.rubyonrails.org.es/).
- Es Gratis.
- Estructura las aplicaciones bajo el patrón Model-View-Controller.
- Herramientas como InstantRails ya traen un ambiente ROR integrado con un servidor web y un motor de base de datos
- La estructura runtime de aplicaciones de RoR es:

README #Información de la instalación y uso
Rakefile #Script para conrtruir
app/ #Archivos de model, view, and controller van acá.
app/controllers
app/helpers
app/models
app/views/layouts
components/ #Componentes reutilizables
config/ #Configuration and database connection parameters.
db/ #Schema and migration information.
doc/ #Documentacion autogenerada
lib/ #Bibliotecas compartidas
log/ #Log de la aplicación
public/ #La aplicación corre desde acá. Acceso público.
script/ #Scripts utilitarios.
test/ #Diferentes test
tmp/ #Archivos temporales de runtime.
vendor/ #Código importado.

lunes, 13 de octubre de 2008

WS en un Blackberry

La idea para la exposición es incluir un ejemplo de un cliente consumiendo un Web Service en un simulador de Blackberry.

Para empezar a jugar con el desarrollo en BB descargué el Blackberry JDE 4.3.0, que funciona con Java 1.5. El JDE incluye un simulador para el modelo 8120, y además bajé un simulador para el modelo más reciente, el 9000. Importante destacar que para acceder a Internet desde el dispositivo simulado hay que correr un simulador de servicios MDS (incluido en el JDE o también puede bajarse por aparte). Este simulador arranca una especie de versión modificada de tomcat para RIM, que escucha en el puerto 8080.

El JDE trae varios ejemplos de aplicaciones, entre ellas un clásico Hello World. Estas permiten ver un poco como funciona el API de RIM para sus dispositivos.

Ahora para el desarrollo de un cliente que pueda consumir Web Services en el BB se utiliza el J2ME WS API soportado por el dispositivo. J2ME incluye una versión reducida de JAX-RPC que permite desarrollar clientes de WS.

El cliente de WS en el Blackberry se desarrollará basándose en estos dos artículos:

http://developers.sun.com/mobility/apis/articles/wsa/
http://developers.sun.com/mobility/midp/articles/webservices/

Acerca de la presentación de web services con adjuntos

En cuanto a la demostración de código en .net usando DIME, nos basaremos en el siguiente artículo:
How to: Add Attachments to a SOAP Message by Using DIME
http://msdn.microsoft.com/en-us/library/ms824597.aspx

Para luego demostrar como podemos usar MTOM (Y nos basaremos en este artículo)
How to: Migrate Code that Uses DIME Attachments to Use MTOM
http://msdn.microsoft.com/en-us/library/aa529283.aspx

La idea es crear un servidor web en .Net y en Java que permita recibir y enviar archivos de imágenes y con un método que entregue la lista de archivos disponibles.

Y además crear un cliente en .Net y en Java que consuma dichos servicios sin importar si son implementados en .Net o en Java

Saludos

Interoperabilidad

Con respecto a esta publicacion se puede decir que se tiene el proyecto Tango de Sun para hacer una arquitectura compatible con el framwork 3.0 de .NET, y como esto va a ir evolucionando hacia el 3.5 y continuar mejorandolo.

Aqui se muestra la participacion de SUN con el proyecto Tango en el plug fest de interoperabilidad de microsoft.

http://blogs.sun.com/arungupta/tags/plugfest

martes, 7 de octubre de 2008

Interoperabilidad

En este articulo se presenta como se puede definir una arquitectura para interoperabilidad sin caer en problemas o tropiezos.

http://www.sei.cmu.edu/isis/guide/engineering/architectures.htm

http://www.soa.com/index.php/section/solutions/interoperability/

Este trata interoperabilidad mas aterrizado a Java y .Net con servicios.

http://www.infoq.com/articles/REST-INTEROP

Detalles sobre exposicion de SOA y PHP

Para profundizar sobre lo que expuso el compañero Christopher, para la investigación sobre SOA y PHP el plan es implementar una serie de servicios y consumidores en PHP, y además, hacer algunas pruebas de interoperabilidad con clientes y servicios escritos en otros lenguajes.

Las tecnologías a utilizar son:
La exposición tratará de exponer las principales características de cada uno de estos frameworks, de una manera comparativa. También, resultaría importante una explicación sobre el proceso de instalación de las mismas en el contexto de un PHP ya instalado.

En cuanto a prática, la idea es escribir servicios simples que ilustren las capacidades particulares de cada framework. Por ejemplo, WSO2 es el único de los frameworks seleccionados que soporta -según los features en su website- el uso de attachments, por lo tanto sería ideal ilustrar dicha funcionalidad.

Una posibilidad sería tratar de integrar los clientes y servicios empleados en los laboratorios del curso como una prueba de interoperabilidad. .NET debería ser otra plataforma a considerar para dichas pruebas.

Interoperabilidad - Exposición

Nos gustaría introducir el tema de interoperabilidad Java .NET con un repaso de los desafios que enfrentan los negocios hoy en día y hacen necesaria la interoperabilidad e integración de sistemas heterogéneos.

A continuación, una descripción breve de las diferentes tecnologías que permiten la interoperabilidad entre las plataformas Java y .NET. Recordemos que web services es únicamente una de las muchas tecnologías existentes.

A partir de este punto, la investigación se enfoca en web services. Existen dos metodologías de integración que necesitamos explorar:
- Sincrónica
- Asincrónica

Para cada una de las anteriores, se hará una descripción de los detalles de implementación de web services en ambas plataformas Java y .NET, los patrones de diseño conocidos, ejemplos, mejores prácticas, etc. Asímismo, vamos a estudiar las recomendaciones propuestas por la organización WS-I y utilizaremos la aplicación de ejemplo Supply Chain Management.

Por último, debemos cubrir lo relacionado con los requerimientos de calidad de servicio e.g. seguridad, confiabilidad, escalabilidad. Para esto, estudiaremos el Project Tango.

Entre las fuentes bibliográficas consultadas, debemos resaltar las siguientes:
- Java EE and .Net Interoperability: Integration Strategies, Patterns, and Best Practices por Marina Fisher, Ray Lai, Sonu Sharma, Laurence Moroney
- SOA Cookbook por Eben Hewitt

Saludos,

Eduardo

DataHandler para attachments

Para el envio de archivos por web, se utliza ahora en java una clase llamada Datahandler, que vienen en el paquete de javax.activation, una pequeña explicacion viene en este enlace de ibm. http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_developer.doc/doc/data_handler/datahand21.htm

en si mismo consta de una clase que encapsula que presenta la interfase basica de envio de archivos en cualquie protocolo ya sea jms, http, o por correo. esta es la base para el envio de archivos por web en cualquier tecnologia java, mas abajo seria enviar arreglos de bytes. es usado principalmente por por la api de javamail. pero ha sido adaptado a las diferentes tecnologias que envian archivos como axis y jax-rpc. un breve ejemplo de codigo es el siguiente

MessageContext msgContext = MessageContext.getCurrentContext();
Message rspmsg = msgContext.getResponseMessage()
File archivo =new File("c:/nana/"+dh.getName());
rspmsg.getAttachmentsImpl().setSendType(org.apache.axis.attachments.Attachments.SEND_TYPE_MIME);

dh = new DataHandler(new FileDataSource(archivo));
rspmsg.getAttachmentsImpl().addAttachments(new Attachments(dh));


Aunque la operabilidad de los protocolos MIME, DIME o MTOM depende principalmente de la tecnologia, la parte que codifica los archivos para que se puedan enviar pertence a esta clase sin importar protocolo o tecnologia.

Puntos importantes en PHP WebServices

Para tratar el tema de Web Services en PHP, debemos en primera instancia dar una pequena introduccion del soporte de PHP para crear Web Services, para esto se poseen plataformas externas y tambien soporte propietario apartir de php 5, asi que lo recomendable es discutir y dar una breve demostracion de al menos 2 plataformas y del soporte de php 5.

Tambien es importante probar la interoperabilidad entre web services php y clientes en java y .net, que son las plataformas de desarrollo mas populares.

Tocando estos puntos podriamos crearnos un concepto y una opinion acerca de los Web Services en php.

Exposicion de attachments

agregando acerca de lo que expone el compañero allan, http://soa-ucr.blogspot.com/2008/10/presentacin-de-servicios-web-con.html. las tecnologías java en las que nos centramos principalmente son Axis 1.1 y 1.2, aunque no nesesariamente vamos a explicar axis2, este lo incluimos para ver el estandar de envio MTOM en java. ya que la version 1 de axis no la soporta como pusimos en versiones anteriores y en axis2 descartaron el estandar DIME.
por lo demas la idea es correrlos un cliente y servidor desarrollados en la misma tecnologia y despues hacer una interoperabilidad entre ellos.

WS y Disp. Moviles

Segui el tutorial que habia posteado en agosto. Con algunos cambios (el tuturial es viejo) pude correr un web service sencillo en mi maquina y consumirlo en el Windows Device Emulator que viene con VS .net.
Todo es sencillo al mejor estilo .Net. Ahora queda tratar de consumir un java web service.

WS Security

Profe nosotros lo que estamos pensando es hacer un demo de WCF y mostrar dos formas de hacer la comunicación segura; hasta el momento eso es lo que hemos pensado, estamos investigando sobre WCF para familiarizarnos con la tecnologia para implementar un demo.

saludos,
jr

lunes, 6 de octubre de 2008

WS en tecnologias emergentes

Saludos

Para nuestra exposición los temas a tratar serán:
- Una muy breve introducción a Ruby como lenguaje OO
- Una introducción a RoR como framework de desarrollo de aplicaciones Web (modelo y filosofía de programación)
- Clientes de WS en Ruby: Programación (Probablemente en NetBeans, sino RadRails) e instalación en WebServers Mongrel con InstantRails
- Servidores de WS en Ruby Programación (Probablemente en NetBeans, sino RadRails) e instalación en WebServers Mongrel con InstantRails
- Interoperabilidad de nuestros clientes y servidores de WS en Ruby con WS en otras tecnologías
- Ajax para consumir WS.

Casi definitivamente Scala queda fuera de nuestro alcante, por que hay muy poca documentación y consideramos que con la agenda antes mencionada ya ocupamos el tiempo que tenemos para exponer.

Aparecen novedosas para desarrollar en RoR, Rad rails es una de ellas y es un IDE para programación para RoR Basado en Eclipse: http://www.aptana.com/rails

Blackberry WS -Entorno a utilizar.

Como se ha hablado en posts anteriores RIM provee varias herramientas de desarrollo para Blackberry en su sitio. Este link presenta las herramientas recomendadas o requeridas dependiendo del tipo de aplicación que se desee desarrollar:

http://na.blackberry.com/eng/developers/started/tools.jsp

Como se puede ver ahi existe un apartado específico sobre Web Services. El problema en este caso es que se requiere el MDS Studio, un ambiente de desarrollo propietario de RIM para Blackberry WS. Si bien el MDS studio es descargable, requiere del BlackBerry Enterprise Server para poder hacer deploy de este tipo de servicios, y éste no es gratis. Esto también limita los WS a una solución propietaria. Probablemente sólo pocos ambientes empresariales específicos utilizarían BB Enterprise Server, mientras que la mayoría de WS disponibles en Internet estan siendo deployeados en contenedores estándar como Tomcat esperando ser consumidos.

Por esto en este caso utilizaremos las herramientas requeridas para desarrollar programas "Cliente" según esa tabla. La herramienta es el entorno Blackberry JDE, que debería permitirnos utilizar código Java. Esperamos con esto ser capaces de crear un programa cliente capaz de consumir Web Services deployeados en un Tomcat común y corriente, y también hacer pruebas con WS disponibles en la red.

El programa simulador de Blackberry está disponible gratis y se utilizará para simular correr el programa cliente en el dispositivo mismo.

Interoperabilidad - Presentacion / Ejemplos

Dada la cercania de la fecha de la presentacion de Interoperabilidad de WebServices (Java - .NET), quisiera aprovechar este espacio para publicar un par de direcciones sobre las cuales es muy probable que nos basemos para los ejemplos que utilizaremos en clase:

http://www.developerfusion.com/article/4694/web-services-interoperability-between-j2ee-and-net-part-1/

http://www.cs.helsinki.fi/u/mlaanti/WSInterop.html

http://www.c-sharpcorner.com/UploadFile/ankithakur/WSIntegration02132006041221AM/WSIntegration.aspx?ArticleID=a0966837-4a15-4091-b6a7-a751ed3ada85

http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=178

http://netbeans.dzone.com/news/advanced-web-service-interoper

Esta direccion tiene una serie de recursos importantes no solo para lo que es interoperabilidad sino para webservices en general:

http://www.javapassion.com/webservices/

Nuevos Recursos de Interoperabilidad .NET - Java

El siguiente articulo da una pincelada a un par de recursos nuevos relacionados a tecnologias que recientemente han sido publicadas.

Nos referimos a WCF para el caso de .NET y WebSphere MQ (WMQ) y ActiveMQ para Java/Axis.



http://www.infoq.com/news/2008/03/wmq-activemq-interop

Saludos,

Jose

ROR y .NET

Para nuestra exposición, se haran esfuerzos para mostrar como crear y consumir WebService En ROR y Ajax, ademas como trabajan con .NET y JAVA...

Mi compañero ampliará mas sobre que se podrá ver y explicar en el trabajo.


Por otra parte esta artículo explica como consumir desde ROR un webservice en .NET, craqndo un objeto llamado @security que contiene el precio y la descripción de un articulo en stock, para poder guardarlo en otro registro.


http://webgambit.com/blog/calling-a-net-web-service-from-rails-original/

miércoles, 1 de octubre de 2008

Presentación de servicios web con adjuntos

Para la presentación pensamos tocar los siguientes temas:

+ Introducción se servicios web con adjuntos (delimitación y alcance - .net y axis)
+ Tecnologías existentes (MIME, DIME, MTOM)
+ Comparaciones entre tecnologías
+ Presentación en código de un servicio web y su respectivo cliente en .net
+ Presentación en código de un servicio web y su respectivo cliente en java usando axis
+ Interoperatividad entre aplicaciones

Saludos, Allan

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.