1. A disponibilidade é afetada pela quantidade de usuários ativos para o
compartilhamento dos objetos, onde em determinado momento é possível que poucos usuários estejam compartilhando o objeto, provocando maior lentidão na reunião dos pacotes, já a segurança é afetada por conta do acesso e transmissão por parte dos próprios usuários, onde um usuário pode transmitir um pacote contendo código malicioso. 2. A middleware tem como objetivo prover a comunicação entre diferentes serviços, abstraindo a heterogeneidade de redes, sistemas operacionais e linguagens de programação através de operações bem definidas em uma interface. A middleware é importante pois permite a comunicação entre tais sistemas de forma simples, evitando a reescrita de código. Um exemplo de middleware é o protocolo REST, o qual permite a comunicação com base nos protocolos HTTP, sendo utilizado por serviços web para realizar comunicação com outros serviços. 3. Ao se acessar outros servidores através da rede, não se tem garantia acerca do tempo de resposta do servidor, o qual pode estar lidando com várias outras requisições, sendo possível que a requisição realizada ainda não tenha chego ao mesmo por conta de atrasos no canal, onde também não se tem um tempo determinado para condução da mensagem. Quando se lida com servidores externos, não é possível definir um limite de tempo de resposta. 4. a. A primitiva bloqueante bloqueia o processo até que sua requisição seja respondida ou até que ele termine a execução da requisição realizada, já a não bloqueante se utiliza do buffer para continuar a execução enquanto o buffer envia os resultados ou recebe as requisições dos outros processos, onde o processo irá se comunicar com o buffer. A vantagem reside no ganho de desempenho, visto que o processo não ficará bloqueado para a realização de uma ação. b. As primitivas confiáveis devem se preocupar com questões como a ordem de chegada dos pacotes no destino, bem como com a confirmação de que a mensagem foi entregue. Já as não confiáveis não se preocupam com tais detalhes, o que permite um tempo de execução menor, sendo mais rápidas, o que justifica sua utilização em certos casos. 5. Os jogos online que necessitavam de código móvel flash, ganhavam em desempenho com a execução de código local, visto que a banda comumente não era de alta velocidade. 6. As vantagens das aplicações cliente-servidor tradicionais são a menor complexidade de gerenciamento do sistema, bem como a simplicidade na comunicação entre processos clientes e servidores, possuindo papéis bem definidos, uma desvantagem seria o custo para promover escalabilidade e replicação, onde novos servidores devem ser alocados. No que tange às aplicações peer-to-peer, as vantagens estão no aumento da recursos para o processamento equivalente ao número de usuários, bem como a distribuição do serviço em várias máquinas, balanceando o processamento, uma desvantagem seria a complexidade da aplicação, a qual deve lidar com a coordenação de pacotes em várias máquinas heterogêneas. 7. São subtransações ligadas a uma transação maior, sendo úteis pois evitam a necessidade de consulta a cada servidor de cada vez, realizando múltiplas consultas através da definição de uma transação. Sites de comparação de preços realizam transações aninhadas para realizar consultas a diversas lojas sem a necessidade de consultar cada uma individualmente. 8. São redes privadas, as quais se utilizam de canais criptografados em nível de IP. As VPNs permitem a conexão entre intranets, bem como a conexão de um usuário externo. Como exemplo é possível citar um funcionário que deseja acessar a intranet de sua organização remotamente, por meio da VPN é possível o fazer através de uma rede pública, caso seu host implemente a criptografia IP, onde o host utilizado pelo funcionário pode compartilhar uma chave com o firewall da organização, a fim de definir um canal seguro para acesso. 9. O código móvel é um código que deve ser baixado a partir da necessidade de utilização de algum serviço na web, sendo executado localmente, onde um exemplo é o Flash, o qual permitia a execução de jogos e afins nos navegadores. Já o agente móvel é um agente que utiliza recursos do sistema para realização de algum fim, como por exemplo a atualização de antivírus em uma empresa, o agente móvel pode verificar a versão do software em cada máquina e requerer a atualização. 10. São falhas que ocorrem por parte do processo ou canal, onde a execução de uma ação não é finalizada. O timeout é importante para que se saiba que determinado processo não respondeu a uma requisição, sendo possível também confirmar a entrega da requisição. Na omissão de recepção, o processo não recebe a mensagem no seu buffer de envio, onde o outro processo solicitante pode checar o timeout e inferir que o processo requisitado não está respondendo, podendo proceder com o envio de nova requisição. 11. São relevantes do ponto de vista da definição de arquitetura do sistema com base em modelos já consolidados, os quais identificam as características comuns e necessárias aos sistemas distribuídos, onde há opções de implementação para cada tipo de sistema. São relevantes pois definem as responsabilidades de cada processo, sendo possível distribuir a carga de processamento para os mesmos, localizando-os na rede, sendo possível também a previsão e tratamento de falhas a partir de tal decisão de projeto. 12. Os servidores proxy são um tipo de servidor cache, haja vista que sua função principal é a de manter as informações mais utilizadas ou mais recentes mais perto do cliente, diminuindo as consultas a servidores externos e aumentando a velocidade. 13. A criptografia é um método que visa a segurança no envio de mensagens, onde seu conteúdo é oculto a partir de números de grande ordem, onde o destinatário pode decriptografar a mensagem com base em uma chave compartilhada entre os processos, tal método também pode ser usado para provar a identidade daquele que envia a solicitação ou resultado da mesma, o que é realizado através de autenticação com base na chave secreta. 14. Os sistemas devem ser desenvolvidos tendo em vista sua possível expansão futura, evitando a reformulação do sistema para lidar com um grande número de usuários, o que pode se tornar custoso caso feito após o crescimento. Um sistema mal desenvolvido pode vir a gerar problemas de lentidão para os usuários, bem como passar por períodos de indisponibilidade do serviço devido à manutenção. 15. As principais vantagens são o desacoplamento espacial e temporal, onde no primeiro o remetente não se preocupa com a identidade do destinatário, o qual pode ser alterado sem grandes consequências ao primeiro, já o desacoplamento temporal se refere a ausência da necessidade de existência simultânea dos processos, os quais podem ser executados em momentos diferentes. A principal desvantagem da comunicação indireta é a sobrecarga no desempenho, a qual advém das implementações necessárias à indireção. A comunicação direta comumente requer a existência simultânea dos processos, e ainda que o processo remetente conheça a identidade do destinatário, a fim de realizar uma chamada remota a ele.