[MÚSICA] [MÚSICA] >> [JÚLIO] PESSOAL, NESSA VIDEOAULA, NÓS VAMOS COMENTAR SOBRE A ESTRUTURA DE UMA APLICAÇÃO WEB TÍPICA, TÁ? E A IMPORTÂNCIA DE SER PENSAR NUMA APLICAÇÃO DE UMA FORMA MAIS ESTRUTURADA. ENTÃO, A WEB É UM SOFTWARE QUE É IMPLANTADO OU INSTALADO EM UM SERVIDOR WEB, PROJETADO PARA RECEBER REQUISIÇÕES, PROCESSAR, ARMAZENAR, SE FOR O CASO, NÉ?
RESPONDER A ESSAS REQUISIÇÕES. AS RESPOSTAS PODEM VIR DE APENAS UM SERVIDOR OU DE VÁRIOS SERVIDORES WEB, ESPECIALMENTE POR CONTA DA ENORME DEMANDA DE REQUISIÇÕES PARA DETERMINADAS APLICAÇÕES ACESSADAS PELOS USUÁRIOS. BOM, HÁ UMA GRANDE VARIEDADE DE APLICAÇÕES WEB, TÁ?
ENTÃO, DO PONTO DE VISTA DESSE ENTENDIMENTO, ESSAS APLICAÇÕES PODEM SER BASEADAS EXCLUSIVAMENTE NO NAVEGADOR, PODEM SER BASEADAS NO CLIENTE OU PODEM SER TAMBÉM APLICAÇÕES MÓVEIS, NÉ? AS APLICAÇÕES BASEADAS NO NAVEGADOR SÃO AQUELAS QUE TÊM CÓDIGOS QUE VÃO SER PARCIALMENTE PROCESSADOS NO SERVIDOR WEB, MAS VÃO SER EXECUTADAS DENTRO DO NAVEGADOR. ELAS TÊM CAPACIDADE DE ACESSAR DADOS DO SERVIDOR REMOTO OU TAMBÉM LOCALMENTE.
ENTÃO, VOCÊ PODE TER UM SERVIDOR DO GOOGLE, DA MICROSOFT, DA WS OU UM SERVIDOR LOCAL, NÉ, DENTRO DA SUA ORGANIZAÇÃO. E ESSE ACESSO TAMBÉM É COMUM, TANTO EM AMBIENTE REMOTO, QUANTO NO AMBIENTE LOCAL. AS BASEADAS NO CLIENTE SÃO BEM SEMELHANTES ÀS BASEADAS NO NAVEGADOR, SÓ QUE AO INVÉS DE SER EXECUTADA DENTRO DO NAVEGADOR, ELAS SÃO EXECUTADAS COMO APLICAÇÕES PRÓPRIAS.
ENTÃO, É COMO SE EU TIVESSE CONSTRUÍDO UMA APLICAÇÃO CLIENTE PARA CONSUMIR, POR EXEMPLO, UM RECURSO QUE FICA ARMAZENADO NO SERVIDOR, NÉ? ENTÃO, RECUPERAR UMA APLICAÇÃO EM C-SHARP OU UMA APLICAÇÃO EM PIPE, QUE VAI FAZER UMA CONEXÃO COM SERVIDOR WEB [. .
. ] E VAI FAZER UMA BUSCA NUMA BASE DE DADOS E VAI TORNAR A RESPOSTA PRA ELE. BASICAMENTE, DESSA APLICAÇÃO WEB PARA ESSA APLICAÇÃO CLIENTE, APLICAÇÃO [.
. . ], É QUE ELA VAI TER QUE SER DESENVOLVIDA DE MODO QUE ELA POSSA ABRIR UMA CONEXÃO DO TCP COM O SERVIDOR, FAZER UMA REQUISIÇÃO HTTP E OBTER A RESPOSTA EM HTTP TAMBÉM.
E AS APLICAÇÕES MÓVEIS, NÉ, SÃO BASTANTE UTILIZADAS EM RAZÃO DE NÓS TERMOS À DISPOSIÇÃO VINTE E QUATRO HORAS POR DIA UM DISPOSITIVO, QUE É O CELULAR, NÉ, QUE PERMITE A NÓS FAZER ACESSO AOS CONTEÚDOS ARMAZENADOS NESSE CELULAR. ENTÃO, TANTO O BROWNSER QUANTO UM CELULAR, NÉ, UM APLICATIVO NATIVO PARA AMBIENTE DO SISTEMA OPERACIONAL DO CELULAR, CONSOMEM OS MESMOS RECURSOS QUE ESTÃO ARMAZENADOS NAQUELE SERVIDOR. OS RECURSOS SÃO OS MESMOS, NÉ?
COMO QUE A INTERAÇÃO COM ELES VAI SER REALIZADA, NÉ, DIFERE DE UMA APLICAÇÃO QUE É FEITA NO CELULAR COM UMA APLICAÇÃO QUE É FEITA NO BROWNSER POR CONTA DO TAMANHO DA TELA, POR CONTA DA CAPACIDADE DE PROCESSAMENTO DO DISPOSITIVO CELULAR. ENTÃO, AÍ QUE É INTERESSANTE PENSAR NO DESENVOLVIMENTO WEB, NÉ, OLHANDO PARA O LADO DO CLIENTE, OLHANDO PARA O LADO DO SERVIDOR, CERTAMENTE O RESULTADO QUE VOCÊ OBTÉM DE UMA BUSCA POR ALGUMA INFORMAÇÃO DE SERVIDOR WEB QUE VAI SER MOSTRADA NO CELULAR VAI SER DIFERENTE DAQUELE RESULTADO DO PONTO DE VISTA DE FORMATAÇÃO DO CONTEÚDO, NÉ, DA RESPOSTA, VAI SER DIFERENTE DAQUELE RESULTADO QUE VAI APARECER NUM BROWNSER, POR EXEMPLO, O FIREFOX OU O CHROME. ENTÃO, A INFORMAÇÃO É CUSTOMIZADA.
E AÍ QUE ENTRA O PAPEL IMPORTANTE, IMPOSICIONAL DO FRONT-END, QUE FORMATA MELHOR A INFORMAÇÃO DE ACORDO COM O DISPOSITIVO, A CAPACIDADE DELE DE PROCESSAMENTO, ENTRE OUTRAS CARACTERÍSTICAS. BOM, EMBORA DE FORMA MAIS SIMPLES, UMA APLICAÇÃO WEB É FORMADA, DE MODO GERAL, SE A GENTE PENSAR EM PEQUENOS COMPONENTES, NÉ, DE UM SERVIDOR, DE UMA SÉRIE DE INFORMAÇÕES ARMAZENADAS, E OS CLIENTES QUE VÃO CONSUMIR ESSAS INFORMAÇÕES, TÁ? ENTÃO, A GENTE PODE PENSAR, NESSA SITUAÇÃO, NUMA APLICAÇÃO QUE VAI TER TRÊS CAMADAS.
UMA CAMADA DE APRESENTAÇÃO, QUE É AQUELA QUE APRESENTA AS INFORMAÇÕES PARA OS USUÁRIOS, INFORMAÇÕES ESSAS QUE FORAM COLETADAS POR AQUELE SERVIDOR; A LÓGICA, NÉ, A TAL DA LÓGICA, QUE VAI TRANSFORMAR AS INFORMAÇÕES LÁ ARMAZENADAS, CONSULTAR AS INFORMAÇÕES, EDITÁ-LAS E MANIPULÁ-LAS, NÉ? E QUE VÃO SER, DEPOIS ENCAMINHADAS, A RESPOSTA DESSE PROCESSAMENTO VAI SER ENCAMINHADA PARA OS USUÁRIOS. E A CAMADA DE DADOS, QUE RETÉM OS DADOS PARA APLICAÇÃO DE FORMA GERAL, TÁ?
ENTÃO, A APLICAÇÃO É BEM TÍPICA, NÉ. NUMA EXPLICAÇÃO BEM SIMPLISTA, ENVOLVE ESSAS TRÊS CAMADAS DIGAMOS ASSIM, APRESENTAÇÃO, A CAMADA DA LÓGICA – ONDE FICA O MODELO DO NEGÓCIO - E OS DADOS PROPRIAMENTE DITOS. AS CAMADAS QUE NÓS DESCREVEMOS ANTERIORMENTE DEPENDEM, LOGICAMENTE, DE TECNOLOGIAS QUE NÓS UTILIZAMOS, TANTO A DO SERVIDOR QUANTO A DO CLIENTE.
UMA COISA QUE É MANDATÓRIA É QUE O PADRÃO DE COMUNICAÇÃO NO CONTEXTO DA WEB – WWW – É FEITO DE PROTOCOLO HTTP. POR QUÊ? PORQUE É UMA DEPENDÊNCIA DE TECNOLOGIAS.
HÁ OUTROS SERVIDORES, EMBORA A COMUNICAÇÃO SEJA PADRONIZADA, ESSES SERVIDORES IMPLEMENTAM MÓDULOS QUE SÃO DIFERENTES UNS DOS OUTROS - MÓDULOS DE PROCESSAMENTO, DE REQUISIÇÕES QUE SÃO MAIS OTIMIZADAS, TRABALHAM COM MULTIPROCESSAMENTO, COM MÚLTIPLAS [. . .
]. ENTÃO, TEM EXEMPLOS, POR EXEMPLO, DE SERVIDORES WEB: APACHE, NGINX, O INTERNET INFORMATION SERVICE. ENTÃO, ISSO VARIA DE AMBIENTE PARA AMBIENTE.
UM OUTRO ASPECTO IMPORTANTE, QUANDO A GENTE FALA DE APLICAÇÕES, DAS CAMADAS, É A UTILIZAÇÃO DE COOKIES, NÉ? ENTÃO, O PROTOCOLO NÃO ARMAZENA INFORMAÇÃO DESSAS SESSÕES. CADA CONEXÃO HTTP É INDEPENDENTE, NÉ?
ENTÃO, UMA VEZ QUE EU ABRO UMA CONEXÃO, CLICO NO LINK E RECEBO O RESULTADO, SE EU CLICAR NO SEGUNDO LINK, O RESULTADO QUE ESSE SEGUNDO LINK NATIVAMENTE PARA O PROTOCOLO HTTP NÃO TEM RELAÇÃO. É POSSÍVEL A GENTE ORGANIZAR AS INFORMAÇÕES DE VÁRIAS CONEXÕES EM UM ARQUIVO, NÉ, QUE NÓS CHAMAMOS DE COOKIE, PRA CONSEGUIR LIDAR COM O QUE O USUÁRIO ESTÁ SOLICITANDO, SABER O QUE ELE ESTÁ UTILIZANDO DENTRO DO SITE, NÉ, COMO ELE ESTÁ NAVEGANDO, QUAIS AS PREFERÊNCIAS POR [. .
. ] DE LINKS, ENFIM. COM BASE NISSO, É POSSÍVEL, INCLUSIVE, FAZER A AÇÕES DE MARKETING, DE VENDAS DIRETO PARA AQUELE CLIENTE.
O COOKIE É UM MECANISMO QUE TEM UMA CERTA CONTROVÉRSIA EM RELAÇÃO AO USO DELE, QUE É VANTAGEM E DESVANTAGEM. ENTÃO, ELES PODEM SER UTILIZADOS POR USUÁRIOS MAL-INTENCIONADOS E O USO INDEVIDO PODE COMPROMETER A SEGURANÇA DA APLICAÇÃO. ELE PODE SER EM TOKEN DE AUTENTICAÇÃO, ELE PODE SER UM MECANISMO DE ARMAZENAMENTO DE DADOS TAMBÉM, TÁ?
ENTÃO, TEM ALGUNS ATAQUES. EMBORA EU NÃO VÁ DESCREVER ESSES ATAQUES AQUI, NÉ, ATAQUES COMO O XSS OU O SNIFFING, QUE É BASTANTE COMUM E QUE ROUBAM INFORMAÇÕES EM SESSÕES DE COOKIES DO USUÁRIO. POR OUTRO LADO, EMBORA ESSA, QUE EU ACABEI DE COMENTAR, SEJA UMA DESVANTAGEM TEM UM LADO BOM, QUE O COOKIE AJUDA, POR EXEMPLO, O PROCESSO DE COMPRA EM LOJAS ONLINE.
ENTÃO, A GENTE VAI FAZER UMA COMPRA NAVEGANDO POR UM SITE, NÉ, POR UM SITE DE COMPRA DE PRODUTO. . .
COMPRA DE TÊNIS, POR EXEMPLO, VOCÊ FICA EM DÚVIDA, SOBRE COMPRAR UM DETERMINADO LUGAR DE TÊNIS OU NÃO, VOCÊ NAVEGA PELO SITE, ESCOLHE UM TÊNIS, COLOCA NO CARRINHO, ESCOLHE UMA MEIA, COLOCA NO CARRINHO, ENFIM, E NESSE PERÍODO, OS SEUS DADOS ESTÃO SENDO COLETADOS, DADOS RELACIONADOS AO AMBIENTE DE NAVEGAÇÃO, PARA QUE DEPOIS QUE VOCÊ FECHAR A COMPRA E TER TUDO O QUE É NECESSÁRIO, QUE FOI ESCOLHIDO PARA VOCÊ CONCLUIR E FAZER O PAGAMENTO, TÁ? ENTÃO, A GENTE, SEM O USO DE COOKIES FICARIA MAIS COMPLEXO REGISTRAR AS DIVERSAS AÇÕES QUE O USUÁRIO PODE FAZER EM RELAÇÃO A ESSA NATUREZA, TÁ? BOM, VAMOS FALAR UM POUCO, ENTÃO, DE UM MODELO ARQUITETURAL PARA CONSTRUIR APLICAÇÕES, NO CASO AQUI, APLICAÇÕES WEB.
ENTÃO, O PADRÃO DE DESENVOLVIMENTO DE SOFTWARE, QUE É O MVC, DENOMINADO DE MODEL VIEW CONTROLLER, É UM PADRÃO ARQUITETURAL FORMULADO LÁ NA DÉCADA DE 70 QUE, BASICAMENTE, LEVA EM CONSIDERAÇÃO DIVIDIR AS APLICAÇÕES EM TRÊS CAMADAS. ENTÃO, UMA QUE ENVOLVE A APRESENTAÇÃO DOS DADOS, OUTRA A INTERAÇÃO COM CONTROLE USUÁRIOS FINAIS, QUE É O FRONT-END, SEPARADOS DOS DADOS, NÉ? QUER DIZER, DOS DADOS E DO PROCESSAMENTO E, DE FATO, DA LÓGICA DE NEGÓCIO QUE A GENTE CHAMA DE BACK-END, NÉ?
ENTÃO, SERIA O MODELO, A VISÃO E CONTROLLER, TÁ? ENTÃO, É UMA ARQUITETURA QUE SE TORNOU MUITO POPULAR PARA APLICAÇÕES WEB, NÉ, EMBORA TENHA SE DESENVOLVIDO BASTANTE, NÉ, POR ISSO QUE ELA É, DIGAMOS ASSIM, "ANTIGA", PORQUE É BASTANTE UTILIZADA PARA O DESENVOLVIMENTO DE INTERFACE GRÁFICA PARA OS USUÁRIOS, SISTEMA DE PERSONAGENS, APLICAÇÃO DESKTOP, ENFIM. E SERVE TAMBÉM PARA APLICAÇÕES MÓVEIS E APLICAÇÕES DESKTOP, COMO JÁ COMENTEI.
TEM MUITAS LINGUAGENS QUE UTILIZAM, É MUITO COMUM UTILIZAR ESSE MODELO DE DESENVOLVIMENTO ARQUITETURAL QUE É O PHP, O JAVA, O C#, A RUBY, O JAVASCRIPT E DIVERSOS OUTROS FRAMEWORKS, TÁ? ENTÃO, É UMA ARQUITETURA QUE AINDA, DEPENDENDO DA APLICAÇÃO QUE VOCÊ VAI DESENVOLVER E DO FRAMEWORK QUE VAI SER UTILIZADO, É UM MODELO INTERESSANTE DE SER UTILIZADO. ENTÃO, FAZ ESSA SEPARAÇÃO, TÁ?
ENTÃO, DOS COMPONENTES DO MODEL VIEW CONTROLLER, O MODELO REPRESENTA A LÓGICA DA APLICAÇÃO, ELE É UMA PONTE ENTRE A VISÃO E O CONTROLE. DIGAMOS ASSIM, É A PARTE LÓGICA DA APLICAÇÃO E VAI GERENCIAR O COMPORTAMENTO DOS DADOS POR MEIO DE REGRAS DE NEGÓCIOS, LÓGICA E FUNÇÕES. ENTÃO, VOCÊ CRIA TODAS AS REGRAS DE COMO VAI SER A INTERAÇÃO DA SUA APLICAÇÃO ENTRE OS COMPONENTES, ENTÃO, POR EXEMPLO, O COMPONENTE DE LOGIN, COMO É QUE ESSE COMPONENTE DE LOGIN VAI FUNCIONAR, QUAL QUE É A LÓGICA DA AUTENTICAÇÃO, COMO É QUE VAI SER RECUPERADA INFORMAÇÃO ARMAZENADA DO USUÁRIO PARA ACOPLAR NO SISTEMA, ENFIM.
ENTÃO, VOCÊ PODE TER ESSA VISÃO DE UM SISTEMA DE LOGIN, POR EXEMPLO. A VISÃO, QUE É UMA CAMADA DE APRESENTAÇÃO OU DE VISUALIZAÇÃO QUE REPRESENTA AÍ A SAÍDA DOS DADOS. ENTÃO, COMO É QUE EU FORMATO OS DADOS QUE EU OBTIVE LÁ DE UMA APLICAÇÃO SERVIDORA, NÉ, NUM SERVIDOR WEB.
ENTÃO, TABELA, DIAGRAMA, GRÁFICOS. ENTÃO, ESSES DADOS SÃO SOLICITADOS NO MODELO E SÃO EXIBIDOS. ENTÃO, AQUI A GENTE PODE TER VÁRIAS VISÕES DE UM MESMO DADO, NÉ?
ENTÃO, ASSIM, EU TENHO UMA INFORMAÇÃO SOBRE, POR EXEMPLO, UM SISTEMA QUE CONSEGUE VERIFICAR A PONTUAÇÃO DE MULTAS, NÉ, A PONTUAÇÃO DE UM MOTORISTA, INFORMAÇÕES SOBRE MULTAS, ENFIM. ENTÃO, VEJAM QUE EU POSSO TER VÁRIAS VISÕES DESSE DADO POR USUÁRIO. ENTÃO, NEM SEMPRE A VISÃO, A ESTRUTURA DAS TABELAS QUE ARMAZENA AS INFORMAÇÕES DE PONTOS, EVENTUALMENTE DE ALGUM PROBLEMA QUE O MOTORISTA TENHA RELACIONADO A SUA CARTEIRA DE HABILITAÇÃO, ESSA TABELA COM INFORMAÇÕES ARMAZENADAS É A MESMA.
ENTÃO, VOU SEPARAR E VOU INDICAR QUE A VISUALIZAÇÃO PRA DETERMINADOS USUÁRIOS VAI SER DIFERENTE. ENTÃO, AS INFORMAÇÕES QUE VÃO APARECER LÁ VÃO SER DIFERENTES. ENTÃO, DEPENDENDO, ASSIM, DO USUÁRIO QUE TEM POUCA PONTUAÇÃO [.
. . ] PONTUAÇÃO, EU CRIO UMA TELA VERDE NA HORA QUE ELE VAI FAZER O ACESSO LÁ.
PARA O USUÁRIO QUE TEM DIVERSOS PROBLEMAS COM A CARTEIRA DE MOTORISTA, TEM ALGUMA PONTUAÇÃO, TEM MULTA, EU DESENVOLVO UMA VISUALIZAÇÃO DAQUELAS INFORMAÇÕES, CRIO ALGUM ALERTA QUE ELE PRECISA REGULARIZAR A SITUAÇÃO DELE. ENFIM, ENTÃO, A VISÃO SOBRE OS DADOS É DIFERENTE PARA CADA USUÁRIO. E O CONTROLADOR FAZ A MEDIAÇÃO ENTRE O MODELO E A VISÃO, OU SEJA, A ENTRADA E A SAÍDA, COMO SE FOSSE UM ELEMENTO CENTRALIZADOR ALI, QUE LIDA COM A VISÃO, QUE LIDA COM O MODELO, TÁ?
BOM, HÁ UMA INTERAÇÃO CLARA ENTRE ESSES COMPONENTES, NÉ, ENTÃO, O CONTROLADOR VAI ENVIAR COMANDOS PARA O MODELO, PARA ATUALIZAR O ESTADO, NÉ? ENTÃO, POR EXEMPLO, EU VOU DIGITAR UM DOCUMENTO, VOU DIGITAR UMA PLANILHA OU UM DOCUMENTO COMPARTILHADO, O MODELO ARMAZENA DADOS E NOTIFICA SUAS VISÕES E CONTROLADORES ASSOCIADOS E A VISÃO GERA UMA REPRESENTAÇÃO DOS DADOS QUE ESTÃO PRESENTES NO MODELO, NÉ, E FAZ A EXIBIÇÃO DESSES DADOS. ENTÃO, POR MEIO DE UMA LINGUAGEM DE MARCAÇÃO, POR EXEMPLO, WXWEB OU HTML.
BOM, COMO É QUE FICA ESSE MODELO EM APLICAÇÕES WEB? BOM, ALGUNS FRAMEWORKS, DIGAMOS ASSIM, HÁ VÁRIOS FRAMEWORKS QUE SE UTILIZAM DESSE MODELO, NÉ, DE MODELO, VISÃO E CONTROLADOR PRA BENEFICIAR O DESENVOLVEDOR, FACILITAR O DESENVOLVIMENTO E FAZER A INSTALAÇÃO DOS COMPONENTES, TÁ? ENTÃO, EM GERAL, ATUALMENTE OS FRAMEWORKS UTILIZAM ABORDAGEM BASEADA NO CLIENTE, NÉ, QUE QUASE COLOCARAM TANTO NO MODELO, QUANTO NA VISÃO E NO CONTROLADOR TUDO NO MESMO LUGAR, TUDO NO SERVIDOR WEB.
ENTÃO, EMBORA O DESENVOLVIMENTO SEJA BASEADO NESSAS TRÊS CAMADAS, NÉ, BASICAMENTE TUDO FICA DENTRO DO SERVIDOR WEB E O CLIENTE, SIMPLESMENTE, FAZ ACESSO A ESSA APLICAÇÃO, PORQUE ELA ESTÁ DIVIDIDA SEGUNDO ESSA ARQUITETURA, NÉ? ENTÃO, POR EXEMPLO, O CLIENTE VAI ENVIAR A REQUISIÇÃO PARA O CONTROLADOR E RECEBER UMA PÁGINA WEB COMPLETA, ATUALIZADA, SEGUNDO A VIEW DO USUÁRIO. ENTÃO, VEJA QUE O MODELO ESTÁ PRATICAMENTE TODO NO SERVIDOR, NESTE CASO.
TEM OS DADOS, TEM A LÓGICA, QUE FOI UTILIZADA PARA GERAR UMA VIEW EXCLUSIVA PARA AQUELE USUÁRIO QUE PRECISA TER ALGUM CONTEÚDO DE INFORMAÇÕES EXCLUSIVA PRA ELE, DIFERENTEMENTE DE UM OUTRO USUÁRIO. UM OUTRO EXEMPLO, UMA APLICAÇÃO EM QUE A VISÃO É UM DOCUMENTO HTML GERADO PELA APLICAÇÃO, NÉ, O CONTROLADOR RECEBE UMA REQUISIÇÃO GET OU POST, NÉ, APÓS O ESTÍMULO DO USUÁRIO E VAI PROCESSAR ESSE DOCUMENTO PARA MANDAR COMO RESPOSTA À SAÍDA DO USUÁRIO, QUE TEM QUE SER EM HTML. PRO OUTRO PODE SER UM ARQUIVO EM PDF, POR OUTRO USUÁRIO PODE SER UM DOC.
ENTÃO, VEJAM QUE SÃO VISÕES DIFERENTES PARA O MESMO. . .
SÃO VISÕES DIFERENTES PARA DIFERENTES USUÁRIOS. E PODE SER UMA VISÃO ÚNICA, PARA TODOS OS USUÁRIOS TAMBÉM. QUER DIZER, ESSA DEFINIÇÃO, SE A VISÃO VAI SER A MESMA OU SE ELA VAI SER DIFERENTE, NÉ?
ISSO VAI DEPENDER DE QUEM VAI DESENVOLVER E QUAIS SÃO OS REQUISITOS DA APLICAÇÃO. ENTÃO, CONTINUANDO, ISSO VAI INVOCAR OBJETOS DO DOMÍNIO PARA TRATAR A LÓGICA DO NEGÓCIO ASSOCIADO AO QUE AQUELE USUÁRIO DESEJA PRA SER GERADA UMA VISÃO ASSOCIADO A ELE, TÁ? BOM, QUAIS SÃO AS VANTAGENS DESSA ARQUITETURA?
A APLICAÇÃO TORNA-SE MAIS ESCALÁVEL, VOCÊ PODE REUTILIZAR CÓDIGOS, A MANUTENÇÃO DA APLICAÇÃO, DE UM CERTO MODO, ELA SE TORNA MAIS FÁCIL SE A GENTE NÃO USAR ESSE MODELO, NÉ? E COMO ELA É MODULAR, ELA PERMITE QUE OS DESENVOLVEDORES E OS DESIGNERS FAÇAM O DESENVOLVIMENTO EM PARALELO. ENTÃO, UMA PARTE FOCADA NA LÓGICA, OUTRA FOCADA NA VISÃO, OUTRA FOCADA NO CONTROLADOR, TÁ?
AS DESVANTAGENS, NÉ, ALGUMAS DESVANTAGENS É QUE, QUANDO O PROJETO É MUITO GRANDE, O NÚMERO DE ARQUIVOS TENDE A CRESCER MUITO, PORQUE VOCÊ PODE TER VÁRIAS VISÕES DOS MESMOS DADOS PARA VÁRIOS USUÁRIOS E ISSO PODE AUMENTAR EM FUNÇÃO DO NÚMERO DE USUÁRIOS TAMBÉM. ENTÃO, REQUER UM CERTO TEMPO PARA MODELAR O SISTEMA, NÉ, VOCÊ TEM QUE MODELAR TODO O SISTEMA SEGUINDO ESSA LÓGICA, TÁ? NEM TODAS AS APLICAÇÕES DEVEM SER DESENVOLVIDAS ASSIM.
SE VOCÊ PRECISA DE AGILIDADE NO DESENVOLVIMENTO, TALVEZ NÃO SEJA UMA ESTRATÉGIA ADEQUADA, SE A APLICAÇÃO FOR MUITO GRANDE TAMBÉM. MAS ALGUMAS DESVANTAGENS SÃO ESSAS, NÉ? ENTÃO, ASSIM, A MANUTENÇÃO, DE REPENTE, QUE É UMA VANTAGEM, ELA PODE SE TORNAR UMA DESVANTAGEM À MEDIDA QUE A APLICAÇÃO FOR FICANDO MUITO GRANDE TAMBÉM, PORQUE A MANUTENÇÃO VAI FICANDO MAIS COMPLICADA, NÉ?
AGORA, SE FOR UMA APLICAÇÃO UM POUCO MENOR, TEM UMA LÓGICA BEM DEFINIDA, NÃO TEM MUITAS LÓGICAS, A APLICAÇÃO PODE SER MUITO GRANDE, VOCÊ DIVIDE EM VÁRIAS, CENTENAS DE COMPONENTES E VOCÊ TEM QUE TER LÓGICA ASSOCIADA EM DIVERSOS COMPONENTES. NÃO É UMA LÓGICA, DIGAMOS, PADRONIZADA. SÃO LÓGICAS DISTINTAS PARA VÁRIAS PARTES DA APLICAÇÃO.
BOM, QUAL É A RELAÇÃO DE APLICAÇÃO WEB COM RECOMPUTAÇÃO? BOM, É IMPORTANTE DEIXAR CLARO QUE UMA NUVEM COMPUTACIONAL NÃO ARMAZENA SÓ FOTOS, SÓ IMAGEM, SÓ ÁUDIO, SÓ VÍDEO, ENFIM. BOA PARTE DAS APLICAÇÕES QUE NÓS UTILIZAMOS SÃO ARMAZENADAS EM GRANDES DATA CENTERS DE GRANDES COMPANHIAS QUE OPERAM NO MEIO PÚBLICO OU NO MEIO PRIVADO.
ELAS INTERAGEM POR MEIO DE PROTETORES DE SERVIÇO, UNS JÁ CONHECIDOS, COMO AWS, A AZURE, A GOOGLE CLOUD, NÉ, E O FATO DESSAS APLICAÇÕES ESTAREM HOSPEDADAS NESSES AMBIENTES PERMITEM MUITA FLEXIBILIDADE E [. . .
] DA APLICAÇÃO E ALTA DISPONIBILIDADE TAMBÉM, QUE SÃO EMPRESAS QUE TÊM COMO FOCO UMA INFRAESTRUTURA MUITO, DIGAMOS ASSIM, PARRUDA, NÉ, MUITO BEM DIMENSIONADA PARA SUPORTAR APLICAÇÕES COMPLEXAS E UMA GRANDE QUANTIDADE DE ACESSOS SIMULTÂNEOS POR UNIDADE DE TEMPO, DE DIVERSAS ORIGENS DO MUNDO, DE DIVERSOS PAÍSES, DIVERSOS CONTINENTES E COM CENTENAS, MILHARES E ATÉ MILHÕES DE USUÁRIOS, TÁ? ENTÃO, GRANDES BANCOS, INCLUSIVE, POSSUEM ESSAS APLICAÇÕES QUE NÓS CONSUMIMOS VIA CELULAR NO MEIO COMPUTACIONAL, E NÃO DEIXA DE SER APLICAÇÃO WEB TAMBÉM. BOM, O QUEBRA-CABEÇA DE UMA APLICAÇÃO WEB, DE FATO, PODE SER CARACTERIZADO COMO QUEBRA-CABEÇA, SÃO VÁRIOS COMPONENTES QUE PRECISAM SE INTERLIGAR, NÉ?
E MUITOS COMPONENTES SÃO COMUNS, NÉ? ENTÃO, O QUE TEM NESSE "COMUM" DE APLICAÇÃO WEB? POR EXEMPLO, PRA DESENVOLVER UM BLOG.
ENTÃO, A PARTE ADMINISTRATIVA DE UM BLOG PRECISA DE UMA PARTE QUE ESTÁ RELACIONADA À AUTENTICAÇÃO. ENTÃO, PRECISA TER PERMISSÃO DE ACESSO PARA ÁREA ADMINISTRATIVA PARA FAZER EDIÇÃO DAS MENSAGENS QUE EU POSTO NO MEU BLOG, DAS IMAGENS QUE EU CARREGO, QUE EU MOSTRO, ENFIM, DAQUILO QUE EU APAGO, DAQUILO QUE EU SALVO COMO RASCUNHO E DEPOIS PUBLICO, ENFIM. ENTÃO, NÃO É QUALQUER USUÁRIO QUE VAI PODER FAZER ACESSO.
TAMBÉM É COMUM, FAZ PARTE COMUM DESSE QUEBRA-CABEÇA COM DIVERSOS COMPONENTES OS SERVIDORES WEB, QUE NADA MAIS SÃO DO QUE O HARDWARE E O SOFTWARE PARA HOSPEDAR AS APLICAÇÕES; DEFINIÇÃO DE PERMISSÕES COM BASE NA AUTORIZAÇÃO, VIA INA, AUTENTICAÇÃO E AUTORIZAÇÃO, QUE É QUEM DE FATO TEM PERMISSÕES PARA OPERAR AQUELE CONTEÚDO, EDITAR AQUELE CONTEÚDO, MANTER, APAGAR, MOVIMENTAR O CONTEÚDO QUE SÃO OS SERVIDORES QUE HOSPEDAM AS APLICAÇÕES; E O CONTEÚDO DA APLICAÇÃO PROPRIAMENTE DITO, QUE FICA ARMAZENADO NO SERVIDOR. QUAL É O CONTEÚDO QUE VAI SER MANDADO, ENVIADO PARA DETERMINADO USUÁRIO, TÁ? ALÉM DISSO, PÁGINA DE ACESSO AOS DADOS, SÃO PARTES QUE SÃO ANEXADAS A BIBLIOTECAS QUE FORNECEM ACESSO AOS DADOS; O ARMAZENAMENTO PROPRIAMENTE DITO, OS SERVIDORES WEB TÊM LIGAÇÕES, ISSO É UMA PARTE JÁ MAIS VOLTADA PARA O BACK-END, COMO QUE ELES SE CONECTAM À BASE DE DADOS QUE ARMAZENAM CENTENAS, MILHARES E MILHÕES DE INFORMAÇÕES DE USUÁRIOS; A LÓGICA, NÉ, DA APLICAÇÃO E INTERAÇÃO COM OS USUÁRIOS E MECANISMO PARA OBTER INFORMAÇÃO, QUE SÃO ORIUNDAS LÁ DAS BASES DE DADOS E, POR EXEMPLO, PENSANDO NUMA INTERFACE, NUMA PARTE ADMINISTRATIVA TAMBÉM, UM AMBIENTE DE [.
. . ].
QUER DIZER, COMO OS USUÁRIOS SE DESCONECTAM DAQUELE AMBIENTE, IMPEDINDO QUE ALGUÉM MAL-INTENCIONADO TENHA ACESSO E FAÇA ALGUMA ALTERAÇÃO, TÁ? ISSO VALE, POR EXEMPLO, INCLUSIVE PARA APLICAÇÕES DO SISTEMA BANCÁRIO, EMBORA ESSE SISTEMA DE DESCONEXÃO ACABA SENDO AUTOMATIZADO EM QUASE 100% DAS VEZES, NÉ? ENTÃO, SE VOCÊ LOGAR NUM APLICATIVO DE BANCO, POR EXEMPLO, A SESSÃO PERMANECE ATIVA DEPOIS QUE VOCÊ LOGAR DURANTE ALGUNS SEGUNDOS OU MINUTOS E, AUTOMATICAMENTE, O SERVIDOR, O QUE ACONTECE?
ELE FECHA A CONEXÃO COM VOCÊ, PORQUE ELE DETECTA QUE NÃO HOUVE NENHUMA INTERAÇÃO POR PARTE DA APLICAÇÃO COM ALGUNS COMPONENTES DA APLICAÇÃO, POR EXEMPLO. ENTÃO, SE VOCÊ NÃO INTERAGE, ELE ENTENDE QUE PRECISA FECHAR A CONEXÃO, TÁ? BOM, PESSOAL, PRA AULA DE HOJE ERA ISSO.
ENTÃO, MOSTRAR PARA VOCÊS QUE EXISTEM ARQUITETURAS PARA DESENVOLVIMENTO DE APLICAÇÕES WEB, QUE A GENTE FALOU UM POUCO DA MVC, NÉ? E A GENTE DEVE UTILIZAR UM POUCO DO CONHECIMENTO DA ARQUITETURA MVC NO DESENVOLVIMENTO DAS ATIVIDADES PRÁTICAS E, POTENCIALMENTE, ALGUNS EXERCÍCIOS PARA ESSA DISCIPLINA, TÁ?