Documentos de Académico
Documentos de Profesional
Documentos de Cultura
De Los Web
Services
TL;DR: Estamos en la tercera generación de aplicaciones
distribuídas. Curiosamente hoy priorizamos la simplicidad para
poder crear arquitecturas complejas de verdad.
✣ (expandir) RSS para podcatcher
alojado en archive.org
Disclaimer: no me digas que este post es largo, que luego bien
que coges la jotdown y la lees de arriba abajo. Pero vamos, que
vas a necesitar buscar un rato en el que nadie te agobie para
poder dedicarle un cuartito de hora. Y recuerda: en estas
primeras entradas estamos montando un framework mental. No
hace falta que te quedes con todos los detalles pero sí que
reflexiones sobre cómo hemos llegado hasta aquí.
Hoy en programar.cloud tenemos una historia de poder,
dinero, bromance, revoluciones tecnológicas y peleas a cara de
perro entre egos. Y todo empieza con un adolescente llamado
Marc que programaba con un Atari.
El amigo Marc siempre había tenido lo que ahora definiríamos
como un espíritu emprendedor. Ya sabes, quería hacer cosas y
quería ganar dinero con ellas. En los 80 (con 16 años)
programaba juegos para ordenadores de 8 bits. No es que fuesen
los juegos más sofisticados de la década, pero hey, 16 años ¡y sin
internet! En aquellos tiempos los ordenadores no se hablaban
demasiado entre ellos y casi todas las aplicaciones se limitaban a
guardar datos localmente o como mucho en el servidor de la
oficina.
En aquellos tiempos los ordenadores no se hablaban demasiado
entre ellos.
Pasaron los años y al terminar los estudios Marc se metió en una
gran empresa: Oracle. Mejor dicho, en una empresa grande. Allí
fue dirigiéndose hacia posiciones más orientadas a negocio que a
la parte técnica pero seguro que el chiquito seguía en contacto
con los programadores que fabricaban los productos. Con 23 o
24 años el amigo se convirtió en el vicepresidente más joven
que había tenido la compañía. Pasta gansa (entre trescientos
mil y un millón de dólares de la época al año, según las fuentes) y
una visión global de negocio que tendrá bastante que ver con lo
que más adelante te cuento. Además se hizo íntimo amigo de
Larry, el dueño de la compañía. Llegó a considerarlo su tutor.
/* echo.idl */
[uuid(2d6ead46-05e3-11ca-7dd1-426909beabcd), version(1.0)]
interface echo {
const long int ECHO_SIZE = 512;
void echo(
[in] handle_t h,
[in, string] idl_char from_client[ ],
[out, string] idl_char from_server[ECHO_SIZE]
);
}
La interfaz IDL llamado echo, identificado con un UUID generado por máquina
(identificador único universal), declara una única función con el mismo
nombre, echo. Los nombres son arbitrarios y no necesitan ser los
mismos. La echofunción espera tres argumentos, dos de los cuales
soninparámetros (es decir, entradas en el procedimiento remoto) y uno de los
cuales es un outparámetro (es decir, una salida del procedimiento remoto). El
primer argumento, de tipo incorporado handle_t, es obligatorio y apunta a una
estructura de datos RPC. La función echopodría pero no devuelve un valor, porque
la cadena con eco se devuelve como un outparámetro. El IDL especifica la sintaxis
de invocación paraechofunción, que es la única operación en el servicio. Excepto
por las anotaciones entre corchetes a la izquierda de los tres echoparámetros, la
sintaxis del IDL es esencialmente la sintaxis C. El documento IDL es un precursor
del documento WSDL (lenguaje de descripción de servicio web) que proporciona
una especificación formal de un servicio web y sus operaciones. El documento
WSDL se trata en detalle en el Capítulo 4sobre servicios basados en SOAP.
Dos diferencias clave separan XML-RPC, por un lado, de DCE / RPC y sus retoños,
por otro lado:
o Las cargas útiles de XML-RPC son texto, mientras que las cargas de DCE / RPC son binarias. El
texto es relativamente fácil de inspeccionar y procesar con herramientas estándar y fácilmente
disponibles, como editores y analizadores.
o El transporte XML-RPC utiliza HTTP en lugar de un sistema propietario. Para admitir XML-RPC,
un lenguaje de programación requiere solo una biblioteca HTTP estándar junto con bibliotecas para
generar, analizar, transformar y procesar XML.
<?xml version="1.0">
<methodCall>
<methodName>fib<methodName>
<params>
<param><value><i4>11</i4></value></param>
</params>
</methodCall>
import java.util.List;
public interface BenefitsService extends java.rmi.Remote {
public List<Benefit> getBenefits(Emp emp) throws RemoteException;
}
Invocar el getBenefitsmétodo requiere que los códigos de bytes para varias clases
Java, estándar y definidos por el programador, estén disponibles en la máquina del
cliente. Para comenzar, el cliente necesita la clase Emp, el tipo de argumento para
el getBenefitsmétodo y la clase Benefit, el tipo de miembro para
el Listque getBenefitsdevuelve el método . Supongamos que la clase Empcomienza
así:
Los tipos estándar de Java como Listy Mapya están disponibles en el lado del
cliente porque el cliente es, por supuesto, una aplicación Java. El reto consiste en
los tipos adicionales, definidos por el programador, tales
como Department,BusinessCertification, ClientAccount, y Contactque son
necesarios para apoyar la invocación del lado del cliente de un método de ejecutar
remotamente. La configuración en el lado del cliente para habilitar una llamada
remota como:
es significativo, con muchos y muchos bytes necesarios para pasar del servidor al
cliente solo para la configuración. Cualquier cosa así de complicada es, por
supuesto, propensa a problemas tales como problemas de versiones y errores
directos en las llamadas a métodos remotos.
El procesamiento en el lado del cliente, como en el lado del servicio, solo requiere
bibliotecas y utilidades disponibles localmente. Las complejidades, por lo tanto,
pueden aislarse en los puntos finales (el servicio y las aplicaciones del cliente junto
con sus bibliotecas de soporte) y no necesitan filtrarse en los mensajes
intercambiados. Finalmente, los servicios web están disponibles a través de HTTP,
un protocolo sin propiedad que se ha convertido en una infraestructura estándar y
ubicua; HTTP en particular viene con una extensión de seguridad, HTTPS, que
proporciona servicios de seguridad multifacéticos.
http://www.jtech.ua.es/j2ee/publico/servc-web-2012-13/sesion01-apuntes.html
http://www.hipertexto.info/documentos/serv_web.htm
https://www.academia.edu/20231855/Funcionamiento_de_Web_Service?auto=download
Web Services
Posted on junio 14, 2007. Filed under: Uncategorized |
Es una colección de protocolos y estándares que sirven para intercambiar datos entre
aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de
programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los
servicios web para intercambiar datos en redes como Internet. La interoperabilidad se
consigue mediante la adopción de estándares abiertos y los responsables de esto son
OASIS y W3C.