• Nenhum resultado encontrado

Aula 2: Arquitetura em Trˆes Camadas e APIs

N/A
N/A
Protected

Academic year: 2022

Share "Aula 2: Arquitetura em Trˆes Camadas e APIs"

Copied!
29
0
0

Texto

(1)

Aula 2: Arquitetura em Trˆ es Camadas e APIs

Diego Passos

Universidade Federal Fluminense

T´ecnicas de Projeto e Implementac¸˜ao de Sistemas II

(2)

Agenda

1 Arquitetura em Trˆes Camadas

2 Introduc¸˜ao `as APIs para Computac¸˜ao Corporativa

(3)

Agenda

1 Arquitetura em Trˆes Camadas

2 Introduc¸˜ao `as APIs para Computac¸˜ao Corporativa

(4)

Projeto em Camadas

T´ecnica Muito Usada em Computac¸˜ao e Engenharia Dividir um sistema em camadas.

Cada camada ´e respons´avel por um sub-conjunto de tarefas.

Camada de baixo oferta servic¸os.

I Requisitados pela camada diretamente acima.

Fluxo de execuc¸˜ao do sistema percorre as camadas atrav´es dessa comunicac¸˜ao/requisic¸˜ao de servic¸os.

(5)

Exemplo: Pilha de Protocolos TCP/IP

Usado na Internet.

I Sistema extremamente complexo.

N´os implementam uma pilha de protocolos.

I Camadas s˜ao empilhadas.

Cada camada “resolve uma parte do problema”.

Camadas e Funcionalidades

Camada de f´ısica: como representar informac¸˜ao no meio f´ısico.

Camada de enlace: como enviar dados para outro computador.

Camada de rede: como percorrer um caminho at´e o computador de destino.

Camada de transporte: como comunicar processos de m´aquinas distintas.

Camada de aplicac¸˜ao: como representar/manipular dados de alto n´ıvel.

(6)

Exemplo: Pilha de Protocolos TCP/IP (II)

Diversos protocolos para cada camada.

I Ex: TCPvs. UDP, 802.11vs. 802.3.

Protocolos de mesma camada podem ser intercambiados de acordo com as necessidades.

I Ofertam a mesma funcionalidade abstrata para as camadas superiores.

I Alterac¸˜ao em uma camada idealmente n˜ao resulta em mudanc¸as nas demais.

Permite a evoluc¸˜ao tecnol´ogica gradativa em cada camada.

I Exemplos:

F IPv4vs. IPv6.

F TCP Tahoe, Reno, Vegas, New Reno. . .

F Ethernet, Fast-Ethernet, Gigabyte-Ethernet. . .

(7)

Exemplo II: Arquitetura de Computadores

Primeiros Computadores

Eram programados diretamente em linguagem de m´aquina.

I Cabos epatch panels.

Exigiam grande conhecimento dohardware.

I Uso extensivo de manuais de referˆencia.

Desenvolvimento era dif´ıcil.

I Depurac¸˜ao ainda pior.

Soluc¸˜ao: Sucessivas Camadas de Abstrac¸˜ao Linguagem de alto n´ıvel.

Assembly.

Macro-instruc¸˜oes.

Micro-instruc¸˜oes.

Portas l´ogicas.

(8)

Exemplo II: Arquitetura de Computadores

Camadas facilitam o desenvolvimento e depurac¸˜ao.

I odigo ´e mais leg´ıvel em alto n´ıvel.

V´arias linguagens diferentes podem ser usadas em um mesmo computador.

Mesmo ohardware pode ser simplificado.

I Muita coisa hoje ´e feita em software.

I Bugs podem ser corrigidos.

F Exemplo: micro-c´odigo em processadores Intel.

Aumenta n´ıvel de portabilidade de software.

(9)

Desenvolvimento de Software em Camadas

Vantagens

Entendimento sobre cada camada ´e isolado.

I E poss´ıvel se concentrar em cada camada isoladamente.´ Implementac¸˜oes de camadas podem ser trocadas.

I Por motivos t´ecnicos, financeiros.

V´arios projetos usam camadas iguais/similares.

I Podem ser padronizadas.

I Aumenta potencial de reutilizac¸˜ao de c´odigo.

F odigo reutilizado tende a ser melhor e mais confi´avel.

Desvantagens

Nem sempre proveem encapsulamento total.

Podem afetar o desempenho.

(10)

Desenvolvimento de Software em Camadas: Hist´ orico

Inicialmente

N˜ao era utilizado.

Programas eram “simples” e manipulavam diretamente arquivos pr´oprios.

In´ıcio da D´ecada de 1990 Modelos de duas camadas.

I Cliente (interface) e servidor (banco de dados).

Componentes de interface cientes de SQL: integrac¸˜ao direta com banco de dados.

Funciona bem se programa basicamente manipula base de dados (cadastro e consulta).

(11)

Modelo de Duas Camadas: Problemas

O que fazer quando h´a L´ogica de Dom´ınio?

I Validar dados, implantar regras de neg´ocio, fazer c´alculos. . .

Implementac¸˜ao no Cliente Abordagem mais comum.

C´odigo era complexo por misturar exibic¸˜ao e l´ogica.

Se havia muitas “telas”, l´ogica era dividida em v´arios pontos do c´odigo.

Implementac¸˜ao no Servidor (Banco de Dados) Stored procedures.

Linguagens propriet´arias.

I Pouca portabilidade.

Linguagens com poucos recursos.

I odigo novamente complexo.

(12)

Soluc¸˜ ao: Modelo de Trˆ es Camadas

Divide-se oSoftware em:

I Camada de apresentac¸˜ao: interface com o usu´ario.

I Camada de dom´ınio: implantac¸˜ao da l´ogica de dom´ınio.

I Camada de fonte de dados: armazenamento e consulta de dados.

Ganhou popularidade com a Web.

I Conceito dobrowser como interface.

I Se a l´ogica est´a na interface, novas interfaces requerem re-implementac¸˜ao da l´ogica.

F Re-trabalho, bases de c´odigo distintas,. . .

I Soluc¸˜ao: mover l´ogica de dom´ınio para camada que pudesse ser acessada por diversas interfaces.

(13)

Camada de Apresentac¸˜ ao

Lida com a interac¸˜ao entre usu´ario e software.

Pode ocorrer de v´arias formas:

I Linha de comando.

I Interface texto.

I GUI paradesktop.

I Web.

E comum um mesmo sistema apresentar mais de uma implementac´ ¸˜ao nesta camada.

Responsabilidades:

I Apresentar informac¸˜ao ao usu´ario.

I Interpretar comandos do usu´ario e traduzi-los em ac¸˜oes para o dom´ınio e fonte de dados.

(14)

Camada de Fonte de Dados

De onde o sistema obt´em os dados.

I E para onde os dados v˜ao.

Lida com a comunicac¸˜ao com outros sistemas que fornecem/manipulam dados.

Exemplo mais comum: SGBD.

I Banco de dados armazena os dados relevantes `a aplicac¸˜ao.

I SGBD executa servic¸os de armazenamento, consulta e atualizac¸˜ao.

I Camada de fonte de dados se comunica com o SGBD requisitando servic¸os.

Mas n˜ao precisa envolver um banco de dados.

I Exemplo: gerenciamento de redes via SNMP.

(15)

Camada de L´ ogica de Dom´ınio

Tamb´em chamada de L´ogica de Neg´ocio.

Respons´avel por “realizar o trabalho” do sistema.

I Fazer c´alculos.

I Validar dados.

I Escolher entre v´arias fontes de dados.

I . . .

(16)

Abordagem Cross-Layer

Idealmente, camada de l´ogica de dom´ınio “esconde” fonte de dados da apresentac¸˜ao.

I Traz v´arios benef´ıcios.

As vezes, no entanto, pode haver quebra nesta hierarquia.`

I Soluc¸˜ao menos “pura”, mas pode ter benef´ıcios pr´aticos.

I Exemplo:

F Apresentac¸˜ao requisita dados diretamente da fonte de dados.

F Parte dos dados (que n˜ao requerem aplicac¸˜ao de l´ogica) s˜ao exibidos.

F Outra parte ´e passada para a l´ogica de dom´ınio para processamento.

I E preciso pesar as vantagens e desvantagens em cada caso.´

(17)

Separac¸˜ ao entre Camadas

Separac¸˜ao n˜ao precisa ser f´ısica.

I Camadas n˜ao precisam ser executadas em computadores diferentes.

I i.e., conceito de camadas pode ser simplesmente l´ogico.

Camadas podem ser implementadas como:

I Rotinas diferentes.

I Classes diferentes.

I Pacotes diferentes.

I Execut´aveis diferentes.

I . . .

Forma ideal de implementac¸˜ao:

I Depende da complexidade do projeto.

F Quanto mais complexo, maior deve ser a separac¸˜ao.

(18)

Como Identificar a Camada de L´ ogica de Dom´ınio

Separac¸˜ao entre camadas de apresentac¸˜ao e fonte de dados e grande.

I Dada uma funcionalidade, ´e f´acil distinguir a qual das duas camadas pertence.

Mas como saber se uma determinada funcionalidade pertence `a l´ogica de dom´ınio?

Teste simples:

I Suponha que a funcionalidade pertenc¸a `a apresentac¸˜ao (ou fonte de dados).

I Suponha que seja necess´ario implantar uma nova vers˜ao da camada.

F Nova interface, ou dados em arquivo XML.

I A funcionalidade precisar´a ser re-implementada?

F Se sim, deveria pertencer `a l´ogica de dom´ınio.

(19)

Como Identificar a Camada de L´ ogica de Dom´ınio (II)

Exemplo de Sistema de Vendas

Funcionalidade: itens cujas vendas aumentaram 10% ou mais no ´ultimo mˆes coloridos em vermelho.

Supor implementac¸˜ao na camada de apresentac¸˜ao:

I Interface obt´em os dados de vendas dos dois ´ultimos meses.

I Calcula percentual de aumento.

I Se maior que 10%, colore item.

Se adicionarmos uma nova interface, funcionalidade deve ser reimplementada.

Soluc¸˜ao mais correta:

I Criar m´etodo na camada de l´ogica de dom´ınio que retorna um booleano se item deve ser colorido.

I Camada de apresentac¸˜ao chama o m´etodo e s´o se preocupa em gerar o c´odigo para fazer a colorac¸˜ao.

Em ´ultima an´alise, ´e uma regi˜ao nebulosa.

(20)

Onde Executar Cada Camada?

Lembre-se: camadas s˜ao conceitos l´ogicos e separac¸˜ao pode n˜ao ser f´ısica.

Mas v´arios sistemas fazem a separac¸˜ao f´ısica das camadas.

I Exemplo: sistemas web.

Neste caso, onde cada camada deve ser executada?

I Decis˜ao de projeto.

I Projetos diferentes podem ter requisitos diferentes.

I E preciso analisar caso a caso.´

F Mas h´a casos t´ıpicos.

(21)

Onde Executar a Camada de Fonte de Dados

Quase sempre no servidor.

I Em geral, deseja-se que o sistema seja acess´ıvel de v´arios lugares diferentes.

I Dados tˆem que estar dispon´ıveis em todos estes acessos.

I Um servidor acessado via rede pode disponibilizar os dados.

Excec¸˜ao:

I Quando deseja-se permitir operac¸˜aooffline.

I Exemplo: GoogleDocs.

F Abordagem mista: dados ficam no servidor, mas m´aquina cliente guarda c´opias.

(22)

Onde Executar a Camada de Apresentac¸˜ ao

Dois casos t´ıpicos:

Interface tipo GUI (Desktop)

Quase exclusivamente, ´e executada no computador cliente.

Excec¸˜ao: desktop remoto.

Interface Web

Frequentemente no servidor.

I HTML renderizado no cliente, mas gerado no servidor.

Tecnologias como Javascript e Flash tˆem alterado esta tendˆencia.

(23)

Onde Executar a Camada de L´ ogica de Dom´ınio

Camada mais flex´ıvel em relac¸˜ao neste quesito.

Pode rodar:

I No cliente.

I No servidor.

I Em ambos.

F Novamente, conceito de divis˜ao em camadas ´e l´ogico e n˜ao f´ısico.

(24)

Agenda

1 Arquitetura em Trˆes Camadas

2 Introduc¸˜ao `as APIs para Computac¸˜ao Corporativa

(25)

Computac¸˜ ao Corporativa: Relembrando. . .

Integrac¸˜ao com outras aplicac¸˜oes corporativas.

L´ogica de neg´ocio tende a mudar/aumentar.

E preciso simplificar a manutenc´ ¸˜ao do c´odigo.

Mais:

I Robustez.

I Escalabilidade.

I Seguranc¸a.

(26)

Computac¸˜ ao Corporativa: Primeira Abordagem

Implementar tudo “do zero”.

I Implementar a interface (protocolo) para comunicac¸˜ao com cada aplicativo.

I Implementar c´odigo espec´ıfico para acessar cada diferente banco de dados envolvido.

I Implementar cada diferente interface com usu´arios poss´ıvel.

I . . .

Problemas

Requer grande tempo de desenvolvimento.

Requer grande tempo de teste.

Se uma nova tecnologia surge, ´e preciso repetir o trabalho de implementac¸˜ao.

C´odigo ´e muito mais complexo.

Mais propenso a erros e vulnerabilidades.

(27)

Computac¸˜ ao Corporativa: Abordagem Baseada em APIs

Operac¸˜oes de baixo n´ıvel s˜ao escondidas por uma biblioteca/pacote.

C´odigo a ser implementado inclui apenas chamadas de mais alto n´ıvel.

I Mais gen´ericas.

I Resiste melhor a alterac¸˜oes nas tecnologias usadas.

Parte mais complexa do c´odigo ´e feita pela API.

I odigo geralmente bem utilizado e testado.

(28)

APIs Corporativas

Conceito de uso de APIs j´a ´e conhecido, mesmo para aplicac¸˜oes “n˜ao-corporativas”.

Qual a diferenc¸a?

Express˜ao ´e usada em dois contextos:

I APIs disponibilizadas para o uso de servic¸os de determinadas empresas.

F Exemplos: GoogleMaps, BingMaps, Facebook, . . .

I APIs que servem para desenvolvimento de aplicac¸˜oes corporativas.

F Exemplo: JDBC.

(29)

APIs para Aplicac¸˜ oes Corporativas

S˜ao geralmente APIs de n´ıvel mais alto.

Geralmente, agn´osticas em relac¸˜ao a tecnologia.

Exemplo (novamente): JDBC.

I Pode acessar BDs Oracle, DB2, Postgres, MySQL,. . .

I Cada um destes SGBDs tem suas pr´oprias APIs para diversas linguagens.

I Migrar de um SGBD para outro, exigiria adaptar c´odigo a nova API.

I JDBC provˆe acesso uniforme a todas.

Referências

Documentos relacionados

To test this hypothesis, we analyzed the innate immune response and the plasma concentration of hormones (corticosterone, testosterone, and estradiol), in the basal (field)

POMAR/ISEPE; Artista Plástica e Arquiteta pela FAU-UFRJ; Focalizadora de Danças Circulares; Docente do Curso de Treinamento de Focalizadores em Danças Circulares do Rio de

Rossella Benedicenti Progetto RI-SO AUSL di Modena Silvia Spallanzani Progetto

Neste estudo, envolvendo comunidades rurais negras na Bahia, tendo como referência e lócus de pesquisa a comunidade de Várzea Queimada, no município de Caém, no

Percentagem de utentes em espera para cirurgia com tempo superior a 12 meses < X % 10,00 14,0 N.º de projectos de articulação com os cuidados de saúde primários (CSP)

Nota-se que, existe como obstáculo, o silêncio e a coesãounião que são características primordiais das organizações criminosas e, com a delação premiada, tem-se a oportunidade

As crônicas de Antonieta reunidas em livro não só “ressuscitam” o texto em si publicado no Jornal República, mas também toda uma discussão sobre os temas que

(Fonte: Oil Field Familiarization Training Guide) ... 7 Tabela 2: Tipos de Brocas e seus Valores Típicos de Coeficiente de Fricção .... Esses fatores impulsionaram a busca por

Para entender o funcionamento de uma rede de computadores é importante compreender os serviços da camada de rede, os protocolos de apoio ao IP e os algoritmos de roteamento intra