Lección 8: Protocolos de mensajería Flashcards

1
Q

Protocolos: Formato

A

• La especificación del protocolo define el formato de los
mensajes.
• El formato implica tanto el tipo de representación como el
contenido de los mismos.
• La representación puede ser: texto plano, csv, json, xml,
binario, representaciones no estándares, etc.
• El contenido dependerá de las necesidades funcionales.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Características generales de los protocolos.

A
  • Protocolos a nivel de aplicación (Nivel 7 OSI)
  • Protocolos son independientes de las capas inferiores.
  • Los protocolos definen el formato de los mensajes, su significado y flujo esperado.
  • Usan lenguajes de definición (HTML, CSS, …)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Protocolos estandarizados

A

FIXML, FIX, FPML o ISO2022

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Protocolos: Significado

A

• Cada campo / tipo / elemento / mensaje del protocolo tiene un
significado funcional.
• El protocolo define el significado funcional de cada elemento de
forma unívoca

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Protocolos: Flujo

A

• Los protocolos pueden o no definir un flujo específico de mensajes.

• Algunos protocolos como FIX además tienen su propio
mecanismo de creación y mantenimiento de sesión.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Especificación de un protocolo

A
  • A través de un lenguaje de definición.
    • Lo normal es definir el formato con un lenguaje y el significado
    y el flujo aparte en forma de documentación.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Ejemplos de lenguajes de especificación

A
  • • XSD (XML Schema Definition) se utiliza para definir mensajes representados en XML o
    JSON.
    • Swagger para definir una API REST y sus correspondientes mensajes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es XML?

A

El XML es un lenguaje de marcado basado en texto que tiene una estructura de auto-descripción y puede definir efectivamente otro lenguaje de marcado (a diferencia de HTML que está predefinido).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Introducción a XSD

A
  • Es un lenguaje de definición.
  • No se puede programar directamente sobre una definición de protocolo, hay que usar un lenguaje de programación.
    •Es la base de los protocolos financieros FIXML, FPML, ISO y de la mensajería sobre JMS en XML.
    •También es la base de la representación XML utilizada ampliamente en llamadas REST y servicios SOAP.
    •La definición XSD se pensó para representar XML, pero se puede utilizar con otras representaciones (Json, Binario, custom).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Lo que se puede definir con XSD.

A
  • Tipos de datos.
  • Extensiones sobre tipos de datos.
  • Mensajes.
  • Campos y tipos de los campos de un mensaje.
  • Campos complejos que a su vez tienen mas campos con sus tipos (complextype)
  • Atributos.
  • Herencia mediante el uso de “choices”
  • Mapas y arrays
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

XSD: Esquema y espacio de nombres

A
  • Basado en el concepto de esquema
    • Cada “esquema” xsd es un fichero que contiene parte o la totalidad de una definición.
    • Cada esquema puede definir un “namespace”, de esta forma un tipo o elemento pertenecerá a un “namespace” específico.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

XSD: Element, complex type, type

A
  • Define un elemento con un tipo específico (como un campo de una clase)
  • Define el tipo de un elemento.
  • Puede ser un tipo simple (int, string, double) o un tipo complejo.
  • Define un tipo complejo, un tipo complejo no es mas que un conjunto de elementos (como una clase en java)
  • Define una secuencia de elementos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Conversión del protocolo a lenguaje de programación

A
  • Necesitamos convertir el protocolo en código de un lenguaje de programación.
  • Convertir los mensajes y tipos complejos en clases con campos. (DTOs – Data Transfer Objects)
  • Convertir los espacios de nombres a “paquetes” (Java) o “namespaces” (C++).
  • Convertir los tipos en tipos propios del lenguaje.
  • Traducir herencias, arrays, mapas, etc.
  • Crear “serializadores” para leer y escribir los objetos en el formato de representación que se vaya a utilizar (XML, Binario, JSON, etc).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Generación de código: DTOs + Traductores

A

• Generación Manual
• Se crea el código de los DTO y traductores a mano a partir de la
especificación.
- Puede haber muchos errores y cualquier cambio se tiene que hacer de forma manual.

  • Generación Automática
  • El código se genera automáticamente a partir de la especificación.
  • Poco propenso a errores.
  • Un cambio de protocolo únicamente requiere volver a generar.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué es XJC?

A

XJC es una herramienta de Java SE que compila un archivo de esquema XML en clases Java completamente anotadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Generación automática: XJC

A

• XJC permite generar código Java y traductores a XML a partir de una especificación XSD.
• Las clases Java generadas están anotadas con anotaciones JAXB.
• Las anotaciones definen como “mapear” las clases Java con su
definición XSD.
• También permite el paso contrario, a partir de clases Java anotadas,
generar el equivalente XSD.
• JAXB es capaz de convertir los objetos de las clases anotadas a XML
y viceversa mediante traductores (marshallers, unmarshallers).
• Tanto XJC como JAXB forman parte del estándar Java y se incluyen
con la instalación de la JVM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué es JAXB?

A

Java Architecture for XML Binding (JAXB) permite a los desarrolladores Java asignar clases de Java a representaciones XML. JAXB proporciona dos características principales: la capacidad de serializar las referencias de objetos Java a XML y la inversa, es decir, deserializar XML en objetos Java. En otras palabras, JAXB permite almacenar y recuperar datos en memoria en cualquier formato XML

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Pasos de generador de código

A

• 1.Lectura o “parsing”del esquema de definición del protocolo.

    1. Generación de modelos a partir del esquema con la información del protocolo.
  • Los modelos son objetos que entiende el generador y que tienen un formato predefinido.

• 3.Generación del código con la información de los modelos.
• Se suelen utilizar lenguajes de “templates” para generar el código.
• Se podría hacer a mano en “código”, pero hace que sea complicado cambiar la generación y son
códigos muy difíciles de entender.

  • Opcionalmente también es posible:
  • 4.Compilar y testear de forma automática el código generado.

• 5.Empaquetar el código en una librería.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Generador de código: “Parsing”

A
  • El esquema debe seguir una estructura bien definida.
  • Para algunos esquemas como XSD existen soluciones de parseo estándar:
  • XJC -> Generamos las clases con XJC y después las leemos con “reflection”.
  • XmlBeans -> Similar a XJC pero con soporte para esquemas XML mas complejos. Genera sus propias clases intermedias en lugar de utilizar anotaciones Jaxb.
20
Q

Generador de código: Modelos intermedios

A

• Los modelos intermedios son la representación que entiende nuestro generador.
• El objetivo es desacoplar el esquema de la generación.
• De esta manera podremos usar otros esquemas con los mismos modelos y la
misma generación.
• Lo único que tendremos que cambiar entre esquemas son los parseadores.
• Por ejemplo el modelo intermedio podría contener:
• Nombre la clase y herencia
• Campos de la clase y tipos de campos
• Paquete al que pertenece

21
Q

Generador de código: Templates

A
  • Los templates permiten introducir “código” sobre ficheros de texto que se “expande” generando un texto completo.
  • Esta expansión se hace en función del código en el template y de la entrada de datos que le demos.
  • La entrada de datos en nuestro caso son los modelos intermedios con la información del parseo.
22
Q

Lenguajes de “templates”

A
  • Específicos:
    • Java: JSP, JSF -> Se utilizan para generar el HTML de una página web antes de enviarla.
    • .NET:ASP.NET -> Mismo propósito pero en C#.
  • Genéricos:
    • Apache Velocity. -> Es un motor básico de templates basado en Java.
    • Apache FreeMarker. -> Similar a Velocity, originalmente pensado para HTML pero no limitado a este. Soporta funcionalidades adicionales como traductores de idioma.
23
Q

Velocity: Introducción

A

• Motor básico de templates Open Source escrito en Java.
• Para generar código necesitamos:
• El modelo de datos de entrada del template. (Objetos Java)
• El mapeo de nombres de los objetos del modelo de datos de entrada.
•El template escrito en lenguaje VTL (Velocity Template Languaje)
• El path para el fichero de salida resultado de la generación.
• Las directivas comienzan por “#”, por ejemplo #if(), #end, #include() o por $
para llamar a variables del modelo.

24
Q

Swagger

A
  • Swagger nos permite representar de forma muy completa una API Rest.
  • Podemos definir tanto los “end-points” de la API, como el formato de los mensajes de llamada y respuesta.
  • También podemos definir el comportamiento y los códigos de error.
25
Q

Google Protocol Buffer

A
  • Es un motor de generación para la serialización binaria de alto rendimiento.
  • Permite definir los mensajes y generar posteriormente tanto las clases como los traductores binarios en múltiples lenguajes de programación.
26
Q

Swagger: Introducción

A
  • Swagger utiliza el lenguage YAML para definir una API REST:
  • Permite describir los “end-points” de la API: • Tipodellamada(Get,Put,Post)
  • Path de la llamada.
  • Descripcióndelend-point.
  • Parámetrosdelallamada.
  • Tipos y parámetros de las respuestas.
  • Formato de mensajes JSON de entrada y salida.
27
Q

Google Protocol Buffer: Introducción

A
  • Es un motor de generación para la serialización binaria de alto rendimiento.
  • El lenguaje de definición es JSON.
  • El motor utiliza la definición para generar código que contiene: • LosDTOsdelosmensajes.
  • El código de serialización binaria incrustada en los DTOs.
28
Q

Los protocolos de mensajería suelen definir entre otras cosas el formato de los mensajes, su significado y el flujo de mensajes esperado.
Seleccione una:
Verdadero
Falso

A

Verdadero

29
Q

De las siguientes afirmaciones, ¿cuales son los principales problemas de intentar generar los DTO y traductores para un protocolo de forma manual?
Seleccione una o más de una:
a. Cualquier optimización de serialización implica cambiar todo el código manualmente
b. Hay que repetir todo el proceso para nuevas especificaciones
c. Propenso a errores al codificar la especificación
d. Trabajo lento si el protocolo es complicado

A

a. Cualquier optimización de serialización implica cambiar todo el código manualmente
b. Hay que repetir todo el proceso para nuevas especificaciones
c. Propenso a errores al codificar la especificación
d. Trabajo lento si el protocolo es complicado

30
Q

Podemos utilizar JSON o XML como lenguajes de definición de protocolos de mensajes aunque generalmente se utilicen como formatos de serialización.
Seleccione una:
Verdadero
Falso

A

Verdadero

31
Q

La mayoría de los lenguajes para crear páginas web como JSP, JSP, PHP, ASP.net, etc no son mas que lenguajes de templates que generan código HTML que una vez generado se manda al cliente para que sea interpretado por el navegador.
Seleccione una:
Verdadero
Falso

A

Verdadero

32
Q

Los lenguajes de definición de protocolos suelen utilizarse para definir el significado funcional de los mensajes.
Seleccione una:
Verdadero
Falso

A

Falso

33
Q

Swagger tiene visualizadores y generadores que permiten visualizar la API especificada de forma sencilla y generar el código de la misma para algunos de los lenguajes mas utilizados como Java, .Net, Javascript, etc.
Seleccione una:
Verdadero
Falso

A

Verdadero

34
Q

Un DTO es objeto en un lenguaje de programación que representa un mensaje de un protocolo.
Seleccione una:
Verdadero
Falso

A

Verdadero

35
Q

XJC es una herramienta que viene incluida en la instalación de Java y me permite generar los DTOs partiendo de una especificación XSD.
Seleccione una:
Verdadero
Falso

A

Verdadero

36
Q

XSD es uno de los formatos de serialización de mensajes mas utilizado junto a otros como XML, CSV o JSON.
Seleccione una:
Verdadero
Falso

A

Falso

37
Q

Swagger se utiliza para definir APIs REST y nos permite especificar entre otras cosas…
Seleccione una o más de una:
a. El tipo de mensaje tanto en la llamada como en la respuesta
b. El tipo de la llamada del end-point REST (Get, Put, Post)
c. El formato de codificación binaria de las llamadas
d. El path o ruta del end-point
e. Los parámetros de la llamada

A

a. El tipo de mensaje tanto en la llamada como en la respuesta
b. El tipo de la llamada del end-point REST (Get, Put, Post)
d. El path o ruta del end-point
e. Los parámetros de la llamada

38
Q

Podemos generar las clases Java anotadas con Jaxb a partir de un XSD pero no podemos realizar el paso contrario ya que las clases anotadas no tiene suficiente información para poder volver a generar el XSD a partir de ellas.
Seleccione una:
Verdadero
Falso

A

Falso

39
Q
¿Que permite definir el lenguaje XSD? Marca todos los correctos.
Seleccione una o más de una:
a. Herencia entre mensajes o componentes
b. Mapas sincronizados
c. Espacios de nombres por esquema
d. Mensajes y su contenido
e. Tipos de datos nuevos
A

a. Herencia entre mensajes o componentes
c. Espacios de nombres por esquema
d. Mensajes y su contenido
e. Tipos de datos nuevos

40
Q

Podemos traducir un espacio de nombres de un fichero XSD a un paquete de Java cuando intentamos crear el código que represente a los mensajes del XSD.
Seleccione una:
Verdadero
Falso

A

Verdadero

41
Q

Los lenguajes de templates se suelen utilizar para generar código a partir de una entrada de datos con el modelo y un fichero con el “template” que indica como generar el código.
Seleccione una:
Verdadero
Falso

A

Verdadero

42
Q

¿Por que querríamos crear nuestro propio generador de código en lugar de utilizar alguno de los generadores ya existentes?
Seleccione una o más de una:
a. Necesitamos incluir control de versiones
b. La representación que necesitamos puede no estar soportada por ningún generador estándar
c. Podemos necesitar mas de un tipo de representación sobre los mismos DTOs
d. Los generadores estándar pueden ser demasiado lentos
e. El esquema de definición no está soportado por ningún generador estándar

A

a. Necesitamos incluir control de versiones
b. La representación que necesitamos puede no estar soportada por ningún generador estándar
c. Podemos necesitar mas de un tipo de representación sobre los mismos DTOs
e. El esquema de definición no está soportado por ningún generador estándar

43
Q

Google protocol buffers se utiliza para generar los mensajes y la serialización binaria de alto rendimiento para los mismos. Soporta múltiples lenguajes pero debido a la naturaleza de la serialización binaria, los mensajes en binario únicamente se pueden leer con el mismo lenguaje que los generó.
Seleccione una:
Verdadero
Falso

A

Falso

44
Q

Swagger es un lenguaje de definición para definir mensajes y su serialización binaria.
Seleccione una:
Verdadero
Falso

A

Falso

45
Q

De las siguientes, ¿cuales son ventajas de generar el código de un protocolo de forma automática?
Seleccione una o más de una:
a. En caso de error, únicamente hay que corregir el generador
b. Se pueden optimizar los procesos de traducción en el generador y volver a generar todo sin cambiar a mano todas las clases
c. Es válido para cualquier tipo de especificación
d. Resultados repetibles y aplicables a múltiples especificaciones

A

a. En caso de error, únicamente hay que corregir el generador
b. Se pueden optimizar los procesos de traducción en el generador y volver a generar todo sin cambiar a mano todas las clases
d. Resultados repetibles y aplicables a múltiples especificaciones

46
Q

XSD es el lenguaje de definición utilizado para definir algunos de los protocolos financieros mas utilizados como FIXML, FPML o ISO 20022
Seleccione una:
Verdadero
Falso

A

Verdadero