Beruflich Dokumente
Kultur Dokumente
Historia
Mainframes
Computo centralizado Hardware caro Ms funciones ejecutadas por la PC cliente Aplicaciones divididas entre cliente ligero/pesado y servidor Distribucin combinada con objetos Componentes tiene roles cliente y roles servidor
Paradigma C/S
Objetos distribuidos
Middleware
Capa de software que conecta procesos / objetos distribuidos Herramientas para ayudar a la programacin Para hacer que el desarrollo cliente servidor sea ms fcil y ms rpido. Es software resultante es:
Permite que el programador de C/S trabaje con construcciones con las que est familiarizado en los lenguajes de programacin subrutinas Proporciona herramientas de apoyo:
Tipos de middleware
RPC
Remote procedure call = llamada a procedimiento remoto Usa el paradigma de llamada a procedimiento (subrutina, subprograma) . Divide el programa usando los lmites de las llamadas a procedimientos
El programa principal y algunos procedimientos para interactuar con el usuario en el cliente. Otros procedimientos en el servidor.
RPC
Client Server
Requ es
Blocked
Blocked
Remote Procedure Call es una mecanismo para estructurar sistemas distribuidos. Se basa en el modelo de las local procedure call:
Computing
Reply
Blocked
La aplicacin hace una llamada a un procedimiento sin importar sies que este es ejecutado en el nodo local o en un nodo remoto, y bloquea hasta que la llamada regresa (retorna).
Recordar que la red entre el caller y el callee (llamante y llamado, cliente y servidor) puede ser poco confiable (mensajes duplicados o perdidos) y que puede haber diferencias arquitecturales significativas entre 2 computadoras (diferente representacin de la data).
Est diseado en torno a I/O, y los sistemas diseados en forma centralizada manejan I/O pobremente. En vez de mensajes, por qu no enviar y recibir procedimientos? Si se pudiera hacer, programar SOs y aplicaciones distribuidas sera muy parecido a programarlas para 1 sla CPU.
Si el programador usa el mismo paradigma en el desarrollo de programas normales que en el desarrollo de programas cliente servidor, el programador tendr una labor ms fcil y con menos errores. Si hay gran cantidad de data centralizada. Proceso debe correr en cierta computadora siempre (hardware, seguridad, etc.) Adems, este paradigma es ms fcil de extender a prog. orientada a objetos.
Las divisiones ocurren en la frontera entre llamadas a procedimientos El programa principal est en el cliente.
1.
Un protocolo entre caller y callee que parcha las propiedades no deseadas de la red. Puede ser propio del RPC o ajeno (TCP) Un lenguaje de programacin y un compilador que soporten RPC: los argumentos de una llamada deben ser puestos en el mensaje de request y entonces traducidos en algn punto. La data de regreso sufre un proceso similar.
RPC protocol
RPC protocol
2.
Ejemplo: count= read(fd, buf, nbytes) Count, fd y nbytes son enteros, buf es un array. Se llama a read desde el main()
Var. locales de main SP Var. locales de main nbytes buf fd Direc.retorno Var. locales de read Los parametros pueden ser llamados por valor (fd) o por referencia (buf)
SP
Los parmetros en la pila no son mandados al SO local, son mandados por un mensaje de la red a un SO en otra computadora.
Resguardo o stab del cliente Resguardo del servidor
Computadora cliente
Computadora servidor
llamada
cliente
regreso
llamada
servidor
regreso
Ncleo
Ncleo
Se insertan para hacer posible el RPC Se generan automticamente Usan una interface propia (original al middleware) de llamadas Permite que tanto el procedimiento que llama y el que es llamado no necesiten modificarse o adaptarse al middleware.
Creando stubs
El programador escribe:
El cdigo fuente del programa Especifica las interfaces usando un IDL (Interface Definition Language) Cdigo fuente del cliente stub y servidor stub Llamadas a los sockets Traduccin de formaos de data
El middleware genera:
Representacin de la data
Las redes pueden conectar sistemas heterogneos. Ej.: Una PC Intel con Windows y un Sistema P (rs/6000) con procesador Power y UNIX. Dos computadoras pueden usar diferentes:
Representaciones de enteros Representaciones de nmeros punto flotante Cdigos de carcter (ASCII vs. EBCDIC)
El emisor debe traducir la data que enva. El receptor debe traducir la data que recibe.
Emisor traduce al formato predeterminado antes de enviar Receptor traduce del formato predeterminado despus de recibir
DCE (Distributed Computing Environment) Microsoft: DCOM, Active X, .Net CORBA SUN RPC (ONC RPC) Web services (ejemplo: SOAP, XML-RPC)
Consultas DNS (nslookup, gethostbyname) X Windows. El cliente (host remoto) accede al servidor de grficos en la terminal para ejecutar funciones e manipulacin de la pantalla. Es un RPC asncrono (no se bloquea).
Diseado para usarse con lenguajes orientados a objetos Mismo esquema general que el del RPC
IDL Herramientas para construir stubs Libreras para manejar la comunicacin en la red
Ejemplos de middleware OO
Corba COM, DCOM Java RMI, Enterprise Java Beans Plataforma o framework .NET (Windows Communication Foundation)
Segn el W3C (World Wide Web Consortium): Un Web Service es un sistema de software identificado por un URI cuyas interfases pblicas y enlaces estan definidos y descritos usando XML. Su definicin puede ser descubierta por otros sistemas de software. Estos sistemas pueden interactuar con el Web Service de un modo prescrito por su definicin, usando mensaje basadosen XML viajando en protocolos de Internet .
Ms resumido: es una aplicacin de software, accesible en la Web a travs de su URL, que es accedida por clientes usando protocolos basados en XML (ej.: SOAP) y mandado a travs de protocolos de Internet como el HTTP. Los clientes la acceden a travs de interfase y enlaces definidos en entidades XML (ej.: archivos WSDL).
Definicin
Registro2
Registro1
Web Service 2 Web Service 1
Registro3
Interoperabilidad entre diferentes plataformas. Facilidad de modificar la arquitectura de software. Servicios fcilmente accesibles va Web. Integracin con sistemas existentes. Variedad de clientes (Java, Windows) Muchos proveedores de herramientas. Programacin rpida.
Escenarios tpicos
Una agencia de viajes quiere proporcionar a potenciales clientes un catlago de tours. Un Sistema existente permite que el cliente personalice su tour: hoteles, transporte, actividades especficas, horarios; y permite que se separe el viaje. Adems se quiere: interatuar con el cliente, seguir el proceso de creacin del paquete turstico (workflow), CRM, interactuar con proveedores.
Escenarios tpicos
SOAP
XML es el lenguaje comn. SOAP es el formato de mensajes comn. SOAP hace posible que objetos que no se conocen puedan comunicarse entre si. Se basa en XML y usa HTTP o SMTP para llevar mensajes. Independiente de lenguajes y plataformas. Es amistoso respecto a los firewalls.
SOAP
Simple Object Access Protocol. Al inicio se desarrollo un RPC que usaba XML (XML-RPC). Luego apareci SOAP. Se define una envoltura o sobre: el cuerpo del SOAP donde va el mensaje, y la cabecera opcional. Toda la envoltura o sobre es un documento XML. El receptor del mensaje usa el cuerpo. La cabecera es para CPUs intermedias (autentiticacin y transacciones).
SOAP
En la cabecera va informacin relativa al tipo de informacin que va en el cuerpo. Los mensajes SOAP son transmisiones en un solo sentido.
Sobre SOAP
Cabecera
Cuerpo
Pedido en SOAP
<SOAP-ENV:Envelope xmlns:SOAP-ENV= "SoapEnvelopeURI SOAP-ENV:encodingStyle= "SoapEncodingURI"> <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="ServiceURI"> <tickerSymbol>SUNW</tickerSymbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope
Pedido en SOAP
<SOAP-ENV:Envelope xmlns:SOAP-ENV= http://schemas.xmlsoap.org/soap/envelope SOAPENV:encodingStyle= " http://schemas.xmlsoap.org/ soap/encoding"> <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="ServiceURI"> <tickerSymbol>SUNW</tickerSymbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope
WSDL
Web Services Definition Language. Define el modo estndar de especificar los detalles de un Web Service. Es un esquema XML de propsito general que puede describir la interfase, los enlaces y otros detalles de un Web Service. Un Web Service es pensado como una coleccin de puntos extermos de comunicacin (puertos). La data intercambiada es especificada como parte de un mensaje. Cada tipo de accin permitida en un puerto es una operacin.
WSDL
Un documento WSDL completo debe consistir de seis clases de definiciones: Type: define los tipos de datos. Message: define los mensajes que el Web Service intercambia, incluye tipo de datos (un elemento Message por cada mensaje). Port type: dice que operaciones y mensajes son parte de un Web Service. Binding: enlace un tipo de puerto (ms mensajes y operaciones) a un protocolo especfico y formatos de mensajes.
WSDL
Port: el nombre del puerto y su ubicacin (URl, URI). Service: junto con Port, define el punto extremo (puerto). Service agrupa 1 o ms puertos relacionados entre si.
WSDL
<?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloWebService" targetNamespace="urn:HelloWebService" xmlns:tns="urn:HelloWebService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <types/> <message name="HelloIntf_sayHello"> <part name="String_1" type="xsd:string"/> </message>
WSDL
<message name="HelloIntf_sayHelloResponse"> <part name="result" type="xsd:string"/> </message> <portType name="HelloIntf"> <operation name="sayHello" parameterOrder="String_1"> <input message="tns:HelloIntf_sayHello"/> <output message="tns:HelloIntf_sayHelloResponse"/> </operation> </portType> <binding name="HelloIntfBinding" type="tns:HelloIntf"> <operation name="sayHello">
WSDL
<input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="urn:HelloWebService"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="urn:HelloWebService"/> </output> <soap:operation soapAction=""/> </operation> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> </binding>
WSDL
<service name="HelloWebService"> <port name="HelloIntfPort" binding="tns:HelloIntfBinding"> <soap:address location= http://example.COM:8000/webservice /HelloService"/> </port> </service> </definitions>
Una vez que un cliente sabe como acceder al W.S., hace un requesta al W.S. llamando a un mtodo Java, que pasa con sus parmetros al JAX-RPC runtime en el cliente. El JAX-RPC runtime mapea los tipos de datos Java a los tipos de datos XML y crear un mensaje SOAP que encapsula el mtodo y los parmetros. Pasa el mensaje al manejador SOAP (si lo hubiera) y de all se va al puerto del W.S.
Si hay manejadores en el servidor, el SOAP pasa por ellos. El mensaje SOAP pasa al punto extremo del W.S. Se extrae el mtodo y los parmetros, y se convierten los tipos XML a Java. Se ejecuta el mtodo Cuando se manda la respuesta, el proceso es parecido.