4 SERVICIOS WEB XML. 4.1 Introducción Evolución de los Servicios Web. 4. Servicios Web XML

Tamaño: px
Comenzar la demostración a partir de la página:

Download "4 SERVICIOS WEB XML. 4.1 Introducción Evolución de los Servicios Web. 4. Servicios Web XML"

Transcripción

1 4 SERVICIOS WEB XML 4.1 Introducción Los Servicios Web son aplicaciones autodescriptivas que se publican, se ubican y se invocan desde cualquier lugar de la Web, con el fin de simplificar el desarrollo de complejas aplicaciones distribuidas. Estos servicios permiten invocar funciones software a través de Internet, permitiendo que programas basados en PHP, ASP, JSP, JavaBeans y otros muchos puedan hacer peticiones a servicios que se estén ejecutando en una máquina remota y obtener la respuesta para que pueda ser integrada en una página web, un servicio WAP o cualquier otra aplicación. El concepto de servicio web comienza a extenderse impulsado por los grandes gigantes de la informática como Sun, Oracle, HP, Microsoft e IBM. No aporta muchas novedades en cuanto a implementación, pero sí en cuanto a concepto, facilitando y simplificando el acceso a software a través de la red. La estandarización de los servicios web se realiza a través de dos comités: OASIS (Organization for the Advancement of Structured Information Standards) y W3C (World Wide Web Consortium). Para mejorar la interoperabilidad entre distintas implementaciones de servicios web surgió la organización WS-I (Web Services Interoperatibility Organization), que ha desarrollado una serie de perfiles para definir mejor los estándares implicados Evolución de los Servicios Web En los años 80, los protocolos de comunicación no ocupaban un lugar demasiado importante para los desarrolladores, ya que conseguir que las aplicaciones se comunicaran entre sí ya era un reto más que suficiente. Es a partir de los años 90 cuando empiezan a sugir algunas estructuras de objetos, como COM (Modelo de Objeto Componente, desarrollado por Microsoft) y CORBA (Arquitectura de negociación de petición de objetos comunes), que permitían a los programadores invocar desde una aplicación la ejecución de código binario de otra aplicación que se ejecutaba en la misma máquina. Francisco Prieto Donate 83

2 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Una vez que las redes locales empezaron a extenderse en los años 90 se hizo imprescindible la comunicación entre equipos. Se creó IIOP (Internet Inter-ORB Protocol) como protocolo de CORBA, DCOM (Distributed COM) como protocolo de COM y posteriormente RMI (Remote Method Invocation) para los usuarios de Java. Mediante el uso de cualquiera de estos protocolos, una aplicación compatible puede invocar componentes que residan en otros ordenadores de la red. El problema radica en que estos protocolos no son interoperables, es decir, los usuarios que utilizan DCOM únicamente pueden llamar a servidores compatibles con DCOM. Por otro lado las soluciones anteriores tienen un requisito de simetría, de modo que no existe el paradigma cliente-servidor y por tanto es obligatoria la implantación del mismo modelo de distribución de objetos en ambos extremos de la comunicación. Esto no se puede garantizar en un entorno tan abierto como Internet. Tras la aparición de XML a mediados de los 90 nació la posibilidad de estructurar la información de una manera uniforme y autodescriptiva, lo que dio pie a utilizar este lenguaje para aplicar un formato a los mensajes intercambiados entre sistemas. Se implementó un protocolo llamado XML-RPC que permitía llamar a procedimientos de equipos remotos sin tener en cuanta los detalles de sus sistemas operativos o entornos de lenguaje. La evolución del protocolo XML-RPC dio origen al actual SOAP (Simple Object Access Protocol) Conceptos básicos Muchas de las ideas detrás de los servicios web son asombrosamente simples y no son una novedad en el mundo de las redes e Internet: El proveedor de servicios web define un formato para las peticiones a un servicio y de las respuestas que generará. Un ordenador realiza una petición a través de una red. El servicio web realiza la acción solicitada y devuelve la respuesta Esta acción puede consistir en buscar un valor actual de la bolsa, encontrar el mejor precio para un producto determinado, guardar una reunión en una agenda, traducir un fragmento de texto a cualquier lenguaje o validar el número de una tarjeta de crédito. 84 Francisco Prieto Donate

3 La razón del repentino crecimiento de los servicios web es la incorporación de protocolos estándar para invocar servicios y transmitir datos, como son SOAP y WSDL, ambos basados en XML. 4.2 XML Introducción XML es un Lenguaje de Etiquetado Extensible muy simple y a la vez estricto, que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje que puede parecer muy similar a HTML pero su función principal es describir y estructurar datos y no mostrarlos como es el caso de HTML. XML permite la lectura de datos a través de diferentes aplicaciones. En definitiva, sirve para estructurar, almacenar e intercambiar información. La especificación XML define un procedimiento estándar para añadir etiquetas (también llamadas marcas) a los documentos; de hecho XML es un meta-lenguaje para definir lenguajes de marcas. En otras palabras, XML ofrece unas reglas para definir etiquetas y relaciones estructurales entre ellas. Al no haber etiquetas predefinidas no existe una semántica a priori; toda la semántica de un documento XML debe ser definida bien por la aplicación que lo procesa o bien por hojas de estilo. Un documento XML tiene dos estructuras, una lógica y otra física. Físicamente, el documento está compuesto por unidades llamadas entidades. Cada documento comienza con una entidad documento, también llamada raíz. Lógicamente, el documento está compuesto de declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento, todos los cuales están indicados por una marca explícita. Las estructuras lógica y física deben encajar de manera adecuada. Existen dos tipos de documentos XML: válidos y bien formados. Bien formados: son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas. Francisco Prieto Donate 85

4 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Válidos: Además de estar bien formados, siguen una estructura y una semántica determinada por un fichero de definición (que es una especie de definición de la gramática del documento). Existen distintas formas de definir estos ficheros de definición, entre ellas DTD y XML Schema Reglas sintácticas A continuación se expone un ejemplo muy simple de un archivo XML. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Alumno> <nombre>fernando Jaime</nombre> <apellido>pérez Borrero</apellido> <direccion>c\gardenia 15</direccion> </Alumno> En la primera línea se indica que lo que la sigue es XML. Puede tener varios atributos (los campos que van dentro de la declaración), algunos obligatorios y otros no: version: indica la versión de XML usada en el documento. La versión actual es la 1.0. Su uso es obligatorio, a no ser que sea un documento externo a otro que ya lo incluía. encoding: es la forma en que se ha codificado el documento. Por defecto es UTF- 8, aunque podrían utilizarse otras, como UTF-16, US-ASCII, ISO , etc. No es obligatorio salvo que sea un documento externo a otro principal. standalone: indica si el documento va acompañado de un DTD (standalone= no ), o no lo necesita (standalone= yes ); en principio no hay por qué ponerlo, porque más adelante se indica el DTD si se necesita. En cuanto a la sintaxis del documento se han de resaltar las siguientes reglas: Los documentos XML son sensibles a mayúsculas, esto es, en ellos se diferencia las mayúsculas de las minúsculas. Por ello <alumno> sería una etiqueta diferente a <Alumno>. Todos los espacios y retornos de carro se tienen en cuenta (dentro de las etiquetas, en los elementos). 86 Francisco Prieto Donate

5 Hay algunos caracteres especiales reservados, que forman parte de la sintaxis de XML: <, >, &, " y '. En su lugar cuando queramos representarlos deberemos usar las entidades <, >, &, " y &apos; respectivamente. Los valores de los atributos de todas las etiquetas deben ir siempre entrecomillados. Son válidas las dobles comillas (") y la comilla simple ('). Observando el contenido del ejemplo se puede diferenciar entre elementos y etiquetas: los elementos son las entidades en sí, lo que tiene contenido, mientras que las etiquetas sólo describen a los elementos. Un documento XML está compuesto por elementos, y en su sintaxis éstos se nombran mediante etiquetas. Hay dos tipos de elementos: los vacíos y los no vacíos. Hay varias consideraciones importantes a tener en cuenta al respecto: Toda etiqueta no vacía debe tener una etiqueta de cerrado: <etiqueta> debe tener su correspondiente </etiqueta> Todos los elementos deben estar perfectamente anidados, es decir, las etiquetas deben ser cerradas en orden inverso al que se abrieron. <Alumno><nombre>Fernando Jaime</Alumno></nombre> -- > INCORRECTO <Alumno><nombre>Fernando Jaime</nombre></Alumno> -- > CORRECTO Los elementos vacíos son aquellos que no tienen contenido dentro del documento. Un ejemplo en HTML son los saltos de línea (<br>). La sintaxis correcta para estos elementos implica que la etiqueta tenga siempre esta forma: <etiqueta/> DTD (Definición de Tipos de Documentos) Un DTD no es más que un conjunto de definiciones de los elementos que puede incluir un documento XML, de la forma en que deben hacerlo (qué elementos van dentro de otros) y los atributos que se les puede dar. Hay varios modos de referenciar un DTD en un documento XML: Francisco Prieto Donate 87

6 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Incluir dentro del documento una referencia al documento DTD en forma de URI (Universal Resource Identifier, o identificador universal de recursos) mediante la siguiente sintaxis: <!DOCTYPE Alumno SYSTEM " > En este caso la palabra SYSTEM indica que el DTD se obtendrá a partir de un elemento externo al documento e indicado por el URI que lo sigue. O bien incluir dentro del propio documento el DTD de este modo: <?xml version="1.0"?> <!DOCTYPE Alumno [ <!ELEMENT Alumno (nombre+, apellido+, direccion+, foto?)> <!ELEMENT nombre (#PCDATA)> <!ATTLIST nombre sexo (masculino femenino) #IMPLIED> <!ELEMENT apellido (#PCDATA)> <!ELEMENT direccion (#PCDATA)> <!ELEMENT foto EMPTY>]> <Alumno> <nombre>fernando Jaime</nombre> <apellido>pérez Borrero</apellido> <direccion>c\lagunilla 15</direccion> </ficha> La forma de incluir el DTD directamente como en este ejemplo pasa por añadir a la declaración <!DOCTYPE y después del nombre del nombre del tipo de documento, en vez de la URI del DTD, el propio DTD entre los símbolos '[' y ']'. Todo lo que hay entre ellos será considerado parte del DTD. En cuanto a la definición de los elementos, es bastante intuitiva: después de la cláusula <!ELEMENT se incluye el nombre del elemento (el que luego se indicará en la etiqueta), y después diferentes opciones en función del elemento: Entre paréntesis, si el elemento es no vacío, se indica el contenido que puede tener el elemento: la lista de elementos hijos o que descienden de él si los tiene, separados por comas; o el tipo de contenido, normalmente #PCDATA, indicando datos de tipo texto, que son los más habituales. Si es un elemento vacío, se indica con la palabra EMPTY. 88 Francisco Prieto Donate

7 A la hora de indicar los elementos descendientes (los que están entre paréntesis) vemos que van seguidos de unos caracteres especiales: '+', '*', '?' y ' '. Sirven para indicar qué tipo de uso se permite hacer de esos elementos dentro del documento: + : uso obligatorio y múltiple; permite uno o más elementos de ese tipo dentro del elemento padre, pero como mínimo uno. * : opcional y múltiple; puede no haber ninguna ocurrencia, una o varias.? : opcional y singular; puede no haber ninguno o como mucho uno. : equivale a un OR, es decir, da la opción de usar un elemento de entre los que forman la expresión, y solo uno. De este modo, si por ejemplo encontramos en un DTD la siguiente declaración: <!ELEMENT Alumno (nombre+, apellido+, direccion*, foto?, telefono* fax*)> Indica que elemento Alumno puede contener los siguientes elementos: un nombre y un apellido como mínimo, pero puede tener más de uno de cada; opcionalmente puede incluirse una o varias direcciones, pero no es obligatorio; opcionalmente también se puede incluir una única foto; y por fin, pueden incluirse, aunque no es obligatorio en ninguno de los dos casos, uno o más teléfonos o uno o más números de fax XML Schema XML Schema es algo similar a un DTD, es decir, que define qué elementos puede contener un documento XML, cómo están organizados, y qué atributos y de qué tipo pueden tener sus elementos. Las ventajas de XML Schema con respecto a los DTDs son: Usan sintaxis de XML, al contrario que los DTDs. Permiten especificar los tipos de datos. Francisco Prieto Donate 89

8 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Son extensibles. Por ejemplo, XML Schema permite definir el tipo del contenido de un elemento o de un atributo, y especificar si debe ser un número entero, o una cadena de texto, o una fecha, etc. Los DTDs no nos permiten llegar a tal grado de concreción. Veamos un ejemplo de un documento XML, y su Schema correspondiente: <documento xmlns="x-schema:personaschema.xml"> <persona id="fernando Jaime"> <nombre>fernando Jaime Pérez Borrero</nombre> </persona> </documento> Como se puede ver en el documento XML anterior, se hace referencia a un espacio de nombres llamado "x-schema:personaschema.xml". Es decir, le estamos diciendo al analizador sintáctico XML que valide el documento contra el Schema "personaschema.xml". El Schema sería algo parecido a esto: <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name='id' dt:type='string' required='yes'/> <ElementType name='nombre' content='textonly'/> <ElementType name='persona' content='mixed'> <attribute type='id'/> <element type='nombre'/> </ElementType> <ElementType name='documento' content='eltonly'> <element type='persona'/> </ElementType> </Schema> El primer elemento del Schema define dos espacios de nombres. El primero, xmldata, le dice al analizador que esto es un Schema y no otro documento XML cualquiera. El segundo, datatypes, nos permite definir el tipo de elementos y atributos utilizando el prefijo dt. En la siguiente tabla se muestra el significado de cada uno de las etiquetas contenidas en el XML Schema. 90 Francisco Prieto Donate

9 Nombre Significado ElementType Define el tipo y contenido de un elemento, incluyendo los sub-elementos que pueda contener. AttributeType Asigna un tipo y condiciones a un atributo. Attribute Declara que un atributo previamente definido por AttributeType puede aparecer como atributo de un elemento determinado. Element Declara que un elemento previamente definido por ElementType puede aparecer como contenido de otro elemento. Tabla 4.1: Significado de las etiquetas contenidas en el XML Schema Es necesario empezar el Schema definiendo los elementos más profundamente anidados dentro de la estructura jerárquica de elementos del documento XML. Las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones de contenido Element y Attribute correspondientes Espacios de nombres XML Los XML Namespaces (Espacios de nombres XML) proporcionan un método para evitar conflictos en los nombres de los elementos. Como los elementos en XML no están predefinidos, podría ocurrir un conflicto de nombres cuando dos elementos diferentes usan los mismos nombres de elementos El siguiente documento XML lleva información sobre una tabla: <table> Francisco Prieto Donate 91

10 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME <tr> <td>apples</td> <td>bananas</td> </tr> </table> Y el documento que viene a continuación lleva información sobre una mesa: <table> <name>african Coffee Table</name> <width>80</width> <length>120</length> </table> Si estos dos documentos se unieran en uno solo, habría un conflicto en los nombres de elementos, ya que cada uno contiene un elemento <table> diferente con distinto contenido y definición. Una forma de resolver el conflicto es usando un prefijo que se incluiría dentro de cada etiqueta, precediendo al nombre: Para el caso de la tabla utilizaríamos el prefijo h: <h:table> <h:tr> <h:td>apples</h:td> <h:td>bananas</h:td> </h:tr> </h:table> Y para el caso de la mesa utilizaríamos el prefijo f: <f:table> <f:name>african Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> Ahora no habrá conflictos de nombres porque los dos documentos usan un nombre diferente para su elemento <table>. Según la especificación, las etiquetas deben ser Namespaces identificados por un URI (Uniform Resource Identifier). Este Identificador de Recursos Uniforme es un método que combina URNs y URLs, y que sirve para identificar de forma universal 92 Francisco Prieto Donate

11 recursos de todo tipo existentes en la World Wide Web. Para asociar una etiqueta con un URI se utiliza el atributo xmlns. Para el caso de la tabla utilizaríamos el espacio de nombres: <h:table xmlns:h=" <h:tr> <h:td>apples</h:td> <h:td>bananas</h:td> </h:tr> </h:table> Para el caso de la mesa utilizaríamos el espacio de nombres: <f:table xmlns:f=" <f:name>african Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> Cuando se define un Namespace en la etiqueta inicial de un elemento, todos los elementos hijo con el mismo prefijo se asocian al mismo espacio de nombres. Cabe resaltar que la dirección usada para identificar al Namespace no va a ser usada por el parser de XML para buscar información; su único propósito es establecer un nombre único para el prefijo Analizadores XML Los analizadores XML son un elemento clave en los servicios web, ya que se encargan de interpretar los datos contenidos en el documento y hacerlos accesibles a la aplicación. En dispositivos con baja capacidad de procesamiento son un factor decisivo, ya que suelen tener un gran tamaño y consumen mucha memoria. Existen tres tipos principales de analizadores XML, cada uno con sus ventajas e inconvenientes: Analizador de modelo: Lee el documento XML completamente y crea en la memoria una representación estructurada de los datos. Su gran ventaja es que el análisis se realiza al principio y luego se pueden tratar los datos como una Francisco Prieto Donate 93

12 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME estructura cualquiera. Su desventaja principal es el alto consumo de memoria. El analizador DOM se basa en esta idea. Analizador push: Se define un conjunto de eventos que pueden aparecer en un documento XML, como pueden ser el comienzo de una etiqueta o la presencia de datos de texto, y al encontrar uno de estos eventos llama a un método que lo procese adecuadamente. El analizador SAX, usado por JSR-172, es de este tipo. Analizador pull: El documento XML se va recorriendo poco a poco mediante un método que pide el siguiente elemento. El analizador kxml, usado por ksoap, es de este tipo. 4.3 SOAP El protocolo de acceso a objetos simples (Simple Object Access Protocol, SOAP) en un estándar de W3C que define el formato de las peticiones para los servicios web. Los mensajes SOAP son enviados entre los dos extremos de la comunicación en los llamados sobres SOAP para hacer una petición o enviar una respuesta. Estos sobres están formateados en XML y son muy fáciles de descodificar. Actualmente un sin fin de empresas se han decantado por el desarrollo de aplicaciones que puedan trabajar sobre Internet porque permite la distribución global de la información. Las tecnologías más usadas para el desarrollo de estas aplicaciones han sido hasta hace poco CORBA, COM y EJB. Cada una proporciona un marco de trabajo basado en la activación de objetos remotos mediante la solicitud de ejecución de servicios a un servidor de aplicaciones. Estas tecnologías han demostrado ser muy efectivas para el establecimiento de sitios Web, sin embargo presentan una serie de desventajas, como son la total incompatibilidad e interoperabilidad entre ellas y la dependencia de la plataforma sobre la que corren, así como del lenguaje de programación. Esto ha llevado a la necesidad de considerar un nuevo modelo de computación distribuida de objetos que no sea dependiente de plataformas, modelos de desarrollo ni lenguajes de programación. Por todos estos motivos surge el concepto de SOAP (Simple Object Access Protocol). 94 Francisco Prieto Donate

13 4.3.1 Concepto de SOAP La ventaja que aporta SOAP es la de proporcionar un mecanismo simple y ligero de intercambio de información entre dos puntos mediante documentos XML. SOAP no es más que un sencillo protocolo capaz de expresar la información mediante un modelo de empaquetado de datos modular y una serie de mecanismos de codificación de datos. Esto permite que SOAP sea utilizado en un amplio rango de servidores de aplicaciones que trabajen mediante el modelo de comunicación RPC (Remote Procedure Call). La especificación SOAP consta de tres partes: El SOAP envelope, que define el marco de trabajo que determina qué se puede introducir en un mensaje, quién debería hacerlo y si esa operación es opcional u obligatoria. Las reglas de codificación SOAP que definen el mecanismo de serialización que será usado para encapsular en los mensajes los distintos tipos de datos. La representación SOAP RPC que define un modo de funcionamiento a la hora de realizar llamadas a procedimientos remotos y la obtención de sus resultados Objetivos de SOAP A la hora de realizar el diseño de SOAP se han tenido en cuenta una serie de consideraciones con el fin de cumplir una serie de objetivos claros, objetivos que le darán el potencial que reside en SOAP y que le harán tan atractivo. Éstos son: Establecer un protocolo estándar de invocación a servicios remotos que esté basado en protocolos estándares de uso frecuente en Internet, como son HTTP (Hiper Text Transport Protocol) para la transmisión y XML (extensible Markup Language) para la codificación de los datos. Establecer un protocolo abierto y extensible, de modo que no existen restricciones en cuanto a datos o medio de transporte (la especificación define la manera en que los mensajes se intercambian por HTTP, pero no obliga a utilizar este protocolo). Francisco Prieto Donate 95

14 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Independencia de plataforma hardware, lenguaje de programación e implementación del servicio Web. El logro de estos objetivos ha hecho de SOAP un protocolo extremadamente útil, ya que el protocolo de comunicación HTTP es el empleado para la conexión sobre Internet, por lo que se garantiza que cualquier cliente con un navegador estándar pueda conectarse con un servidor remoto. Además, los datos en la transmisión se empaquetan o serializan con el lenguaje XML, que se ha convertido en algo imprescindible en el intercambio de datos ya que es capaz de salvar las incompatibilidades que existían en el resto de protocolos de representación de datos de la red. Por otra parte, los servidores Web pueden procesar las peticiones de usuario empleando tecnologías tales como Servlets, páginas ASP (Active Server Pages) o páginas JSP (Java Server Pages). La especificación SOAP 1.1 indica que las aplicaciones deben ser independientes del lenguaje de desarrollo, por lo que las aplicaciones cliente y servidor pueden estar escritas con HTML, DHTML, Java, Visual Basic o cualquier otra herramienta o lenguaje disponibles Un ejemplo sencillo de mensajes SOAP Supongamos un servicio web que permita comprobar si un código postal es válido y pertenece realmente al país especificado. Este servicio web sería muy útil para asegurar la validez en un formulario de una página web. El código relativo a la petición SOAP sería: <env:envelope xmlns:env=" <env:body> <m:validatepostcode env:encodingstyle=" xmlns:m=" <Postcode> WC1A8GH </Postcode> <Country> UK </Country> 96 Francisco Prieto Donate

15 </m:validatepostcode> </env:body> </env:envelope> Esta petición tiene dos parámetros (postcode y country) contenidos en un elemento llamado ValidatePostcode, que sería el nombre del servicio web al que estamos haciendo la petición. El resto de los datos del sobre, como la versión de SOAP y la codificación del texto, ayuda al servicio web a procesar la petición. La respuesta al mensaje anterior tendría el siguiente formato: <env:envelope xmlns:env=" > <env:body> <m:validatepostcoderesponse env:encodingstyle=" xmlns:m=" <Valid> Yes </Valid> </m:validatepostcoderesponse> </env:body> </env:envelope> El elemento ValidatePostcodeResponse contesta al elemento ValidatePostcode de la petición, conteniendo un único elemento, Valid, que indica si el código postal introducido es válido o no Partes de un mensaje SOAP Un mensaje SOAP no es más que un documento en formato XML que está constituido por tres partes bien definidas: el SOAP envelope, el SOAP header, de carácter opcional, y el SOAP body. Francisco Prieto Donate 97

16 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Figura 4.1: Partes de un mensaje SOAP Cada uno de estos elementos se detalla a continuación: El envelope es el elemento más importante y de mayor jerarquía dentro del documento XML y representa al mensaje que lleva almacenado dicho documento. Todo mensaje SOAP 1.1 debe tener un elemento envelope asociado al espacio de nombres Si un mensaje recibido por una aplicación SOAP contiene en este elemento un valor distinto al anterior la aplicación trataría dicho mensaje como erróneo. El header es un mecanismo genérico que se utiliza para añadir características adicionales al mensaje SOAP sin tener que modificar su estructura. El modo en la que se añadan cada uno de los campos dependerá exclusivamente del servicio implementado, de forma que cliente y servidor deberán estar de acuerdo con la jerarquía con la que se hayan añadido los distintos campos. De esta forma será sencillo separar entre sí los distintos datos a transmitir dentro del mensaje. Un ejemplo de uso del header, donde se indica un cierto parámetro útil para el servicio Web que le indica como debe procesar el mensaje, sería: <?xml version="1.0"?> <SOAP-Envelope xmlns:soap-env=" SOAP-ENV:encodingStyle= " 98 Francisco Prieto Donate

17 <SOAP-ENV:Header> <t:transaction xmlns:t="some-uri" SOAP-ENV:mustUnderstand="1"> 5 </t:transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <getquote xmlns=" <symbol> RHAT </symbol> </getquote> </SOAP-ENV:Body> </SOAP-ENV:Envelope> El body es un contenedor de información en el cual se almacenarán los datos que se quieran transmitir de lado a lado de la comunicación. Es aquí donde se aloja la carga útil del mensaje, de forma que para una comunicación RPC el body contendrá, entre otros, los datos referidos a la ubicación del servidor, nombre del método a invocar y parámetros necesarios. Debe depender únicamente del elemento envelope, y se sitúa inmediantamente después del elemento header en el caso de que exista. Dentro de este campo, SOAP define un elemento de uso opcional denominado Fault utilizado en los mensajes de respuesta para indicar al cliente algún error ocurrido en el servidor. Un ejemplo de uso de este nuevo elemento sería el siguiente, en el que se ha detectado un error en la aplicación que corre sobre el servidor que provoca que no opere convenientemente, por lo que se le indica al cliente: <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:soap-env=" > SOAP-ENV:encodingStyle= " <SOAP-ENV:Body> Francisco Prieto Donate 99

18 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME <SOAP-ENV:Fault> <faultcode> SOAP-ENV:Server </faultcode> <faultstring> Server Error </faultstring> <detail> <e:myfaultdetails xmlns:e="some-uri"> <message> </message> My application didn't work <errorcode> 1001 </errorcode> </detail> </e:myfaultdetails> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> El atributo encodingstyle se utiliza para indicar las reglas de serialización utilizadas en el mensaje SOAP. No existe un formato de codificación por defecto, sino que existen una serie de posibles formatos a utilizar. El valor de este atributo es una lista ordenada de una o más URIs que identifican la regla o reglas de serialización que pueden ser utilizadas en el mensaje, en el orden en el que se han de aplicar. De entre todas las posibles, las más utilizadas son: y Francisco Prieto Donate

19 4.3.5 Enlaces SOAP (bindings) Podría pensarse que SOAP consiste en un documento XML transmitido por HTTP. Lo cierto es que la norma no especifica nada respecto al medio de transporte de los mensajes. Dicho de otra manera, se pueden utilizar otros protocolos de transporte (SMTP, FTP) o cualquier otro mecanismo que se nos ocurra (ficheros de texto). En el caso de elegir HTTP como transporte de SOAP, es necesario cumplir algunas reglas básicas: Los mensajes se deben enviar mediante el mecanismo HTTP POST. El tipo de contenido debe ser text/xml. En la cabecera de HTTP aparecerá un nuevo encabezamiento llamado SOAPAction, cuya misión es hacer saber el propósito del mensaje SOAP a los servidores que lo reciban, sin tener que acceder al cuerpo del mensaje para obtener dicha información. Si el mensaje de respuesta contiene un fallo, el código del estado de la respuesta HTTP debe ser 500. Como curiosidad cabe citar que, debido a la flexibilidad que otorga la norma en cuanto al método de transmisión, hasta una paloma mensajera podría ser el mecanismo de transporte de nuestros mensajes SOAP SOAP 1.2 En Junio de 2003 el W3C publicó la especificación SOAP 1.2. Esta nueva versión establece algunas modificaciones y aporta muchas novedades tanto en la sintaxis como en la codificación con respecto a SOAP 1.1. La librería que implementa el protocolo SOAP en este proyecto, ksoap2, se basa en la especificación SOAP 1.1, por ello vamos a nombrar solamente los cambios más significativos que aporta la versión 1.2: Sintaxis No se permite ningún elemento detrás de body. Francisco Prieto Donate 101

20 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME El atributo env:encodingstyle no debe aparecer en el envelope. En el elemento opcional Fault se ha sustituido client y server por Sender y Receiver. Asimismo los nombres de elementos faultcode y faultstring han sido renombrados por env:code y env:reason, respectivamente. Se define el nuevo elemento de cabecera env:notunderstood, utilizado cuando la información marcada con env:mustunderstand no ha podido ser procesada. Los valores del atributo de la cabecera env:mustunderstand toma los valores lógicos true o false, en lugar de 1 o 0. Enlace SOAP HTTP La cabecera Content-type debe ser application/soap+xml en lugar de text/xml. Codificaciones La sintaxis para la serialización de los arrays ha sido modificada. Se han eliminado valores compuestos genéricos del SOAP Data Model. 4.4 WSDL WSDL (Web Services Definition Language) es un lenguaje basado en XML que usamos para describir un servicio web. Al publicar nuestro servicio es recomendable publicar conjuntamente un archivo WSDL que indique los métodos, dirección y estructura de éste. Cuando un cliente quiera consumir nuestro servicio bastará con que interprete el contenido del archivo WSDL, de modo que no es necesario conocer los detalles de la implementación, la plataforma o el sistema operativo sobre el que se está ejecutando. 102 Francisco Prieto Donate

21 4.4.1 Elementos de un documento WSDL Un documento WSDL está compuesto por definiciones. Éstas definen un servicio como un conjunto de una o más redes de puntos extremos o puertos. Cada puerto está asociado a un enlace específico que se encarga de definir la manera en que un conjunto abstracto de operaciones y mensajes está enlazado a un puerto de acuerdo a un protocolo específico. Un enlace asigna un protocolo específico a un tipo de puerto. El tipo de puerto está compuesto por una o más operaciones, que representan un conjunto abstracto de posibilidades que el servicio puede llevar a cabo. Cada operación está compuesta por un conjunto de mensajes abstractos que representan los datos comunicados durante una operación. Cada mensaje contiene una o más partes de datos, que se definen como tipos. La siguiente figura muestra de forma esquematizada la estructura que sigue un documento WSDL: Tipo _1 Tipo _ 2 Mensaje _1... Operación _1 Tipo _ n Mensaje _ 2 Puerto _1 Enlace _1... Servicio Mensaje _ n Operación _ 2... Operación _ n Puerto _ 2... Puerto _ n Figura 4.2: Estructura esquematizada de un documento WSDL Detallamos a continuación cada una de las partes: <definitions>: Dentro de este elemento se definirán los servicios asociados al documento. Generalmente cada documento WSDL describe un solo servicio, y suele seguir la siguiente estructura: Francisco Prieto Donate 103

22 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME <definitions> <documentation> Comentarios del servicio... </documentation> <types> Definición de tipos... </types> <message> Definición de mensaje... </message> <porttype> Definición de operaciones... </porttype> <binding> Definición de invocación... </binding> <service> Ubicación del servicio... </service> </definitions> <documentation>: Se utiliza para comentarios <types>: Define los tipos de datos contenidos en los mensajes. Ejemplo: <types> <complextype name="request"> <sequence> <element name="string_1" type="string"/> <element name="string_2" type="string"/> </sequence> 104 Francisco Prieto Donate

23 </complextype> </types> Aquí se define un tipo complejo llamado request formado por dos cadenas de caracteres, String_1 y String_2. <message>: Un mensaje es un contenedor de tipos de datos. Es importante saber que estos mensajes son abstractos, de manera que no hay que confundirlos con los mensajes físicos que se enviarán vía SOAP. Ejemplo: <message name="interface_request"> <part name="parameters" element="ns2:request"/> </message> Aquí se define el mensaje Interface_request, cuyo parámetro es un elemento del tipo request, anteriormente definido en <types>. <porttype>: Define las operaciones que realiza el servicio y los mensajes correspondientes. Ejemplo: <porttype name="interface"> <operation name="request"> <input message="tns:interface_request"/> <output message="tns:interface_requestresponse"/> </operation> </porttype> Aquí define la operación request dentro del puerto Interface cuyo mensaje de entrada es Interface_request y el de salida es Interface_requestResponse. <binding>: Se traduce como enlace. Define el formato y detalles del protocolo para cada operación. Ejemplo: <binding name="interfacebinding" type="tns:interface"> <soap:binding transport=" Francisco Prieto Donate 105

24 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME style="document"/> <operation name="request"> <soap:operation soapaction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> Aquí se especifica que los mensajes van a seguir el estilo document/literal. <service>: Define la ubicación del servicio. Ejemplo: <service name="serverscript"> <port name="interfaceport" binding="tns:interfacebinding"> <soap:address location=" </port> </service> Se indica que el servicio estará situado en la dirección Cabe resaltar que los elementos de un documento WSDL siguen un orden tal que el primer elemento, types, se corresponde con el nivel más bajo de la estructura representada anteriormente. De la misma forma el último elemento, service, se corresponde con el nivel más alto de la estructura jerárquica representada en la figura anterior Estilo y uso de un documento WSDL Un archivo WSDL puede tener un estilo de llamada a procedimiento remoto (RPC) o un estilo documento (document), que afectará al formato de los datos en dicho archivo y en los mensajes SOAP que se intercambien. Será el atributo opcional style el que indicará el estilo del mensaje. 106 Francisco Prieto Donate

25 Un valor RPC indica que el mensaje utiliza una codificación de tipo RPC, cuyo objetivo es representar una llamada de método y una lista de parámetros. Un valor document indica que el mensaje tiene un estilo de tipo documento, esto es, el mensaje representa un solo documento. En el caso de no especificar ningún estilo, se asume document por defecto. Un archivo WSDL con estilo RPC tendría la siguiente forma: <message name="mymethodrequest"> <part name="x" type="xsd:int"/> <part name="y" type="xsd:float"/> </message> <message name="empty"/> <porttype name="pt"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> Define dos mensajes: El primero de petición, llamado mymethodrequest que recibe dos parámetros numéricos, uno entero y otro flotante. El segundo mensaje está vacío. Por último especifica la operación mymethod que recibe el mensaje mymethodrequest y devuelve el mensaje vacío empty. Este mismo ejemplo en estilo documento sería así: <types> <schema> <element name="xelement" type="xsd:int"/> <element name="yelement" type="xsd:float"/> </schema> </types> <message name="mymethodrequest"> <part name="x" element="xelement"/> <part name="y" element="yelement"/> Francisco Prieto Donate 107

26 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME </message> <message name="empty"/> <porttype name="pt"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> En este caso se crea un esquema con los elementos xelement e yelement de tipos entero y flotante respectivamente, y en el mensaje se especifican estos elementos en lugar de los tipos. RPC tiene la ventaja de ser más simple, pero el estilo documento es más correcto, ya que el archivo WSDL podría validarse con un analizador XML y además cumple con las especificaciones de WS-I, que promueve la interoperabilidad de servicios web. Otro factor que afecta a los mensajes SOAP del servicio es el uso, que puede ser codificado (encoded) o literal. Un mensaje SOAP RPC/encoded tendría la siguiente forma: <soap:envelope> <soap:body> <mymethod> <x xsi:type="xsd:int"> </x> 5 <y xsi:type="xsd:float"> </y> 5.0 </mymethod> </soap:body> </soap:envelope> 108 Francisco Prieto Donate

27 Como se puede apreciar en el propio mensaje se identifica el tipo del parámetro. Esto hace al mensaje más legible, aunque en realidad no aporta información ya que el que recibe el mensaje ya sabe el tipo de los parámetros, por lo que es poco eficiente. Además no es compatible con WS-I. Un mensaje RPC/literal sería así: <soap:envelope> <soap:body> <mymethod> <x> 5 </x> <y> </y> 5.0 </mymethod> </soap:body> </soap:envelope> En este caso no se envía el tipo en el mensaje lo que mejora la eficiencia, además este modo sí es compatible con WS-I. Sin embargo sigue sin poder validarse con facilidad. Un mensaje document/literal tendría este aspecto: <soap:envelope> <soap:body> <xelement> 5 </xelement> <yelement> Francisco Prieto Donate 109

28 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME 5.0 </yelement> </soap:body> </soap:envelope> Este modo sí es validado fácilmente, y es compatible con WS-I siempre que el elemento soap:body tenga un sólo hijo. Esto provoca el problema de que en ocasiones es imposible distinguir a qué método remoto está dirigido el mensaje. Para evitar los problemas de cada tipo Microsoft creó el modo document/literal wrapped, que no está definido en ningún sitio. Este modo complica mucho el archivo WSDL, que tendría el siguiente aspecto: <types> <schema> <element name="mymethod"> <complextype> <sequence> <element name="x" type="xsd:int"/> <element name="y" type="xsd:float"/> </sequence> </complextype> </element> <element name="mymethodresponse"> <complextype/> </element> </schema> </types> <message name="mymethodrequest"> <part name="parameters" element="mymethod"/> </message> <message name="empty"> <part name="parameters" element="mymethodresponse"/> </message> 110 Francisco Prieto Donate

29 <porttype name="pt"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> En este caso los elementos que se definen en el esquema no son los parámetros por separado, sino el conjunto de parámetros para cada mensaje. Ahora, el mensaje SOAP sí contendrá un elemento con el nombre de la operación <soap:envelope> <soap:body> <mymethod> <x> 5 </x> <y> 5.0 </y> </mymethod> </soap:body> </soap:envelope> La diferencia entre document y wrapped podría verse de la siguiente forma: el mensaje document se mapearía en un método así: public void method (mymethod m); Es decir, mymethod se considera como un objeto que contiene dos elementos. En cambio, el mensaje wrapped sería: public void mymethod (int x, int y); Francisco Prieto Donate 111

30 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Generación del documento WSDL La mayoría de aplicaciones de desarrollo de servicios web cuentan con una herramienta de generación automática del archivo WSDL, por ejemplo, Java2WSDL. Si ejecutamos esta aplicación desde la línea de comandos basta pasar como parámetro la clase principal de nuestro servicio y obtenemos un documento WSDL perfectamente viable. En otros casos es el propio servidor web XML el que crea automáticamente el documento WSDL a partir del servicio web desplegado Interpretación del documento WSDL El esquema general de un servicio web se muestra en la siguiente figura: Figura 4.3: Esquema de un servicio web El cliente obtendría el documento WSDL, generalmente de la dirección del servicio o por medio del descubrimiento UDDI, y a partir de ahí se comunicaría con el servicio mediante mensajes SOAP. Sin embargo los dispositivos móviles no tienen la capacidad suficiente como para interpretar el documento WSDL, por lo que el esquema de servicio web para móviles es ligeramente distinto. En el caso de ksoap se debe tener en cuenta el formato de la comunicación a nivel de código, ya que la petición SOAP se crea añadiendo los parámetros necesarios a un objeto SOAP y enviándolo luego al servidor. La aproximación ksoap pierde mucha flexibilidad, ya que sería necesario retocar el código en caso de pequeños cambios en el servicio. El caso de JSR-172 es diferente y sigue el siguiente esquema: 112 Francisco Prieto Donate

31 Figura 4.4: Esquema de un servicio web JSR-172 En este caso antes de incorporar la aplicación al dispositivo móvil es necesario obtener un stub a partir del documento WSDL. Una vez creado, el cliente puede llamar al servicio web a través del stub. Así el formato de la comunicación es totalmente transparente, ya que basta con invocar un método del stub para que se realice la petición y se reciba la respuesta. 4.5 UDDI Concepto de UDDI Ya tenemos desplegado nuestro Servicio Web y hemos determinado la forma de invocarlo mediante su correspondiente archivo WSDL. Lógicamente, el siguiente paso consiste en definir cómo se dará a conocer el servicio para que los clientes interesados puedan descubrirlo fácilmente y utilizarlo en sus aplicaciones. En la actualidad existe un mecanismo de descubrimiento que cumple estos requisitos: UDDI (Universal Description, Discovery and Integration), una iniciativa que permite hacer compatible el descubrimiento de servicios Web con todo tipo de tecnologías y plataformas. Tres empresas, IBM, Microsoft y Ariba empezaron con la iniciativa UDDI. Su objetivo era definir criterios para permitir que las empresas se descubriesen las unas a las otras, que interactuasen y compartieran información en un registro global. Este registro, llamado UBR (UDDI Business Register), era distribuido por las empresas Francisco Prieto Donate 113

32 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME IBM, Microsoft, y SAP. Desde Enero de 2006 ninguna de estas empresas publica ya el registro global de UDDI, aunque han implementado la especificación en sus productos. UDDI es un registro público diseñado para almacenar de forma estructurada información sobre empresas y los servicios que éstas ofrecen. A través de UDDI se puede publicar y descubrir información de una empresa y de sus servicios. Se puede utilizar sistemas taxonómicos para clasificar estos datos y poder encontrarlos posteriormente en función de la categorización. Por tanto, UDDI puede responder a todas estas preguntas: Qué interfaces de servicios Web basadas en WSDL se han publicado y establecido para un sector determinado? Qué empresas han escrito una implementación basada en una de estas interfaces? Qué servicios Web, categorizados de algún modo, se ofrecen actualmente? Qué servicios Web ofrece una empresa determinada? Con quién se debe poner en contacto el usuario para utilizar los servicios Web de una empresa? Cuáles son los detalles de implementación de un servicio Web concreto? Datos almacenados en el registro UDDI almacena en su registro tres tipos de datos publicados por las empresas. Se puede hacer una analogía con las guías de teléfonos, ya que se ofrecen Páginas Blancas, Páginas Amarillas y Páginas Verdes. Las Páginas Blancas contienen información del tipo de nombre de la empresa, información para contactar y descripción de la compañía. Las Páginas Amarillas contienen información que clasifica a la empresa. Esta información se basa en mecanismos de clasificación de criterios industriales como la NAICS (North American Industry Classification System) o clasificaciones geográficas. 114 Francisco Prieto Donate

33 Las Páginas Verdes ofrecen información técnica sobre los servicios que ofrece la empresa Publicación en UDDI La publicación en UDDI es un proceso relativamente sencillo. El primer paso consiste en determinar información básica sobre cómo definir la empresa y los servicios en UDDI. El siguiente paso, una vez determinada esta información, consiste en llevar a cabo el registro. Por último, se debe probar la entrada para asegurar que se registró correctamente y que aparece tal y como se esperaba en diferentes tipos de búsquedas y herramientas. Partiendo del modelo de datos descrito anteriormente, la información necesaria para establecer una entrada de UDDI es la siguiente: Archivos WSDL que utilizan las implementaciones del servicio Web. Nombre de la empresa y una breve descripción de la misma en varios idiomas, si es necesario, así como los contactos principales para los servicios Web que ofrece. Las categorías e identificaciones adecuadas para la empresa. Los servicios Web que la empresa ofrece a través de UDDI. Las categorías adecuadas para los servicios. Una vez recopilada esta información, se debe proceder al registro del servicio web. Actualmente cada compañía ofrece sus implementaciones de la especificación UDDI, de modo que cada una de ellas contará con un modo distinto de llevar a cabo el registro Búsqueda en UDDI Anteriormente la búsqueda en UDDI consistía en acudir a cualquiera de las webs que los operadores UDDI ponían a disposición para la consulta de servicios web en el registro global. Tras la decisión tomada por estos operadores de cesar el servicio de Francisco Prieto Donate 115

34 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME registro global, la búsqueda en UDDI implica tener que conocer nodos en los que se tenga la certeza que están publicando algún registro UDDI. 4.6 Servicios Web XML para dispositivos móviles El uso de SOAP para transferir datos en lugar de otras tecnologías tiene sus ventajas. En primer lugar SOAP define más de 40 tipos de datos estándar a transmitir mediante lenguaje XML. En segundo lugar permite distintos esquemas de comunicación como pueden ser llamadas a procedimientos remotos (RPC), mensajes asíncronos, multicast, etc. En último lugar, y debido a que SOAP ha ganado tanta popularidad en los servicios Web, otros muchos protocolos han enfocado sus esfuerzos a poder interactuar con éste, como es el caso de WSDL o UDDI ksoap ksoap es una API SOAP diseñada para ser utilizada con Java 2 Microedition. Está basado en kxml, un parser XML de tipo pull que funciona en todas las plataformas Java, incluida J2ME. Debido a su reducido tamaño y consumo de memoria, se suele utilizar en Applets de Java en PDAs o en dispositivos móviles con soporte MIDP. ksoap implementa un subconjunto de la especificación SOAP 1.1. La razón para no incluir todas las características se debe a las reducidas capacidades de memoria con que cuentan los dispositivos J2ME SOAP parsers Una vez que se tenga un mensaje SOAP se pueden extraer de él los distintos datos que tenga almacenados mediante un parser XML, pero será más cómodo hacerlo mediante un parser SOAP ya que, con el primero habría que extraer la información en forma de texto para después pasarla a un objeto Java que la contenga, mientras que con el parser SOAP la extracción de datos es directa. En el caso concreto de este proyecto, el parser SOAP será ksoap. Un parser SOAP se construye sobre un parser genérico XML al cual se le añade una serie de mecanismos específicos con los cuales realizar el mapeo de datos. Dicho parser SOAP es capaz de comprender los tipos de datos de la información almacenada 116 Francisco Prieto Donate

35 en el mensaje XML y de forma automática convertir texto en objetos Java, lo cual es una gran ventaja para el programador. Solo es necesario pasar los datos a un SOAP writer y quedarse a la espera de la respuesta del SOAP parser. Un ejemplo de todo esto puede verse en el siguiente mensaje SOAP en el que se ha almacenado un String que contenga el típico ejemplo Hola Mundo. <SOAP-ENV:Envelope xmlns:soap-env=" xmlns:xsi=" xmlns:xsd=" <SOAP-ENV:Body> <message xsi:type="xsd:string"> Hola Mundo </message> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Si a este mensaje SOAP le pasamos un parser SOAP podremos obtener fácilmente el String almacenado. Supongamos que el mensaje anterior se encuentra en el String mesg : ByteArrayInputStream bis = new ByteArrayInputStream (mesg.getbytes ()); InputStreamReader reader = new InputStreamReader (bis); XmlParser xp = new XmlParser (reader); // Se realiza un mapeo directo entre objetos Java // y elementos Soap SoapEnvelope envelope = new SoapEnvelope (new ClassMap (Soap.VER12)); envelope.parse (xp); // Obtenemos el texto almacenado String result = (String) envelope.getbody(); Francisco Prieto Donate 117

36 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME En un mensaje SOAP el atributo xsi:type especifica el tipo de dato de un elemento del mensaje, por ejemplo <midato xsi:type="xsd:int">123</midato> especifica un entero de valor 123, en cambio <midato xsi:type="xsd:string">123</midato> especifica un string de valor 123. Es decir, ksoap es capaz de mapear de forma directa ciertos tipos de datos Java, concretamente: Tipo SOAP Tipo Java xsd:int java.lang.integer xsd:long java.lang.long xsd:string java.lang.string xsd:boolean java.lang.boolean Tabla 4.2: Tipos de datos Java mapeados por ksoap A la hora de obtener los distintos datos almacenados en un mensaje SOAP el SOAP parser lee elemento a elemento cado uno de los elementos XML que hay en el mensaje y que contienen un dato y realiza el mapeo a un objeto Java de acuerdo con las siguientes reglas: 1. Si el elemento SOAP es uno de los elementos primitivos indicados en la tabla anterior el mapeo se hace directamente. 2. Si el elemento es un tipo primitivo pero no es uno de los de la tabla anterior, lo convierte a un objeto SoapPrimitive. De éste se puede obtener o bien información mediante los métodos SoapPrimitive.getNamespace() y SoapPrimitive.getName() o bien su valor mediante el método SoapPrimitive.toString(). 118 Francisco Prieto Donate

37 3. Si el elemento SOAP es un tipo complejo con varios subcampos, se convierte a un objeto de tipo KvmSerializable, concretamente al objeto SoapObject que pertenece a la interfaz KvmSerializable, y de este SoapObject se obtiene la información con los métodos SoapObject.getNamespace() y SoapObject.getName() Composición/Descomposición de un mensaje SOAP Supongamos que queremos montar un mensaje XML mediante los métodos que facilita ksoap. Para ello utilizaremos una serie de métodos que montarán un mensaje que después almacenaremos en un String y que posteriormente transmitiremos por la red. Supongamos que el mensaje que queremos crear es el siguiente: <SOAP-ENV:Envelope xmlns:soap-enc=" xmlns:soap-env=" xmlns:xsi=" xmlns:xsd=" <SOAP-ENV:Body SOAP-ENV:encodingStyle=" <StockOrderParameters id="o0" SOAP-ENC:root="1"> <Symbol xsi:type="xsd:string"> XYZ </Symbol> <From xsi:type="xsd:string"> Michael Yuan </From> <Shares xsi:type="xsd:int"> 1000 </Shares> Francisco Prieto Donate 119

38 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME <Buy xsi:type="xsd:boolean"> true </Buy> <LimitPrice xsi:type="xsd:float"> </LimitPrice> </StockOrderParameters> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Para montar todo este mensaje sencillamente tenemos que usar una serie de métodos Java proporcionados por la librería de ksoap de forma que el código obtenido sería: // Creamos el objetos SOAP que almacene el mensaje SoapObject method = new SoapObject("", "StockOrderParameters"); //Añadímos cada uno de los parámetros method.addproperty("symbol", "XYZ"); method.addproperty("from", "Michael Yuan"); method.addproperty("shares", new Integer (1000)); method.addproperty("buy", new Boolean (true)); method.addproperty("limitprice", new SoapPrimitive (" "float", "123.4")); // Ensamblamos el mensaje pasándolo por un SoapEnvelope // Después lo almacenamos en un String ByteArrayOutputStream bos = new ByteArrayOutputStream (); XmlWriter xw = new XmlWriter (new OutputStreamWriter (bos)); // En este caso el mapeo es directo SoapEnvelope envelope = new SoapEnvelope (new ClassMap (Soap.VER12)); 120 Francisco Prieto Donate

39 envelope.setbody (method); envelope.write (xw); xw.flush (); bos.write ('\r'); bos.write ('\n'); byte [] requestdata = bos.tobytearray (); String requestsoapmesg = String (requestdata); Supongamos ahora el caso contrario, queremos extraer de un mensaje SOAP, que nos ha llegado como respuesta a una petición anterior, una serie de parámetros. Si el mensaje SOAP es el siguiente: <SOAP-ENV:Envelope xmlns:soap-env=" xmlns:xsi=" xmlns:xsd=" <SOAP-ENV:Body> <result> <OrderStatus> <CustomerName xsi:type="xsd:string"> Michael Yuan </CustomerName> <Symbol xsi:type="xsd:string"> XYZ </Symbol> <Share xsi:type="xsd:int"> 1000 </Share> <Buy xsi:type="xsd:boolean"> true </Buy> <Price xsi:type="xsd:float"> Francisco Prieto Donate 121

40 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME </Price> <ExecTime xsi:type="xsd:datetime"> T23:20:50.52Z </ExecTime> </OrderStatus> </result> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Para extraer de este mensaje todos los parámetros, suponiendo que todo el mensaje está en el String soaprespmesg, el código que habría que ejecutar es: ByteArrayInputStream bis = new ByteArrayInputStream (soaprespmesg.getbytes ()); InputStreamReader reader = new InputStreamReader (bis); XmlParser xp = new XmlParser (reader); // El mapeo en este caso es directo SoapEnvelope envelope = new SoapEnvelope (new ClassMap (Soap.VER12)); envelope.parse (xp); // Obtenemos la estructura de datos. SoapObject orderstatus = (SoapObject) envelope.getresult(); // Pasamos los datos a su correspondiente tipo Java String customername = (String) orderstatus.getproperty ("CustomerName"); String symbol = (String) orderstatus.getproperty ("Symbol"); Integer share = (Integer) orderstatus.getproperty ("Share"); Boolean buy = (Boolean) orderstatus.getproperty ("Buy"); // Puesto que MIDP no tiene tipo "Float" no existe correspondencia // entre el tipo objeto Java y "xsd:float" tipo SOAP. Por lo que // este elemento es mapeado a un objeto "SoapPrimitive". 122 Francisco Prieto Donate

41 SoapPrimitive price = (SoapPrimitive) orderstatus.getproperty ("Price"); SoapPrimitive exectime = (SoapPrimitive) orderstatus.getproperty ("ExecTime"); Datos complejos en un mensaje SOAP La importancia de SOAP reside en la facilidad que ofrece de poder representar datos de tipos con estructuras complejas, como pueden ser arrays, o incluso estructuras de datos que nosotros mismos definamos. De esta forma, si queremos incluir en un mensaje SOAP un array con una serie de elementos, podemos hacerlo sin más problemas. Supongamos que un servicio Web realiza una serie de operaciones que le hemos solicitado y nos devuelve el siguiente mensaje SOAP en el que ha incluido un array: <SOAP-ENV:Envelope xmlns:soap-env=" xmlns:soap-enc=" xmlns:xsi=" xmlns:xsd=" xmlns:n=" <SOAP-ENV:Body> <result> <OrderStatus xsi:type="n:orderstatus"> <CustomerName xsi:type="xsd:string"> Michael Yuan </CustomerName> <Transactions xsi:type="soap-enc:array" SOAP-ENC:arrayType="n:transaction[2]"> <Transaction xsi:type="n:transaction"> <Symbol xsi:type="xsd:string"> ABC </Symbol> Francisco Prieto Donate 123

42 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME <Share xsi:type="xsd:int"> 500 </Share> <Buy xsi:type="xsd:boolean"> true </Buy> <Price xsi:type="xsd:float"> </Price> </Transaction> <Transaction xsi:type="n:transaction"> <Symbol xsi:type="xsd:string"> XYZ </Symbol> <Share xsi:type="xsd:int"> 1000 </Share> <Buy xsi:type="xsd:boolean"> true </Buy> <Price xsi:type="xsd:float"> </Price> </Transaction> </Transactions> </OrderStatus> </result> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 124 Francisco Prieto Donate

43 Al recibirse este mensaje, ksoap lee el array y lo introduce en un objeto de tipo java.util.vector y mediante el método Vector.elementAt(i) extrae de dicho array el elemento i-ésimo de entre todos los elementos que lo componen. Dependiendo del tipo del arraytype este objeto será almacenado en un SoapObject, en un SoapPrimitive, en un tipo por defecto Java, etc. Si suponemos que todo este mensaje SOAP se encuentra dentro del String arraysoaprespmesg, el código que realizaría la extracción del array sería: ByteArrayInputStream bis = new ByteArrayInputStream (arraysoaprespmesg.getbytes ()); InputStreamReader reader = new InputStreamReader (bis); XmlParser xp = new XmlParser (reader); SoapEnvelope envelope = new SoapEnvelope (new ClassMap (Soap.VER12)); envelope.parse (xp); SoapObject orderstatus = (SoapObject) envelope.getresult(); String customername = (String) orderstatus.getproperty ("CustomerName"); Vector transactions = (Vector) orderstatus.getproperty ("Transactions"); // Primer elemento del array SoapObject transaction0 = (SoapObject) transactions.elementat(0); String symbol0 = (String) transaction0.getproperty ("Symbol"); Integer share0 = (Integer) transaction0.getproperty ("Share"); Boolean buy0 = (Boolean) transaction0.getproperty ("Buy"); SoapPrimitive price0 = (SoapPrimitive) transaction0.getproperty ("Price"); // Segundo elemento del array SoapObject transaction1 = (SoapObject) transactions.elementat(1); String symbol1 = (String) transaction1.getproperty ("Symbol"); Integer share1 = (Integer) transaction1.getproperty ("Share"); Boolean buy1 = (Boolean) transaction1.getproperty ("Buy"); SoapPrimitive price1 = (SoapPrimitive) transaction1.getproperty ("Price"); Francisco Prieto Donate 125

44 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Protocolo HTTP mediante SOAP El gran potencial que tiene SOAP a la hora de serializar datos para transmitirlos a través de una red se complementa con una funcionalidad extremadamente útil, que es el uso del protocolo HTTP de forma directa. Dicho de otra manera, no vamos a tener que controlar HTTP explícitamente sino que esta tarea se deja en manos del API que implementa SOAP. ksoap cuenta con la clase HttpTransport que es la que aporta la funcionalidad de envío y recepción de mensajes SOAP vía HTTP. La forma de conexión que ofrece es una llamada a procedimiento remoto (RPC), tal que el método HttpTransport.call() toma como entrada un objeto KvmSerializable, lo serializa introduciéndolo en un mensaje SOAP completo que él mismo monta, envía dicho mensaje al servicio Web cuya dirección se haya indicado y recibe el mensaje respuesta que venga de vuelta. Tras esto pasa el mensaje recibido por un parser SOAP, llama al método SoapEnvelope.getResult() para que le devuelva el objeto Java correspondiente y dé como resultado este objeto. Y todo esto de forma automática. La forma de utilizar este método es muy sencilla, lo vemos con el siguiente ejemplo: // Resultado de la llamada al servicio Web String result = null; // Dato a transmitir al servicio Web int dato = 100; // Creamos el objeto SOAP para la llamada al servicio SoapObject rpc = new SoapObject ("urn:nombre del método", "nombre del método"); // Introducimos el parámetro en el mensaje SOAP rpc.addproperty ("dato", dato); // Configuramos la llamada al servicio Web HttpTransport ht = new HttpTransport("URL destino", nombre del método); // Llamamos al servicio Web y recibimos su respuesta 126 Francisco Prieto Donate

45 result = ht.call (rpc); JSR Introducción Las APIs de servicios web (WSA) para J2ME se definen en la Java Specification Request 172 (JSR-172). Son dos paquetes independientes y opcionales, uno dedicado a la invocación de servicios remotos y otro dedicado al análisis XML. Están centrados en la CDC y las CLDC 1.0 y CLDC 1.1. La importancia de esto estriba en que la especificación JSR-172 proporciona servicios de invocación remota y análisis XML a nivel de dispositivo, evitando así que los desarrolladores de software tengan que incorporar dichas funcionalidades en sus aplicaciones. Los servicios web en la J2ME, definidos por la JSR-172, siguen las mismas especificaciones, arquitectura y modelo de invocación que los servicios web estándar, es decir: SOAP 1.1 (Simple Object Access Protocol), que define el transporte y codificación de datos. XML 1.0, que define el lenguaje XML. Hay una cantidad importante de especificaciones que cubren las distintas tecnologías relacionadas con servicios web, y su número continúa creciendo. Por ello la Organización para la Interoperabilidad de Servicios Web (WS-I) ha definido el WS-I Basic Profile 1.0, que establece las especificaciones mínimas y las reglas que todos los proveedores de servicios web básicos deben seguir. La especificación JSR-172 se ha desarrollado de acuerdo al WS-I Basic Profile, aunque no soporta la especificación UDDI Invocación remota La WSA de JSR-172 afronta los servicios web desde el punto de vista del cliente del servicio: WSA proporciona la API de invocacion remota (JAX-RPC) y el entorno de ejecución que permite a las aplicaciones J2ME consumir servicios en la web, pero no funcionar como productores de servicios. Aparte de esta diferencia, el resto de la arquitectura sigue la estructura y organización estándar de los servicios web. Francisco Prieto Donate 127

46 Transmisión de Imágenes de Vídeo mediante Servicios Web XML sobre J2ME Esta arquitectura de alto nivel está estructurada en: Un cliente, el consumidor de los servicios web. Consta de una aplicación J2ME, como MIDP, un stub de JSR-172 con las clases necesarias y la ejecución de JSR La red: Hace referencia a la red inalámbrica y a los protocolos de comunicación. JSR-172 no impone el uso de XML en el propio dispositivo; permite otras implementaciones (siempre que sean transparentes al cliente y al servidor) para usar codificaciones más eficientes, como el uso de protocolos binarios entre el dispositivo y la pasarela inalámbrica. El servidor: Productor de servicios web. Es un servidor web, típicamente detrás de un firewall o una pasarela Proxy, que puede tener acceso a recursos de respaldo. Las aplicaciones J2ME invocan servicios remotos a través de los stubs y de la ejecución de JSR-172, típicamente sobre HTTP y SOAP. Dichos stubs esconden toda la complejidad asociada a la invocación del servicio remoto, incluyendo cómo se van a codificar y decodificar los parámetros de la solicitud y la respuesta, y todo lo relacionado con la red de comunicaciones. La invocación de métodos sigue el modelo síncrono de petición-respuesta, como se ve en la figura: Figura 4.5: Modelo de invocación de JSR-172 Para consumir un servicio web antes hay que crear stubs de invocación de servicio. Estos stubs realizan tareas como la codificación y descodificación de los valores enviados y recibidos, y actúan de interfaz de la ejecución de JSR-172 para invocar un punto de servicio remoto. Los stubs interactúan con la ejecución a través del Interfaz de Proveedor de Servicio (SPI), que abstrae los detalles de implementación y permite portabilidad de stubs entre distintas implementaciones. 128 Francisco Prieto Donate

APLICACIONES DE INTERNET: SOAP

APLICACIONES DE INTERNET: SOAP Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

Tema 3.1: Introducción a Servicios Web

Tema 3.1: Introducción a Servicios Web Tema 3.1: Introducción a Servicios Web Servicios Web (1) La Web proporciona un mecanismo de transporte universal, eficiente, robusto, escalable y probado tanto en aplicaciones inter-organización como intraorganización.

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

APLICACIONES DE INTERNET: SERVICIOS DE RED Y WEB

APLICACIONES DE INTERNET: SERVICIOS DE RED Y WEB Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

Servicios web. Contenido. Programación en Internet Curso 2007-2008. Introducción Los pilares (SOAP, WSDL, UDDI) Desarrollo de un servicio web

Servicios web. Contenido. Programación en Internet Curso 2007-2008. Introducción Los pilares (SOAP, WSDL, UDDI) Desarrollo de un servicio web Departamento de Lenguajes y Sistemas Informáticos Servicios web Programación en Internet Curso 2007-2008 Contenido Introducción Los pilares (SOAP, WSDL, UDDI) Desarrollo de un servicio web DLSI - Universidad

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

2.5.1. Procesamiento de documentos XML.

2.5.1. Procesamiento de documentos XML. 2.5.1. Procesamiento de documentos XML. Un analizador o parser XML es una herramienta encargada de leer documentos XML [17], poder acceder a sus elementos y comprobar si el documento es sintácticamente

Más detalles

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB Existen varios tipos de tecnologías para los Servidores Web, estas tecnologías se pueden dividir en 4 grupos principales que son: Tecnologías al lado del cliente

Más detalles

CAPÍTULO 2: DISEÑO GLOBAL DEL PROYECTO

CAPÍTULO 2: DISEÑO GLOBAL DEL PROYECTO CAPÍTULO 2: DISEÑO GLOBAL DEL PROYECTO En este capítulo explicamos de manera global cómo hemos realizado la implementación del proyecto. Para ello primero vemos por encima las partes que integran el proyecto

Más detalles

UNIDAD 1 GENERALIDADES HTML

UNIDAD 1 GENERALIDADES HTML UNIDAD 1 GENERALIDADES HTML GENERALIDADES HTML5 Una página web es un archivo con texto en el que se insertan diferentes etiquetas HTML, para que ese contenido pueda ser interpretado por el navegador web.

Más detalles

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos III. Otros entornos de objetos distribuidos 1. Problemas de CORBA 2. Java Enterprise Edition 1. EJB 2. Servidor de aplicaciones

Más detalles

TEMA 5. Otras arquitecturas distribuidas IV. Web Services

TEMA 5. Otras arquitecturas distribuidas IV. Web Services TEMA 5. Otras arquitecturas distribuidas IV. Web Services IV. Web Services 1. Qué son los Web Services? 2. Ejemplos de Web Services 3. Tecnologías y arquitectura 3.1. Arquitectura 3.2. Lenguaje de descripción:

Más detalles

Introducción a XML (III) - Web Services Huibert Aalbers Senior Certified Software IT Architect

Introducción a XML (III) - Web Services Huibert Aalbers Senior Certified Software IT Architect Introducción a XML (III) - Web Services Huibert Aalbers Senior Certified Software IT Architect IT Insight podcast Este podcast pertenece a la serie IT Insight Pueden suscribirse al podcast a través de

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

SICRES 3.0 Presentación Ejecutiva

SICRES 3.0 Presentación Ejecutiva Presentación Ejecutiva 1 Antecedentes: El estándar SICRES 2.0 es una norma para el intercambio de asientos registrales aprobada en 1999 por el entonces Consejo Superior de Informática (actualmente Consejo

Más detalles

Serialización de datos en C# en Binario, Soap y Xml

Serialización de datos en C# en Binario, Soap y Xml Serialización de datos en C# en Binario, Soap y Xml Quizás muchos desarrolladores hayan escuchado hablar del termino serializar la información y no saber de que se trata. Pues bien, resulta que la serialización

Más detalles

XML Bien Formado. <nombre> José </nombre> y también puede ser un elemento el siguiente:

XML Bien Formado. <nombre> José </nombre> y también puede ser un elemento el siguiente: XML Bien Formado Hasta ahora hemos visto por qué XML tiene sentido para la comunicación de datos. Ahora vamos a ver como crear nuestros propios documentos XML. Para crear un documento XML, debemos conocer

Más detalles

PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC

PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC PRACTICA FINAL Diseño e implementación de un servidor Web básico y cliente http Descripción de la práctica Protocolo HTTP-RC Se pretende desarrollar un servidor Web básico con soporte a múltiples conexiones

Más detalles

Universidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación

Universidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación Universidad Autónoma Metropolitana Unidad Azcapotzalco División de Ciencias Básicas e Ingeniería Licenciatura en Ingeniería en Computación Propuesta de Proyecto Terminal Clasificación de servicios web

Más detalles

Servicio Web. Estándares empleados. Ventajas de los servicios web. Inconvenientes de los servicios Web

Servicio Web. Estándares empleados. Ventajas de los servicios web. Inconvenientes de los servicios Web Servicio Web Un servicio web (en inglés, Web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones

Más detalles

Qué son los Web Services?

Qué son los Web Services? III. Web Services 1. Qué son los Web Services? 2. Ejemplos de Web Services 3. Tecnologías y arquitectura 3.1. Arquitectura 3.2. Lenguaje de descripción: WSDL 3.3. Protocolo: SOAP 3.4. Registro de servicios:

Más detalles

Diseño arquitectónico 1ª edición (2002)

Diseño arquitectónico 1ª edición (2002) Unidades temáticas de Ingeniería del Software Diseño arquitectónico 1ª edición (2002) Facultad de Informática objetivo Los sistemas grandes se descomponen en subsistemas que suministran un conjunto relacionado

Más detalles

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Tecnología XML Unidad: 3 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Indice Repaso XML DTD Entidades Concepto Tipos Internas Externas Espacio

Más detalles

Introduccion a HTML y Formularios. Gerardo Grinman 5D

Introduccion a HTML y Formularios. Gerardo Grinman 5D Introduccion a HTML y Formularios Gerardo Grinman 5D COMO FUNCIONA LA WEB 1. Cuando se conecta a la web, lo hace a través de un proveedor de servicios de Internet (ISP). Se escribe el nombre de dominio

Más detalles

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52) LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52) LENGUAJES DE PROGRAMACIÓN WEB (PHP, HTML5) 1 Sesión No. 5 Nombre: Lenguaje de presentación Objetivo: Conocer la importancia de los lenguajes de presentación.

Más detalles

Sistemas Operativos Distribuidos. Introducción a los Servicios Web (Web Services)

Sistemas Operativos Distribuidos. Introducción a los Servicios Web (Web Services) Introducción a los Servicios Web (Web Services) 2 Evolución de la Web Pasado: Web de documentos Páginas estáticas Web como un enorme repositorio de información Tecnologías: HTTP + HTML Presente: Web de

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Sistemas distribuidos

Sistemas distribuidos Sistemas distribuidos El primer elemento clave en un sistema distribuido es la red. Definición Cualquier conjunto de dos o más equipos informáticos interconectados entre sí con el objetivo de compartir

Más detalles

Introducción a XML. Alberto Molina Coballes. Lenguajes de Marcas y Sistemas de Gestión de la Información

Introducción a XML. Alberto Molina Coballes. Lenguajes de Marcas y Sistemas de Gestión de la Información Introducción a XML Alberto Molina Coballes Lenguajes de Marcas y Sistemas de Gestión de la Información 18 de septiembre de 2012 Qué es XML? Wikipedia: Es un conjunto de reglas para codificar un documento

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

Tema 4. Servicios WEB

Tema 4. Servicios WEB Tema 4. Servicios WEB SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs octubre 2008 FJRP, FMBR 2008/09 ccia SCS 4.1 Servicios WEB Un Servicio Web es un componente software

Más detalles

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el

Más detalles

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) aprenderaprogramar.com Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029 Autor: Mario R. Rancel

Más detalles

Tema IV El lenguaje de programación PHP Tipos de Datos

Tema IV El lenguaje de programación PHP Tipos de Datos Tema IV El lenguaje de programación PHP Tipos de Datos Semestre: B-2013 Profesora: Nelly García Mora Agenda 1. Introducción al lenguaje de programación 2. Conceptos básicos 3. Ventajas y desventajas 4.

Más detalles

1. Introducción a los Servicios web

1. Introducción a los Servicios web 1. Introducción a los Servicios web Los servicios web son un tipo de middleware mediante el que pueden comunicarse aplicaciones remotas. En esencia, funciona como cualquier otro tipo de middleware (rmi,

Más detalles

Qué es World Wide Web? La red como instrumento de comunicación. Sugerencias para sacar el máximo partido de WWW. Requisitos para utilizar WWW

Qué es World Wide Web? La red como instrumento de comunicación. Sugerencias para sacar el máximo partido de WWW. Requisitos para utilizar WWW Qué es World Wide Web? La red como instrumento de comunicación WWW se compone de diferentes sitios Web, conocidos como páginas Web, que han sido creados por personas y organizaciones de todo el mundo,

Más detalles

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B) APRENDERAPROGRAMAR.COM COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP

Más detalles

BLOQUE I: HOJA DE CÁLCULO

BLOQUE I: HOJA DE CÁLCULO 4. Organización, secuenciación y temporización de contenidos BLOQUE I: HOJA DE CÁLCULO En este bloque se pretende conocer y utilizar tanto la hoja de cálculo Excel como sus gráficos. Se aplicará la hoja

Más detalles

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II)

Cursos de Extensión Universitaria UNIVERSIDAD DE OVIEDO. Servicios Web (II) Fernández Acebal acebal@ieee.org OOTLab PROGRAMACIÓN ORIENTADA A OBJETOS CON C# EN LA PLATAFORMA.NET (II) Dpto. de Informática Lab - Laboratorio de Tecnologías Orientadas a Objetos www.ootlab.uniovi.es

Más detalles

INGENIERÍA DEL SOFTWARE

INGENIERÍA DEL SOFTWARE INGENIERÍA DEL SOFTWARE Sesión No. 11 INGENIERÍA DEL SOFTWARE 1 Nombre: Estereotipos y valores etiquetados de los paquetes Contextualización Los estereotipos dentro de los medios de programación son más

Más detalles

Innovación, Calidad e Ingeniería del Software

Innovación, Calidad e Ingeniería del Software Revista Española de Innovación, Calidad e Ingeniería del Software Volumen 3, No. 2, octubre, 2007 Web de la editorial: www.ati.es E-mail: reicis@ati.es ISSN: 1885-4486 Copyright ATI, 2007 Ninguna parte

Más detalles

ESET Secure Authentication

ESET Secure Authentication ESET Secure Authentication Comparativa de API frente a SDK Versión del documento 1.0 ESET Secure Authentication 2 Resumen ESET Secure Authentication proporciona una compatibilidad de fábrica para distintas

Más detalles

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access)

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access) INFORMÁTICA INFORMÁTICA 1 Sesión No. 10 Nombre: Gestor de Base de Datos (Access) Contextualización Microsoft Access es un sistema de gestión de bases de datos, creado para uso personal y de pequeñas organizaciones,

Más detalles

MICROSOFT EXCEL 2010

MICROSOFT EXCEL 2010 MICROSOFT EXCEL 2010 1. AVANZADO Nº Horas:24 Objetivos: Descripción de funciones avanzadas de la hoja de cálculo Microsoft Excel 2010, viendo el uso de fórmulas, funciones y gráficos en los libros de Excel.

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Fundamentos de programación JAVA

Fundamentos de programación JAVA Pág. N. 1 Fundamentos de programación JAVA Familia: Editorial: Autor: Computación e informática Macro Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-238-7 N. de páginas: 296 Edición: 2. a 2014 Medida:

Más detalles

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

TEMA 35: Estándares SGML y XML. Entornos de aplicación. Entornos de aplicación TEMA 35: Estándares SGML y. Entornos de aplicación. Índice 1 INTRODUCCIÓN 1 2 SGML 2 2.1 Cómo funciona SGML? 2 2.2 Definición de la sintaxis de un lenguaje SGML 3 2.3 Declaración

Más detalles

Diseño Web Avanzado con HTML5 y CSS3

Diseño Web Avanzado con HTML5 y CSS3 Diseño Web Avanzado con HTML5 y CSS3 METODOLOGÍA DE LOS CURSOS Cursos interactivos sobre materias especializadas en los que el alumno avanza de forma guiada bajo una concepción learning by doing (aprender

Más detalles

DISEÑO DEL SISTEMA DE INFORMACION (DSI)

DISEÑO DEL SISTEMA DE INFORMACION (DSI) DISEÑO DEL SISTEMA DE INFORMACION (DSI) El objetivo del proceso de Diseño del Sistema de Información (DSI) es la definición de la arquitectura del y del entrono tecnológico que le va a dar soporte, junto

Más detalles

Código Activación y Reseteo Contraseña

Código Activación y Reseteo Contraseña Código Activación y Reseteo Contraseña Este servicio está accesible (igual que el de adjudicación de una cuenta wifi temporal) desde el espacio Gestión de Identidad UCM (válido para alumnos y personal).

Más detalles

RESUMEN DE LAS DIAPOSITIVAS DE BASE DE DATOS 1

RESUMEN DE LAS DIAPOSITIVAS DE BASE DE DATOS 1 RESUMEN DE LAS DIAPOSITIVAS DE BASE DE DATOS 1 ANTES QUE NADA DEFINIR QUE ES UNA BASE DE DATOS: Una base de datos es una colección estructurada de datos, Un sistema de base de datos es una colección de

Más detalles

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011 TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso Origen Nuevo lenguaje de propósito general de Microsoft para la plataforma.net Es el único que ha sido diseñado específicamente.net

Más detalles

Desarrollo y servicios web

Desarrollo y servicios web Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2014-2 Qué vimos la clase pasada? Introducción a Big Data Introducción a bases de datos NOSQL Características bases de datos NOSQL MongoDB como motor

Más detalles

MANUAL PARA GESTIÓN DE METADATOS

MANUAL PARA GESTIÓN DE METADATOS MANUAL PARA GESTIÓN DE Los metadatos proporcionan información acerca de los datos. Describen un producto permitiendo conocer toda la información necesaria para definir si son adecuados o no para cierto

Más detalles

CORPORACION UNIVERSITARIA AUTONOMA DEL CAUCA PROGRAMA DE INGENIERIA DE SISTEMAS 2o Periodo de 2014 MATERIA: ELECTIVA IV (MEJORAMIENTO DE PROCESOS)

CORPORACION UNIVERSITARIA AUTONOMA DEL CAUCA PROGRAMA DE INGENIERIA DE SISTEMAS 2o Periodo de 2014 MATERIA: ELECTIVA IV (MEJORAMIENTO DE PROCESOS) Servicios Web en PHP Contenido Configuración Web Services en PHP o Cliente o Servidor Generación del WSDL Web Services en PHP Configuración Se debe actualizar el archivo de configuración del servidor APACHE

Más detalles

Enlace al documento: Consultation paper on draft Regulatory Technical Standards on European Electronic Access Point.

Enlace al documento: Consultation paper on draft Regulatory Technical Standards on European Electronic Access Point. Documento a consulta de ESMA sobre el proyecto de normas técnicas de regulación del Punto de Acceso Electrónico Europeo. (Consultation paper on draft Regulatory Technical Standards on European Electronic

Más detalles

Conceptos básicos de bases de datos

Conceptos básicos de bases de datos Conceptos básicos de bases de datos 1.1 Definición de base de datos Una base de datos es una colección de archivos relacionados que permite el manejo de la información de alguna compañía. Cada uno de dichos

Más detalles

UNIÓN INTERNACIONAL DE TELECOMUNICACIONES RED DIGITAL DE SERVICIOS INTEGRADOS (RDSI) ESTRUCTURA GENERALES

UNIÓN INTERNACIONAL DE TELECOMUNICACIONES RED DIGITAL DE SERVICIOS INTEGRADOS (RDSI) ESTRUCTURA GENERALES UNIÓN INTERNACIONAL DE TELECOMUNICACIONES UIT-T I.130 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT RED DIGITAL DE SERVICIOS INTEGRADOS (RDSI) ESTRUCTURA GENERALES MÉTODO DE CARACTERIZACIÓN

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya CADENAS DE CARACTERES Hasta ahora se han manejado variables de tipo caracter cuyo valor es un sólo caracter. En algunos casos, sin embargo, es necesario usar variables cuyos valores sean un conjunto (cadena)

Más detalles

Internet y Correo Electrónico. Guía del Usuario Página 13. Centro de Capacitación en Informática

Internet y Correo Electrónico. Guía del Usuario Página 13. Centro de Capacitación en Informática Guía del Usuario Página 13 World Wide Web World Wide Web es la forma más utilizada en Internet para publicar y acceder a la información de la red. En pocos años se volvió muy popular debido a que provee

Más detalles

51 Int. CI.: H04L 12/58 ( ) TRADUCCIÓN DE PATENTE EUROPEA

51 Int. CI.: H04L 12/58 ( ) TRADUCCIÓN DE PATENTE EUROPEA 19 OFICINA ESPAÑOLA DE PATENTES Y MARCAS ESPAÑA 11 Número de publicación: 2 4 383 1 Int. CI.: H04L 12/8 (06.01) 12 TRADUCCIÓN DE PATENTE EUROPEA T3 96 Fecha de presentación y número de la solicitud europea:

Más detalles

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

Programación en Visual Basic Ricardo Rodríguez García

Programación en Visual Basic Ricardo Rodríguez García Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.

Más detalles

Web Services. Richard Rossel rrossel@inf.utfsm.cl. 23 de noviembre de 2004. Web Services

Web Services. Richard Rossel rrossel@inf.utfsm.cl. 23 de noviembre de 2004. Web Services Richard Rossel rrossel@inf.utfsm.cl 23 de noviembre de 2004 JAVA2 TOC s JAVA2 JAVA2 Definición Aplicaciones Autocontenidas y Modulares Basado en estándares (XML,HTTP) Aplicaciones se anuncian por la red

Más detalles

Gestor de bases de datos MicroSoft Access (2 de 4)

Gestor de bases de datos MicroSoft Access (2 de 4) Gestor de bases de datos MicroSoft Access (2 de 4) Departament d Informàtica de Sistemes i Computadors 1 Contenido Conceptos generales Diseño de tablas Propiedades de los campos Ordenación, filtrado e

Más detalles

Aplicaciones y Servicios Web (Web Services)

Aplicaciones y Servicios Web (Web Services) Aplicaciones y Servicios Web (Web Services) Joaquín Salvachúa DIT- jsalvachua@.upm.es -1- Internet NG Índice Problema a resolver Arquitectura SOAP WSDL UDDI Conclusiones -2- Internet NG Aplicaciones WEB

Más detalles

Comunicación de Datos I Profesora: Anaylen López Sección IC631 MODELO OSI

Comunicación de Datos I Profesora: Anaylen López Sección IC631 MODELO OSI Comunicación de Datos I Profesora: Anaylen López Sección IC631 MODELO OSI Arquitectura de Redes Definición Formal: Se define una arquitectura de red como un conjunto de niveles y protocolos que dan una

Más detalles

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra. DIRECCIONAMIENTO IP Un computador puede estar conectado a más de una red. En este caso, se le debe asignar al sistema más de una dirección. Cada dirección identificará la conexión del computador a una

Más detalles

5.1 Introducción a Servicios Web

5.1 Introducción a Servicios Web 5.1 Introducción a Servicios Web Introducción Continuando con el ejemplo de intercambio de información de películas... => Actualmente ya no es necesario implementar la solución sugerida a mano Se han estandarizado

Más detalles

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc. REDES DE DATOS Modelo OSI Angélica Flórez Abril, MSc. Jerarquía de protocolos Organización en capas o niveles. El número de capas y sus funciones difieren de red a red. Cada capa ofrece servicios a las

Más detalles

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la Servicios web Introducción Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema Modelado Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Vocabulario del Sistema Distribución de Responsabilidades Semántica de una Clase

Más detalles

Universidad de Managua

Universidad de Managua Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras

Más detalles

INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA

INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA BASES DE DATOS (ACCES 2007) OBJETIVO: Conocer el concepto de bases de datos y su funcionalidad además de crear destrezas en su creación y manipulación. Elementos básicos de Access 2007 Vamos a ver cuáles

Más detalles

Computadora y Sistema Operativo

Computadora y Sistema Operativo Computadora y Sistema Operativo Según la RAE (Real Academia de la lengua española), una computadora es una máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos

Más detalles

Aspectos Básicos de Networking

Aspectos Básicos de Networking Aspectos Básicos de Networking ASPECTOS BÁSICOS DE NETWORKING 1 Sesión No. 4 Nombre: Capa de transporte del modelo OSI Contextualización Existen diferencias en los servicios de protocolos? Los protocolos

Más detalles

Cristian Blanco

Cristian Blanco UNIDAD DIDÁCTICA 8. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS. DIAGRAMAS DE COMPORTAMIENTO En el siguiente enlace tienes una descripción y algunos ejemplos de todos los diagramas UML.: http://jms32.eresmas.net/tacticos/uml/umlindex.html

Más detalles

extensible Markup Language (XML)

extensible Markup Language (XML) extensible Markup Language (XML) 1. INTRODUCCIÓN Jennifer Pérez Benedí Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia C/Camino de Vera s/n E-46071 Valencia- España

Más detalles

5.3 CREAR FORMULARIOS

5.3 CREAR FORMULARIOS 5.3 CREAR FORMULARIOS Los formularios están diseñados para obtener información específica, hay diferentes tipos de formularios, como por ejemplo, facturas, formularios de pedidos, de registro DISEÑAR UN

Más detalles

Resolución de Nombres de Dominio, creación de los mismos y Empresas proveedoras de servicios de internet.

Resolución de Nombres de Dominio, creación de los mismos y Empresas proveedoras de servicios de internet. Resolución de Nombres de Dominio, creación de los mismos y Empresas proveedoras de servicios de internet. En redes de datos, los dispositivos son rotulados con direcciones IP numéricas para que puedan

Más detalles

UIT-T I.230 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT

UIT-T I.230 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT UNIÓN INTERNACIONAL DE TELECOMUNICACIONES UIT-T I.230 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT RED DIGITAL DE SERVICIOS INTEGRADOS (RDSI) ESTRUCTURA GENERAL DEFINICIÓN DE LAS CATEGORÍAS

Más detalles

Técnicas de Programación

Técnicas de Programación Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia

Más detalles

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS DREAMWEAVER UNO- PRÁCTICAS DOC RAUL MONROY PAMPLONA

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS DREAMWEAVER UNO- PRÁCTICAS DOC RAUL MONROY PAMPLONA Metas de comprensión cuarto periodo Comprende sus responsabilidades a la hora de formular sus propuestas como soluciones a problemas reales que impliquen el uso de las tecnologías de información y la gestión

Más detalles

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Laboratorio de Arquitectura de Redes. Entrada y salida estándar Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada

Más detalles

LENGUAJES JÓVENES PROGRAMADORES

LENGUAJES JÓVENES PROGRAMADORES LENGUAJES JÓVENES PROGRAMADORES SCRATCH Qué es Scratch? Es un lenguaje de programación creado por el MIT (Instituto Tecnológico de Massachusetts, EE.UU.) y diseñado para el aprendizaje de la programación.

Más detalles

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Tipos de datos. Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Valores Constantes: Es un dato que se introduce directamente en

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Definición de Memoria

Definición de Memoria Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria

Más detalles

PROTOCOLO IP. Vicente Sánchez Patón. I.E.S Gregorio Prieto. Tema 1 SRI

PROTOCOLO IP. Vicente Sánchez Patón. I.E.S Gregorio Prieto. Tema 1 SRI PROTOCOLO IP Tema 1 SRI Vicente Sánchez Patón I.E.S Gregorio Prieto Cada dispositivo de una red debe definirse en forma exclusiva. En la capa de red, es necesario identificar los paquetes de la transmisión

Más detalles

DOCUMENTACIÓN TÉCNICA. Sesión 11: Los formatos de los documentos

DOCUMENTACIÓN TÉCNICA. Sesión 11: Los formatos de los documentos DOCUMENTACIÓN TÉCNICA Sesión 11: Los formatos de los documentos Contextualización Los formatos de los documentos Una vez que se tienen presentes los conceptos básicos de la documentación técnica y las

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:

Más detalles

La funcionalidad básica de un navegador web es permitir la visualización de documentos de texto, posiblemente con recursos multimedia incrustados.

La funcionalidad básica de un navegador web es permitir la visualización de documentos de texto, posiblemente con recursos multimedia incrustados. Navegadores Web. Aplicación que opera a través de Internet, interpretando la información de archivos y sitios web para que podamos ser capaces de leerla, (ya se encuentre ésta alojada en un servidor dentro

Más detalles

Computación Paralela Móvil

Computación Paralela Móvil Algoritmos y Programación Paralela Facultad de Informática Universidad de Murcia Copyleft c 2008. Reproducción permitida bajo los términos de la licencia de documentación libre GNU. Contenido 1 Introducción

Más detalles

APRENDIZAJE DE LAS HERRAMIENTAS DE DESARROLLO DESARROLLO DE LA BASE DE DATOS DESARROLLO DEL INTERFAZ DE USUARIO Y DEL CÓDIGO VBA

APRENDIZAJE DE LAS HERRAMIENTAS DE DESARROLLO DESARROLLO DE LA BASE DE DATOS DESARROLLO DEL INTERFAZ DE USUARIO Y DEL CÓDIGO VBA 4.- PLAN DE TRABAJO Llegados a este punto, vamos a establecer el siguiente plan de trabajo para dar solución a la problemática presentada y con ello alcanzar los objetivos que nos hemos marcado: FASE I

Más detalles

(X)HTML. World Wide Web es uno de los servicios que se pueden encontrar en Internet, pero no el único (correo electrónico, FTP, news...

(X)HTML. World Wide Web es uno de los servicios que se pueden encontrar en Internet, pero no el único (correo electrónico, FTP, news... Esquema Conceptos previos Qué es HTML? Gramática de HTML Estructura básica de un documento HTML Cuerpo del documento Hipertexto y marcadores Listas Imágenes Formularios Tablas Hojas de estilo Conceptos

Más detalles