# Actividades Tema 8
###### tags: `CSD`
## ACTIVIDAD 1
### OBJETIVOS: Caracterizar los mecanismos de comunicación.
Responda brevemente a las siguientes preguntas (con un máximo de 50 palabras por respuesta):
1. ¿Qué diferencias existen entre los mecanismos que utilizan primitivas básicas de comunicación y los que utilizan construcciones del lenguaje de programación?
2. ¿Cómo puede ser la estructura de los mensajes en un mecanismo de comunicación cualquiera?
3. En los mecanismos de comunicación el contenido de los mensajes puede ser en bytes o bien en texto. ¿Qué ventajas presentan los mensajes de texto frente a los mensajes en bytes?
4. ¿Qué diferencias existen entre el direccionamiento directo y el indirecto?
```
Directo -> un proceso envía a otro
Ha de ser sincrono
Indirecto -> se envía a un intermedirario
Puede ser asiscono
```
6. ¿Qué tipos de sincronización existen en los mecanismos de comunicación? ¿Podrías dar ejemplos de cada uno?
```
Asincrono -> Cuando se envia el mensaje el emisor continua el proceso, no se suspende
Sincronico -> El emisor se bloquea hasta que el receptor ha recibido el mensaje y develve el reconocimiento o esperar la respuesta del mensaje
```
7. ¿Qué diferencias existen entre comunicación persistente y no persistente? ¿Podrías dar ejemplos de mecanismos de comunicación para cada tipo de persistencia?
```
```
## ACTIVIDAD 2
### OBJETIVOS: Clarificar conceptos sobre mecanismos de comunicación.
Explique brevemente los siguientes conceptos (con un máximo de 50 palabras cada uno):
1. Sockets
Enviar vectores de datos
2. Servicios web
Cualquier proceso o servicio que se accede mediante el protocolo HTTP
3. Colas de mensajes
Nivel intermedio de indireción que permite haver varias cosa:
4. RPC
Reciben un petción y contenstan, para leguages no orientado a objetos
5. XML
Formato de datos para hacer sercisio, para dar información, hacer un registro de información...
6. JSON
Estandar que se utiliza en internet y está ligado a JavaSript.
7. Serialización
Comvetir en serie, conviente algo en ventor en bytes para enviar o guardar.
Guardar el estado en un vector de bytes.
## ACTIVIDAD 3
### OBJETIVOS: Caracterizar el mecanismo de Invocación a Objeto Remoto (ROI).
Ordene, según el orden en que tienen lugar, los siguientes pasos de una ROI. ¿Falta algún paso para que todo el mecanismo ROI funcione? Si es así, descríbalo.
1. El método llamado finaliza y se desbloquea el esqueleto
2. El proxy desempaqueta los resultados y los devuelve al proceso cliente
3. El proceso cliente invoca el método del proxy local relacionado con el objeto remoto
4. El esqueleto empaqueta los resultados y llama al ORB, el cual hace llegar el mensaje al proxy
5. El proxy empaqueta los argumentos y, utilizando la referencia al objeto, llama al ORB
6. El ORB gestiona la invocación, haciendo que el mensaje llegue al esqueleto.
---
**Ordenado:**
- (3) El proceso cliente invoca el método del proxy local relacionado con el objeto remoto
- (5) El proxy empaqueta los argumentos y, utilizando la referencia al objeto, llama al ORB
- (6) El ORB gestiona la invocación, haciendo que el mensaje llegue al esqueleto.
- (1) El método llamado finaliza y se desbloquea el esqueleto
- (5) El esqueleto empaqueta los resultados y llama al ORB, el cual hace llegar el mensaje al proxy
- (2) El proxy desempaqueta los resultados y los devuelve al proceso cliente
## ACTIVIDAD 4
### OBJETIVOS: Caracterizar el mecanismo de Invocación a Objeto Remoto (ROI).
Sobre el paso de argumentos en el mecanismo de comunicación ROI, indique si las siguientes afirmaciones son Verdaderas (V) o falsas (F), justificando su respuesta:
|||
|--|--|
| **V** |En un paso de parámetros por referencia, ésta puede pertenecer a uno nodo que no sea ni el invocador ni el invocado.|
| |**Justificación:** ` `|
|||
| |Los argumentos se pueden pasar por valor, no sólo mediante referencias a objetos.
| |**Justificación:**` `|
|||
| |Los argumentos que se pasan por referencia se serializan antes de transmitirlos al nodo destino.
| |**Justificación:**` `|
|||
| |En un paso de parámetros por referencia, ésta puede pertenecer al nodo invocador.
| |**Justificación:**` `|
## ACTIVIDAD 5
### OBJETIVOS: Caracterizar el mecanismo de Invocación a Objeto Remoto (ROI).
En el mecanismo ROI, la creación de objetos puede realizarse mediante dos procedimientos distintos. ¿Cuáles son?
- A iniciativa del cliente
- A iniciativa del servidor
Indique, para los siguientes pasos, a qué procedimiento se corresponde y en qué orden tienen lugar (Nota: un mismo paso puede pertenecer a los dos procedimientos).
1. El servidor obtiene una referencia al objeto.
2. Un proceso (cliente) solicita a un servidor (factoría) que cree un determinado objeto.
3. El proceso servidor usa la referencia del objeto para registrarlo en un servidor de nombres, proporcionando una cadena de texto como nombre del objeto.
4. El servidor (factoría) devuelve al cliente una copia de la referencia del objeto que ha solicitado crear.
## ACTIVIDAD 6
### OBJETIVOS: Caracterizar el mecanismo de comunicación Java RMI. Indique si las siguientes afirmaciones son verdaderas (V) o falsas (F). Justifique su respuesta.
|||
|--|--|
|**F** |Los objetos remotos deben residir en la misma JVM.|
| |**Justificación:** |
|||
| **V** |Java construye automáticamente los esqueletos y los proxies a partir de la especificación de la interfaz del objeto remoto . |
| |**Justificación:** `Es tranparente para el proamador `|
|||
| **F** |Todos los objetos que se pasan como argumentos en Java RMI deben ser remotos, no permitiéndose por tanto pasar objetos locales.|
| | **Justificación**:|
|||
| **F** |El servidor de nombres de Java RMI almacena, para cada objeto registrado, su nombre y esqueleto.|
| | **Justificación:** `Almacena el nombre y referencia`|
|||
| **F**|El mecanismo de comunicación de Java RMI no tiene nada que ver con el mecanismo de comunicación ROI (invocación a objeto remoto).|
| | **Justificación:**` RMI es un caso de ROI`|
## ACTIVIDAD 8
1. Actualice la siguiente definición del servicio “eco”, para que pueda ser utilizado de forma remota.
```java
import java.rmi.*;
interface ServicioEco extends Remote{
String eco (String s) trows RemoteException;
}
```
2. Actualice la clase ServicioEcoImpl (que se muestra a continuación) para que implemente el servicio remoto.
```java
import java.rmi.*;
class ServicioEcoImpl extends UnicasRemoteObject implements ServicioEco {
ServicioEcoImpl() throws RemoteException{
super();
}
public String eco(String s) {
return s.toUpperCase();
}
}
```

3. En la clase ServidorEco, que actúa como servidor, indique cómo se inicia el servicio remoto y cómo se hace accesible usando rmiregistry. ¿Con qué nombre se ha registrado el servicio?
```java
import java.rmi.*;
import java.rmi.server.*;
class ServidorEco{
static public void main (String args[]){
if (args.length!=1) {
System.err.println("Uso: ServidorEco numPuertoRegistro");
return;
}
try {
ServicioEcoImpl srv = new ServicioEcoImpl();
Registry reg = LocateRegistry.getRegistry(“localhost”, 1099);
ServicioEco srv= reg.rebind(“Eco”, srv);
}catch (RemoteException e) { System.err.println("Error de comunicacion: " +
e.toString()); System.exit(1);
}catch (Exception e) {
System.err.println("Excepcion en ServidorEco:");
e.printStackTrace();
System.exit(1);
}
}
}
```
## ACTIVIDAD 9 OBJETIVOS:
### Caracterizar las referencias a recursos en REST Para las siguientes llamadas, indique:
a) Si siguen el estándar REST o no. En caso de no ser REST, realice los cambios necesarios para que sean REST.
b) ¿Qué es lo que pretende realizar esa llamada?
1) GET https://api.github.com?type=users&id=captainkidd
2) GET https://api.githum.com/users/captainkidd/
3) GET https://api.githum.com/gists/page/22/
4) POST https://weatherapp.com/messages
5) GET weatherapp.com/wheaterLookup.do?zipcode=46017
6) GET weatherapp.com/getMessages.do?id=10
7) GET https://myapp.com/deleteOrder.do?id=10
8) DELETE https://myapp.com/messages/10
9) GET https://myapp.com/messages
## ACTIVIDAD 10
### OBJETIVOS: Caracterizar las operaciones en REST
Dadas las siguientes URIs, indique el resultado que se obtiene al aplicar sobre ellas los métodos HTTP indicados:
|Método| URI| Resutaldo|
|--|--|--|
|GET| /messages| |
|POST| /messages| |
|||
|GET| /messages/10| |
|PUT| /messages/10| |
|DELETE| /messages| |
|||
|GET| /messages/10/comments ||
|DELETE| /messages/10/comments | |
|POST| /messages/10/comments | |
|GET| /messages/10/comments | |
## Actvidad 11
### OBJETIVOS: Caracterizar el mecanimo de comunicación JMS
ENUNCIADO: Dadas las siguientes afirmaciones, justifique si son Verdaderas (V) o Falsas (F)
|||
|--|--|
|1._ Generalmente es preferible usar JMS frente a Java RMI cuando es necesario que todos los componentes de la aplicación estén simultáneamente en ejecución. |
|_JUSTIFICACIÓN:_
||||
| 2. La comunicación se considera débilmente acoplada. |
|_JUSTIFICACIÓN:_||
||||
| 3. Un cliente JMS es un objeto administrado. |
|_JUSTIFICACIÓN:_||
||||
| 4. Las colas de mensajes se crean normalmente utilizando las herramientas administrativas del proveedor JMS. |
|_JUSTIFICACIÓN:_||
||||
| 5. Un proveedor JMS es una empresa que ofrece servicios de consultoría relativos a JM |
|_JUSTIFICACIÓN:_||
||||
| 6. Los objetos que implementan la interfaz Queue se crean llamando a métodos de la interfaz JMSConsumer. |
|_JUSTIFICACIÓN:_||
||||
| 7. Los objetos que implementan la interfaz JMSProducer se crean llamando a métodos de la interfaz JMSContext. |
|_JUSTIFICACIÓN:_||
||||
| 8. La comunicación normalmente es persistente. |
|_JUSTIFICACIÓN:_||
||||
| 9. La comunicación es sincrónica en la respuesta. |
|_JUSTIFICACIÓN:_||
||||
| 10. El direccionamiento empleado es del tipo directo. |
|_JUSTIFICACIÓN:_||
||||
## ACTIVIDAD 12
### OBJETIVOS: Caracterizar los diferentes mecanismos de comunicación. Complete la siguiente tabla sobre características de los mecanismos de comunicación.
|Mecanismos| Direccionamiento| Sincronización| Pesistencia (Sí/ No)|
|--|--|--|--|
|ROI||||
|Java RMI|||
|Servicios Web RESTful||||
|Java Message Service||||