---
# System prepended metadata

title: Actividades Tema 8
tags: [CSD]

---

# 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();
    }
}
```
![](image-ko15s1tj.png)
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||||
