miércoles
mar282007
Duck typing para servicios web
miércoles, marzo 28, 2007 at 9:45AM
En Theserverside se han hecho eco de una entrada en un weblog donde se explica cómo construir servicios que muestren un comportamiento similar al de "Duck typing", una propiedad de algunos lenguajes dinámicos según la cual un objeto se trata como lo que "parece" que debe ser según lo que el programador le pide que haga (la filosofía es "si parece un pato, es un pato").
En el caso del servicio web nos dan tres consejos. Primero, no validar los mensajes de entrada para poder aceptar peticiones que no se ajusten exactamente a un determinado esquema. Si aplicamos validación a algo que sea a nuestro mensaje de respuesta. Segundo, emplear XPath para pasear los documentos XML ya que es más flexible en el formato de entrada de los documentos que Apis como DOM o SAX. La última recomendación es no generar stubs ni squeletons ya que esto eliminará la posibilidad de aceptar mensajes XML que no sigan un formato estricto.
Mi opinión sobre estas ideas: puede ser interesante aplicarlas para ciertos servicio web no críticos orientados básicamente a proporcionar información al cliente; algo que simplemente sirviese para publicar información de una base de datos, por ejemplo. Pero me da un poco de miedo lo que propone hacer con XPath y el "apellido"... si no lo encontramos dentro del elemento persona lo buscamos por el documento XML adelante. Imagina que hacemos lo mismo con la fecha de salida de un cliente de un hotel. E imagina que buscando nos encontramos una fecha por el documento XML adelante: la de caducidad de la tarjeta de crédito... y acabamos haciendo un cargo en su cuenta por una estancia de tres años en el hotel.
¿Qué opináis vosotros al respecto?
En el caso del servicio web nos dan tres consejos. Primero, no validar los mensajes de entrada para poder aceptar peticiones que no se ajusten exactamente a un determinado esquema. Si aplicamos validación a algo que sea a nuestro mensaje de respuesta. Segundo, emplear XPath para pasear los documentos XML ya que es más flexible en el formato de entrada de los documentos que Apis como DOM o SAX. La última recomendación es no generar stubs ni squeletons ya que esto eliminará la posibilidad de aceptar mensajes XML que no sigan un formato estricto.
Mi opinión sobre estas ideas: puede ser interesante aplicarlas para ciertos servicio web no críticos orientados básicamente a proporcionar información al cliente; algo que simplemente sirviese para publicar información de una base de datos, por ejemplo. Pero me da un poco de miedo lo que propone hacer con XPath y el "apellido"... si no lo encontramos dentro del elemento persona lo buscamos por el documento XML adelante. Imagina que hacemos lo mismo con la fecha de salida de un cliente de un hotel. E imagina que buscando nos encontramos una fecha por el documento XML adelante: la de caducidad de la tarjeta de crédito... y acabamos haciendo un cargo en su cuenta por una estancia de tres años en el hotel.
¿Qué opináis vosotros al respecto?
in
j2ee
j2ee 