Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ambiente para Desenvolvimento Web Unidade 1 Arquiteturas de aplicações e os protocolos da web Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial CRISTIANE SILVEIRA CESAR DE OLIVEIRA Projeto Gráfico TIAGO DA ROCHA Autoria HENRIQUE SENA LEANDRO C. CARDOSO AUTORIA Henrique Sena Sou formado em Desenvolvimento de Software e em Sistemas para internet. Iniciei minha carreira profissional utilizando e desenvolvendo aplicações em plataformas open-source voltadas para educação a distância. Não demorou muito para ter minhas primeiras experiências como professor em cursos presenciais, atividade na qual fiquei muito satisfeito com os resultados obtidos. Sou analista de websites e consultor de EAD, com mais de 12 anos de carreira, administro sistemas educacionais para ensino a distância e sou professor de cursos técnicos presenciais. Passei por empresas como a UNINASSAU, Faculdade Joaquim Nabuco, Porto Digital, Ogilvy & Mather, Lunes Comunicação e Ricardo Alexandre Cursos On-line. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Conte comigo! Leandro C. Cardoso Possuo graduação em Comunicação Social com habilitação em Design Digital e mestrado em Tecnologias da Inteligência e Design Digital pela PUC-SP, com experiência em direção de arte e criação na área com mais de 20 anos. Passei por empresas como a Laureate International Universities – FMU, FIAM-FAAM, Universidade Anhembi Morumbi e o Centro Paula Souza (FATEC-ETEC). Na Laureate EAD atuei como analista de Desenvolvimento Pedagógico Sênior e como coordenador de Curso Técnico de Comunicação Visual no Centro Paula Souza. Fui revisor técnico e validador de Curso EAD para Clientes Laureate International Universities, DeVry Brasil, UNEF, FAESF, Faculdade Positivo, Uninter, Platos Soluções Educacionais S.A. (Kroton – Universidade Anhaguera). Sou autor de mais de 10 livros didáticos e um dos organizadores da Maratona de Criação e Design do Curso de Comunicação Visual da ETEC Albert Einstein. Sou apaixonado pelo que faço e adoro transmitir minha experiência de vida àqueles que estão iniciando em suas profissões. Por isso fui convidado pela Editora Telesapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! SUMÁRIO Arquitetura cliente-servidor ................................................................... 12 Definições básicas ......................................................................................................................... 12 Padrões de arquitetura cliente-servidor ........................................................................ 16 Arquitetura Web .......................................................................................... 21 Definições básicas .......................................................................................................................... 21 Padrões de arquitetura web ....................................................................................................24 HTTP Server ...................................................................................................27 Arquivos de hospedagem ........................................................................................................27 Comunicação via HTTP .............................................................................................................. 30 File Transfer Protocol (FTP) ..................................................................... 35 Ferramentas de FTP ......................................................................................................................35 Diferença entre FTP e CMS ..................................................................................................... 38 ICONOGRÁFICOS Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO: para o início do desenvolvimento de uma nova compe- tência; DEFINIÇÃO: houver necessidade de se apresentar um novo conceito; NOTA: quando forem necessários obser- vações ou comple- mentações para o seu conhecimento; IMPORTANTE: as observações escritas tiveram que ser priorizadas para você; EXPLICANDO MELHOR: algo precisa ser melhor explicado ou detalhado; VOCÊ SABIA? curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias; SAIBA MAIS: textos, referências bibliográficas e links para aprofundamen- to do seu conheci- mento; REFLITA: se houver a neces- sidade de chamar a atenção sobre algo a ser refletido ou dis- cutido sobre; ACESSE: se for preciso aces- sar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast; RESUMINDO: quando for preciso se fazer um resumo acumulativo das últi- mas abordagens; ATIVIDADES: quando alguma atividade de au- toaprendizagem for aplicada; TESTANDO: quando o desen- volvimento de uma competência for concluído e questões forem explicadas; 9 UNIDADE 01 Ambiente para Desenvolvimento Web 10 INTRODUÇÃO Você sabia que a área relacionada a arquiteturas cliente- servidor e web é uma das demandas iniciais para os profissionais que trabalham no ambiente de desenvolvimento web? Isso mesmo. O desenvolvimento de aplicações para web cria uma série de conceitos que estamos acostumados a lidar no nosso dia a dia. Essas aplicações são executadas em ambientes distribuídos, nos quais normalmente cada um está localizado em uma máquina distinta. Atualmente, arquiteturas envolvidas utilizando o paradigma cliente- servidor executam essa experiência, na qual a interface principal com o usuário é executada na estação final, ou seja, no cliente (usuário), e a parte de acesso aos dados, no servidor de banco de dados em outro computador. Entendeu? Ao longo desta unidade letiva, você vai mergulhar neste universo! Ambiente para Desenvolvimento Web 11 OBJETIVOS Olá. Seja muito bem-vindo à Unidade 1. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Compreender a evolução da internet e, na sequência, ter uma visão técnica dos serviços utilizados na internet, tendo por base a arquitetura cliente-servidor. 2. Contextualizar os elementos básicos que compõem a estrutura de uma arquitetura web. 3. Identificar as características principais do protocolo HTTP, entendendo como utilizá-lo para acessar e manipular servidores on-line. 4. Utilizar ferramentas de FTP, SFTP e FTPS, ferramentas essas que auxiliam na manipulação de diretórios e arquivos on-line. Ambiente para Desenvolvimento Web 12 Arquitetura cliente-servidor OBJETIVO: Ao término deste capítulo, você será capaz de entender a evolução da internet e a visão técnica dos serviços nela utilizados, tendo por base a arquitetura cliente-servidor. Isso será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Apesar de muito moderna, a internet surgiu no final da década de 1960. Em plena Guerra Fria com a União Soviética e movidos pela necessidade de se proteger, os Estados Unidos implementaram a ARPANet, que viria a se tornar a internet dos dias de hoje. Guerra Fria é a designação atribuída ao período histórico de disputas estratégicas e conflitos indiretos entre os Estados Unidos e a União Soviética (atualmente, Rússia), compreendendo o período entre o final da Segunda Guerra Mundial (1945) e a extinção da União Soviética (1991), um conflito de ordem política, militar, tecnológica, econômica, social e ideológica entre as duas maiores potências militares do mundo. É chamada de “fria” porque não houve confronto direto. Definições básicasA arquitetura cliente-servidor é aquela que divide os dados entre dois níveis de armazenagem e acesso, como será visto adiante. As aplicações on-line utilizam uma arquitetura multinível, nos quais as funções executadas por aplicações podem estar distribuídas em rede. Ambiente para Desenvolvimento Web 13 Figura 1 – Arquitetura Ciente-Servidor Fonte: Freepik Podemos afirmar que nenhuma tecnologia cresceu (ou cresce) numa velocidade tão vertiginosa quanto a internet. Base de comunicação de dados para a web, o HTTP (que vamos estudar adiante) começou a ser aplicado na década de 1990, quando ainda não tínhamos a socialização do acesso à grande em rede de computadores. Menos de três décadas depois, a maioria da população adulta alfabetizada já navega de forma plena nas ondas da internet. Selecionamos para você alguns eventos importantes que ilustram a evolução da internet. Observe o infográfico a seguir. Figura 2 – Linha do tempo da internet até o ano de 1984 Fonte: Sena (2017a, p. 16). Ambiente para Desenvolvimento Web 14 Na arquitetura cliente-servidor, no que tange aos serviços, os elementos no ambiente de desenvolvimento web são organizados da seguinte forma: de um lado está o cliente (usuário) web, ou browser (navegador), que solicita dados ao servidor e, quando recebidos de volta, formata essas informações e as apresenta ao usuário. Do outro lado está o servidor, que recebe as requisições, lê os dados requisitados e os retorna para o cliente (usuário). Essa é a forma original de funcionamento de servidores apenas de conteúdos, ou seja, uma vez programados, apresentam sempre a mesma informação. Figura 3 – Arquitetura cliente-servidor Fonte: Sena (2017a, p. 17). Como mostra a ilustração anterior, as tecnologias HTML, CSS e JavaScript (JS) têm por finalidade formatar e submeter os dados à aplicação que está sendo executada no servidor Web (DUCKETT, 2016). Elas também se prestam a receber e formatar as informações processadas pelo servidor, exibindo-as no dispositivo de saída, por meio do mesmo navegador (ou browser) utilizado na submissão dos dados. No entanto, essas tecnologias só conseguem processar dados estáticos, ou seja, páginas previamente formatadas com dados informados pelo programador. Existem outras tecnologias capazes de formatar páginas HTML de modo dinâmico, estamos falando de linguagens de programação como o PHP e o .NET (“dot Net”), entre outras. Ambiente para Desenvolvimento Web 15 IMPORTANTE: As linguagens de script são “entendidas” por serem muito rápidas para aprender e escrever. O padrão para comunicação entre o servidor e o server-side gateway program é conhecido como CGI (Common Gateway Interface). A interface CGI explicita como os dados devem ser passados do servidor para o programa e como este deve retornar os dados ao servidor. Além disso, especifica variáveis de ambiente que devem ser criadas pelo servidor e que podem ser acessadas pelo programa. Essas variáveis contêm o endereço IP do usuário remoto, o tipo de browser que ele utiliza, dados para autenticação do usuário, entre outros. Os programas escritos para serem executados por servidores são também conhecidos como scripts CGI, os quais implementam a lógica do negócio e, muitas vezes, o acesso aos dados de uma aplicação web. Pois podem acessar dados armazenados no servidor ou fazer chamadas a um servidor de banco de dados local ou remoto, permitindo o acesso às informações da empresa. Nessa arquitetura, existem programas sendo executados no servidor e em outras máquinas da rede, como o servidor de banco de dados. A execução de programas no lado do cliente se dá como vimos anteriormente, por meio do browser, que é independente do servidor. Assim, qualquer operação realizada pelo cliente tem de ser validada e executada pelo servidor, pois o browser não possui inteligência. Os programas que são executados no browser, normalmente, são scripts (VBScript ou JavaScript), com a capacidade de perceber os eventos causados pelo usuário e responder de forma apropriada. Eles são codificados dentro de páginas HTML e o seu código-fonte pode ser visualizado pelo usuário, pois não é um código compilado. Os scripts interagem muito com todos os elementos que formam uma página HTML. Ambiente para Desenvolvimento Web 16 Outro tipo de programa que pode ser executado no cliente são os programas escritos na linguagem Java, que será descrita em maiores detalhes mais à frente. Em Java, é possível escrever aplicações completas, inclusive acessando bancos de dados relacionais, independentemente do servidor. Da mesma forma, é possível implementar os níveis de interface com o usuário e de lógica do negócio usando um servidor de banco de dados para implementar o nível de acesso aos dados. Padrões de arquitetura cliente-servidor Para se aprofundar nos padrões de arquitetura cliente-servidor, é importante conhecer a terminologia cliente da web. Trata-se de uma estrutura cliente-servidor distribuída, usada, predominantemente, em aplicativos com base na internet, nos quais há pouco controle do cliente sobre sua configuração – geralmente para acessá-lo, o cliente precisa apenas de um navegador. Temos alguns padrões que são comumente utilizados para o uso com cliente da web, os quais iremos ver em detalhes na sequência. Como dito, existem alguns padrões mais comuns para cliente da web, que são: • Cliente Pesado da Web (Web Heavy User) - uma parte importantíssima, em termos de arquitetura lógica do negócio; é executada no servidor. Em geral, os website e sistemas on- line utilizam PHP, .NET, Applets Java ou controles ActiveX para executar a lógica do negócio, que está em camadas programadas para serem executadas no servidor, respondendo a requisições realizadas pelo cliente. A comunicação com o servidor ainda é feita por meio de dois protocolos básicos: HTTP e HTTPS. • Liberação pela web - além de usar o protocolo HTTP para a comunicação direta cliente/servidor, é possível usar outros protocolos, conhecidos como RMI-IIOP e DCOM. Podemos defini-los como sistemas de processamento distribuído ou processamento paralelo. Ambos suportam um sistema de objetos distribuídos. Podemos chamar esses sistemas distribuídos de camadas de execução, em que as requisições são subdivididas em vários nós, ou seja, em várias tarefas. Dessa forma, ganhamos em performance de entrega de serviços requeridos do cliente. Ambiente para Desenvolvimento Web 17 É importante destacar a Plataforma da Microsoft como parte de sua estratégia para internet no mercado. A “Plataforma Microsoft”, segundo a própria fabricante, pelo menos na visão do seu Departamento de Marketing, trata-se de uma arquitetura aberta de software, para disponibilizar conteúdo rico e aplicações por meio da internet e de intranets. Tecnicamente, a plataforma combina uma série de tecnologias para criar sistemas de softwares distribuídos com base em componentes (ou objetos). Cada componente é um pedaço de software que possui informações e implementa serviços necessários a uma ou mais aplicações, podendo residir em uma máquina da rede e ser acessado por outras de forma independente da sua localização. Os componentes implementam serviços dos vários níveis de uma arquitetura multi-tier: apresentação, lógica do negócio e acesso aos seus dados. DEFINIÇÃO: A arquitetura multi-tier, também conhecida como arquitetura multicamada, possibilita o desenvolvimento de aplicações em várias camadas lógicas, de forma que pode ser dividida em vários computadores de uma rede. O objetivo maior dessa tecnologia é permitir, com o passar do tempo, o desenvolvimento de aplicações em escalas de tempo bastante reduzidas. Todo o desenvolvimento será calcado na ideia da reutilização de componentes já existentes para a criação de novas aplicações. Antes de implementar algo novo, os projetistas de software devemprocurar verificar se já não existem componentes prontos para atender àquela situação específica. Esses componentes podem estar disponíveis dentro da própria organização ou ser adquiridos de terceiros. Os componentes podem estar presentes nas interfaces com o usuário (browser), implementando a lógica do negócio junto ao servidor ou distribuídos pela rede e realizando atividades de acesso aos dados, utilizando bases de dados em qualquer formato. Esse conjunto de tecnologias que vão permitir o desenvolvimento de aplicações distribuídas com base no conceito da web é normalmente chamado de ActiveX. Os componentes que aderem a essas especificações são conhecidos como componentes ActiveX. Ambiente para Desenvolvimento Web 18 O padrão para construção de componentes ActiveX é especificado pelo COM (Component Object Model). O COM especifica uma série de serviços (interfaces) que devem ser implementadas pelos componentes para que eles possam se integrar com facilidade a qualquer tipo de aplicação. Um objeto COM pode, por exemplo, ser incorporado dinamicamente a uma aplicação como o Microsoft Word ou Internet Explorer, que são conhecidos como “containers” de objetos. A Plataforma Ativa Microsoft utiliza recursos já existentes na web e complementa-os com a ideia dos componentes ActiveX. A arquitetura proposta é a seguinte: de um lado está o chamado cliente ativo, que é um browser, com a capacidade de apresentar páginas HTML, executar programas em Java, conter componentes ActiveX e executar scripts (VBScript ou JavaScript) que controlam todos esses elementos. As linguagens de script têm papel extremamente importante, pois formam a “cola” que une os componentes (ActiveX e Java) para criar aplicação para o usuário. São elas que ativam os componentes ActiveX/ Java, solicitando-lhes serviços de acordo com as escolhas dos usuários. Do outro lado, está o servidor ativo, que é um servidor web com a capacidade de ler e entregar páginas HTML estáticas e executar scripts que utilizam componentes ActiveX para realizar atividades (LAWSON; SHARP, 2012). Deve ser observada a simetria entre o cliente ativo e o servidor ativo. Ambos têm a capacidade de lidar com os mesmos elementos, sendo que o servidor não executa nenhuma atividade de apresentação de interface para o usuário. Os componentes utilizados pelo servidor implementam a lógica do negócio e o acesso aos dados, já no cliente ativo, executam os componentes que implementam a interface da aplicação. Os componentes ActiveX podem residir no mesmo servidor ou podem ser distribuídos pela rede, o padrão para criação de objetos distribuídos é conhecido como DCOM (Distributed Component Object Model). Espera-se que essa tecnologia permita aos desenvolvedores de software criar aplicações distribuídas, utilizando um browser, que é independente de arquitetura e reutilizando componentes pré- programados. Ambiente para Desenvolvimento Web 19 As linguagens de script (script languages) são assim chamadas por serem linguagens de programação simples, sem muitas das restrições associadas às linguagens mais complexas. Nas linguagens de script, o tratamento dos tipos das variáveis é bastante simplificado para o programador, pois estas não possuem tipos fixos e assumem aqueles valores que lhes são atribuídos. Elas são interpretadas em tempo de execução em vez de compiladas para posterior execução. Figura 4 – As linguagens de script são simples, sem muitas das restrições associadas às linguagens mais complexas Fonte: Freepik Muitas vezes, as linguagens de script são subconjuntos mais simples de linguagens existentes, como é o caso do VBScript e do JavaScript. Ambas têm o mesmo potencial de utilização na web apesar de usarem sintaxes diferentes. Programas feitos em VBScript/JavaScript podem ser inseridos em qualquer página HTML. Também é importante considerar arquitetura que é muito usada em desenvolvimento voltado para web, na qual a lógica da aplicação é implementada em uma camada separada da interface do usuário, em que a comunicação entre as camadas se dá por meio de uma camada controladora, que recebe o nome de MVC (Model- View-Controller). Também é importante considerar que, na teoria, em uma arquitetura de duas camadas, os gerenciadores de bancos de dados estão situados no servidor. Ambiente para Desenvolvimento Web 20 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que apesar de muito moderna, a internet surgiu no final da década de 1960. Em plena Guerra Fria com a União Soviética e movidos pela necessidade de se proteger, os Estados Unidos implementaram a ARAPANet, que viria a se tornar a internet dos dias de hoje. A motivação dos Estados Unidos, àquela época, era bem semelhante à nossa, quando colocamos informações nos repositórios conhecidos como nuvens (cloud computing), visando garantir segurança. Os EUA buscavam proteger suas informações estratégicas, descentralizando a guarda desses conteúdos digitais. Assim nasceu a internet e, consequentemente, os protocolos e os recursos apresentados aqui neste capítulo. Ambiente para Desenvolvimento Web 21 Arquitetura Web OBJETIVO: Ao término deste capítulo, você será capaz de compreender e contextualizar os elementos básicos que compõem a estrutura de uma arquitetura web. Isso será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Os elementos básicos que formam a arquitetura web são o cliente e o servidor, mas é fundamental que seja assegurada a máxima eficiência desse sistema por meio de vários processos, conceitos e métodos que serão aqui apresentados. Definições básicas O ambiente inteiro reside em um único servidor, para um típico aplicativo web. Isso inclui servidor web, servidor de aplicativos e servidor de banco de dados. Uma variação comum dessa configuração é uma pilha LAMP, em que o empilhamento de serviços representa Linux, Apache, MySQL e PHP, em um único servidor. A pilha LAMP é um grupo de softwares open-source tipicamente instalado em conjunto para permitir a um servidor hospedar websites dinâmicos e aplicações web. Esse termo é atualmente um acrônimo que representa o sistema operacional Linux, com o servidor web Apache. A informação do site é armazenada em uma base de dados MySQL, e o conteúdo dinâmico é processado pelo PHP. É preciso analisar tanto os pontos positivos como os negativos, sendo que o ponto positivo é que arquitetura é caracterizada como simples entre cliente e servidor. Ambiente para Desenvolvimento Web 22 Figura 5 – No ambiente web, sua arquitetura é caracterizada como simples entre cliente e servidor Fonte: Freepik Já os pontos negativos estão relacionados ao fato de que todos os componentes do sistema (CPU, memória etc.) rodam no mesmo servidor, comprometendo o seu desempenho, além de apresentar problemas com escala horizontal. Figura 6 – Exemplificação de configurações de um servidor único Fonte: Sena (2017b, p. 13). Em relação ao banco de dados em servidor específico, nessa configuração o Sistema de Gerenciamento de Banco de Dados (SGBD) é alocado em diretório específico, distinto dos demais ambientes. Ambiente para Desenvolvimento Web 23 SAIBA MAIS: Você pensa que programar é uma tarefa para poucos e que é muito complexa? Propomos que assista ao vídeo “Por que todos deveriam aprender a programar?”. Clique aqui. Nesse tipo de banco de dados, também existem pontos positivos e negativos, que serão destacados a seguir. • Pontos positivos: melhora o desempenho, pois as camadas de aplicação não conflitam com o banco de dados, tendo mais segurança. • Pontos negativos: além da configuração ser mais complexa que com um únicoservidor, as características específicas de cada servidor, como largura da banda e distância geográfica, podem eventualmente comprometer o desempenho. Figura 7 – Exemplificação de configuração de um banco de dados em um servidor específico Fonte: Sena (2017b, p. 13). Alguns softwares são capazes de atuar como aceleradores HTTP, melhorando o desempenho da máquina. Um acelerador HTTP, ou proxy HTTP reverso com cache pode ser usado para reduzir o tempo que ele leva para servir conteúdo para um usuário por meio de uma variedade de técnicas. Ambiente para Desenvolvimento Web https://www.youtube.com/watch?v=mHW1Hsqlp6A 24 Figura 8 – Exemplificação ilustrativa para o modelo de acelerador HTTP Fonte: Sena (2017b, p. 14). A principal técnica empregada ao usar um acelerador HTTP é fazer cache de respostas do servidor web ou do servidor de aplicação em memória. Assim, requisições futuras ao mesmo conteúdo podem ser servidas rapidamente, com menos interações desnecessárias com servidores web e de aplicação. Padrões de arquitetura web Aqui iremos apresentar uma classificação dos clientes como leves e pesados, mas não se trata de peso corporal! Vejamos do que se trata: • Cliente leve: possui demanda simples e a lógica é executada no servidor. • Cliente pesado: a comunicação com o servidor é feita por HTTP, pois o cliente pesado tem demandas que precisam ser executadas na própria máquina. A execução pode ser rodada com o HTML dinâmico, Applets Java ou controles ActiveX. Agora que esses conceitos estão esclarecidos, vamos às características dos padrões, como cliente leve da web, que possui as seguintes características: • É muito útil para aplicativos com base na internet, para os quais se pode garantir apenas a configuração mínima no cliente. Toda a lógica do negócio é executada no servidor durante o processamento das solicitações de página do navegador cliente. • É indicado para aplicativos da web com base na internet, em que o cliente não tem controle sobre a configuração. • Muito usado para os aplicativos de comércio eletrônico. Ambiente para Desenvolvimento Web 25 Já o cliente pesado da web possui as características a seguir: • É mais adequado a aplicativos da web que requeiram uma interface do usuário sofisticada e/ou que possam executar uma parte da lógica do negócio no cliente. • As duas motivações mais fortes para a utilização do cliente pesado da web são: capacidade aprimorada da interface do usuário e execução pelo cliente da lógica do negócio. Exemplo: Para entender melhor, considere um ambiente fora da internet no qual uma empresa de software médico tenha desenvolvido um aplicativo de intranet com base na web para gerenciar registros de pacientes e faturamento. IMPORTANTE: Muitas diferenças entre os padrões cliente leve e cliente pesado da web estão no papel que o navegador desempenha na execução da lógica de negócio do sistema. A interface do usuário com base na web usa intensamente scripts do cliente para executar validações de dados e ajudar o usuário a navegar no site. Além dos scripts, o aplicativo utiliza vários controles ActiveX para gerenciar conteúdos XML usados como o esquema principal de codificação de informações. É importante considerar que também são aspectos a serem avaliados, tendo como visão o lado da usabilidade em um projeto voltado para web, a clareza na arquitetura da informação, facilidade de navegação, relevância do conteúdo, ou seja, que não tenha complexidade. Além de entender que os web services, no português serviços web, são soluções para a integração de sistemas e comunicação entre aplicações heterogêneas. São constituídas por três componentes de serviço de armazenagem nos web services chamados de UDDI (Universal Description, Discovery and Integration) – Descrição, Descoberta e Integração Universal. Ambiente para Desenvolvimento Web 26 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que a arquitetura, como bem sabemos, é a arte e técnica de organizar espaços e criar ambientes para abrigar os diversos tipos de atividades humanas; e nos ambientes para desenvolvimento web, devemos estar atentos a questões que envolvam a organização desses espaços. Ao decidir qual arquitetura de servidor usar para o seu ambiente, há muitos fatores a serem considerados, como desempenho, escalabilidade, disponibilidade, confiabilidade, custo e facilidade de gerenciamento. Para isso, é importante o aprofundamento das configurações comuns dos servidores, conhecendo seus prós e contras. Ainda, os tipos de configurações podem ser usados em várias combinações em função da demanda do projeto que está sendo desenvolvido. Ambiente para Desenvolvimento Web 27 HTTP Server OBJETIVO: Ao término deste capítulo, você será capaz de identificar as características principais do protocolo HTTP, entendendo como utilizá-lo para acessar e manipular servidores on-line. Isso será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Referente a hardware, um servidor web é um computador cuja finalidade é armazenar arquivos que compõem os sites (por exemplo, documentos HTML, imagens, folhas de estilo e arquivos JavaScript) e os entregar para o dispositivo do usuário final, estar na maioria do tempo conectado à internet e poder ser acessado pelo seu nome de domínio (DNS). Arquivos de hospedagem Um servidor web inicialmente precisa receber os arquivos para armazenamento que se referem ao site ou sistema web a ser hospedado, incluindo todos os documentos HTML e seus arquivos relacionados, imagens, folhas de estilo CSS, arquivos JavaScript, fontes e vídeos, enfim, todos os arquivos inseridos previamente em seu disco. Tecnicamente, você pode hospedar todos os arquivos em seu próprio computador, mas é muito mais conveniente armazená-los em um servidor web dedicado, no qual quatro vantagens se destacam: • Estar sempre funcional e ativo. • Estar sempre conectado à internet. • Ter o mesmo endereço IP o tempo todo (nem todos os ISPs fornecem um endereço IP fixo para conexões domésticas). • Ser mantido por um provedor de terceiros. Por todas essas razões, encontrar um bom provedor de hospedagem é parte fundamental na construção de seu website. Ambiente para Desenvolvimento Web 28 Figura 9 – Um bom provedor de hospedagem é parte fundamental na construção de website Fonte: Freepik É importante pesquisar vários serviços de empresas, e escolher aquele que melhor se adapta às suas necessidades e seu orçamento é o que deve ser feito. É preciso considerar que, em um nível mais básico, o navegador fará requisição utilizando o protocolo HTTP sempre que necessitar de um arquivo hospedado em um servidor web. Quando a requisição alcança o servidor web correto (hardware), o servidor HTTP (software) envia o documento requerido, também via HTTP. Figura 10 – Representação do servidor HTTP Fonte: Sena (2017c, p. 13). Para publicar um website, é necessário ou um servidor web estático ou um dinâmico. O servidor web estático consiste em um computador (hardware) com um servidor HTTP (software). É chamado “estático” porque o servidor envia seus arquivos ao navegador tal como foram criados e armazenados (hospedados). Ambiente para Desenvolvimento Web 29 Figura 11 – Para publicar um website, é necessário ou um servidor web estático ou um dinâmico Fonte: Freepik Um servidor web dinâmico consiste em um servidor web estático com software adicional, mais comumente um servidor de aplicações (application server) e um banco de dados (database server). É chamado “dinâmico” porque o servidor de aplicações atualiza os arquivos hospedados antes de enviá-los ao navegador pormeio do servidor HTTP. Por exemplo, para produzir as páginas finalizadas que você vê em seu navegador, o servidor de aplicações pode completar um modelo de página HTML (HTML template) com o conteúdo obtido de um banco de dados. Sites como o MDN ou a Wikipédia possuem milhares de páginas web, mas elas não são realmente documentos HTML. Elas se constituem em poucos templates HTML e uma gigantesca base de dados. Essa configuração agiliza e facilita o gerenciamento e a entrega do conteúdo. Para buscar uma página da web, como já dissemos, seu navegador envia uma solicitação ao servidor web, que prossegue para procurar o arquivo solicitado em seu próprio espaço de armazenamento. Ao encontrar o arquivo, o servidor o lê, processa-o conforme necessário e o envia para o navegador. Ambiente para Desenvolvimento Web 30 Figura 12 – Existem configurações que agilizam e facilitam o gerenciamento e a entrega do conteúdo Fonte: Freepik Comunicação via HTTP A comunicação via HTTP se dá mediante protocolos. Um protocolo é um conjunto de regras para a comunicação entre dois dispositivos, por exemplo, computadores, notebook, smartphones, tablets, etc. HTTP é um protocolo textual, sem estado. Vamos ver a diferença? • Protocolo textual: todos os comandos são de texto simples e legível por humanos. • Protocolo sem estado: nem o servidor nem o cliente se lembram das comunicações anteriores. Por exemplo, confiando apenas no HTTP, um servidor não pode lembrar de uma senha que você digitou ou de qual etapa você está em uma transação, sendo necessário um servidor de aplicações para tarefas como essa. Ambiente para Desenvolvimento Web 31 Figura 13 – A comunicação via HTTP se dá mediante protocolos. Um protocolo é um conjunto de regras para a comunicação entre dois dispositivos Fonte: Freepik O HTTP fornece regras claras sobre como o cliente e o servidor se comunicam. Entre essas regras temos que: • Somente clientes podem fazer pedidos HTTP, e somente para servidores. Os servidores só podem responder à solicitação HTTP de um cliente. • Ao pedirem um arquivo via HTTP, os clientes devem fornecer a URL desse arquivo. • O servidor web deve atender a todas as solicitações HTTP, pelo menos com uma mensagem de erro. Ambiente para Desenvolvimento Web 32 Figura 14 – O HTTP fornece regras claras sobre como o cliente e os servidores se comunicam Fonte: Freepik Em um servidor web, o servidor HTTP é o responsável pelo processamento e pelo o atendimento dos pedidos recebidos. • Ao receber um pedido, um servidor HTTP primeiramente verifica se a URL solicitada corresponde a um arquivo existente. • Se assim o for, o servidor web envia o conteúdo do arquivo de volta para o navegador; caso contrário, um servidor de aplicativos criará o arquivo necessário. • Se nenhum dos processos for possível, o servidor da web retornará uma mensagem de erro ao navegador, mais comumente “404 Not Found”. Ambiente para Desenvolvimento Web 33 Figura 15 – Se nenhum dos processos for possível, o servidor da web retornará uma mensagem de erro ao navegador Fonte: Freepik Um termo bastante importante relacionados ao ambiente web, é do cloud computing, ou seja, é o conceito de computação em nuvem. Refere-se ao compartilhamento da capacidade de armazenamento e processamento de computadores e servidores interligados por meio da internet, seguindo o princípio da computação em grade. Além do termo cloud computing, é importante salientar que o protocolo HTTPS é a versão segura do HTTP. O “S” no final do protocolo significa “Secure Sockets Layer”. Ele constrói uma conexão segura entre dois soquetes. Efetivamente, trata-se de uma nova camada colocada entre a camada de aplicação e a camada de transporte. Na prática, ela deve ser formada, inicialmente, pelo seu protocolo, conforme o exemplo https://www.nomedosite.com. br, não esquecendo de inserir o sinal de dois pontos: após o “S”. Ambiente para Desenvolvimento Web 34 RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que se pode dizer então, referente ao software, que um servidor web inclui diversos componentes que controlam como os usuários acessam os arquivos hospedados (armazenados para disponibilização). Um servidor HTTP é um software que compreende URLs (endereços web) e HTTP (o protocolo que seu navegador utiliza para visualizar páginas web. Um servidor web dinâmico consiste em um servidor web estático com software adicional: normalmente um servidor de aplicações (application server) e um de banco de dados (database server). Ambiente para Desenvolvimento Web 35 File Transfer Protocol (FTP) OBJETIVO: Ao término deste capítulo, você será capaz de entender ferramentas de FTP, SFTP e FTPS. Ferramentas essas que auxiliam na manipulação de diretórios e arquivos on-line. Isso será fundamental para o exercício de sua profissão. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Uma das ferramentas mais importantes na hora da administração de um site é o FTP, responsável pela transferência dos arquivos do computador para o site. Ferramentas de FTP Apesar de a maioria dos sistemas poder ser gerenciada e alguns arquivos mandados pelo Painel de Controle, algumas ações só podem ser feitas via FTP. DEFINIÇÃO: File Transfer Protocol – mais comumente referido como FTP, é um protocolo de rede padrão utilizado para copiar arquivos de um host (computador hospedeiro) para outro por meio de uma conexão TCP (Transmission Control Protocol). O FTP é construído sobre uma arquitetura cliente- servidor, usando controles em separado sobre as conexões de dados. É inevitável não pensar imediatamente em soluções populares como FileZilla ou LeechFTP quando a conversa é sobre bons clientes de FTP (File Transfer Protocol, ou Protocolo de Transferência de Arquivos). Esse tipo de programa é essencial para quem trabalha com desenvolvimento de sites ou hospedagem de documentos em servidores. Contudo, nem sempre você está em um computador que possui seu cliente FTP favorito instalado, com suas próprias configurações e interface com as quais você está acostumado. Pior ainda é quando você Ambiente para Desenvolvimento Web 36 não possui permissão para instalar esse tipo de software na máquina que estiver utilizando. Nesses casos, a melhor saída é usar um cliente FTP on-line; existem dezenas de opções gratuitas e com excelentes recursos. Apresentamos a seguir algumas opções para quem deseja parar de depender dos softwares instalados – confira suas características e aprenda a utilizá-los. Figura 16: FTP (File Transfer Protocol, ou Protocolo de Transferência de Arquivos) Fonte: Freepik FileZilla é um dos programas de FTP mais populares que existem, por ser um software livre. É utilizado para muitos sites que trabalham com CMS do mesmo tipo, como o WordPress e o Joomla. Outro trunfo do programa é que ele é compatível com todos os principais sistemas operacionais de computadores: Mac OS X, Linux e Windows. Claramente voltado para usuários avançados e com maiores conhecimentos técnicos, o FileZilla oferece recursos bastante interessantes, como compactação/ descompactação de arquivos, editor de HTML e PHP (com realce de sintaxes) (MILETTO; BERTAGNOLLI, 2014). Instalação de softwares famosos (como alguns CMS) e opções de personalização de visual (com várias opções de cores para a interface). Ambiente para Desenvolvimento Web 37 Figura 17 – Voltado para usuários avançados e com maiores conhecimentos técnicos, o FileZilla oferece vários recursos Fonte: Freepik Ao contrário do FileZilla, o Free FTP só roda em Windows. O programa é freeware e tem como grande vantagem a facilidade de uso da interface – ideal para usuário que nãotem muito conhecimento técnico. Já o Cyberduck é considerado robusto e nativo do Mac OS X, mas também tem sua versão para Windows, sua interface é uma das mais simples e amigáveis. E o Smart FTP é semelhante ao CuteFTP, mas tem a vantagem de ser gratuito. O Smart FTP é recomendado para usuários que querem um sistema que garanta facilidade na administração do conteúdo. O CuteFTP é um programa de FTP pago que roda em MAC OS X, Linux e Windows. Mesmo sendo pago, a sua facilidade de uso o torna um dos FTP mais populares do mercado. Figura 18 – CuteFTP é um programa de FTP pago e roda em MAC OS X, Linux e Windows Fonte: Freepik Ambiente para Desenvolvimento Web 38 Diferença entre FTP e CMS Enquanto o CMS (Content Management System) cuida do conteúdo do site, o FTP cuida dos arquivos e de algumas configurações. Em alguns sistemas (como WordPress e o Joomla), todas as imagens que vão ser postadas no site têm de ser mandadas por FTP para o servidor. Só a partir daí é que se pode fazer a postagem do material utilizando o CMS. DEFINIÇÃO: Sistema de Gerenciamento de Conteúdo (do inglês Content Management System – CMS) é um aplicativo utilizado para criar, editar, gerenciar e publicar conteúdo de forma consistente e organizada, permitindo que este seja modificado, removido e adicionado com facilidade. CMSs são frequentemente usados para armazenar, controlar e prover documentação empresarial, como notícias, artigos, manuais de operação, manuais técnicos, guias de vendas e brochuras de marketing. Figura 19 – O Joomla é um exemplo de CMS (Content Management System), Sistema de Gerenciamento de Conteúdo Fonte: Freepik Para entender melhor acerca do FTP, utilizaremos o FilleZilla como exemplo. Um dos seus principais recursos é a barra QuickConnect. Para se conectar a um servidor FTP, digite o endereço do servidor no campo host do bar QuickConnect (por exemplo, example.com – veja na figura adiante). Caso seja um tipo de servidor especial, como um servidor de SFTP, deve- se adicionar o protocolo na frente do endereço. No caso de um servidor SFTP, comece o endereço com ‘sftp: //’ (por exemplo, sftp://example. com). Digite a porta do servidor no campo “porta”. A porta padrão é 21 para Ambiente para Desenvolvimento Web 39 FTP, e 22 para SFTP. Também é preciso inserir o nome de usuário ou senha nos campos correspondentes. Caso contrário, o padrão anonymous logon será usado, mas dificilmente o servidor irá aceitar esse usuário. Depois de efetuados esses procedimentos, clique em QuickConnect ou pressione Enter para se conectar ao servidor. Figura 20 – Configuração de host, usuário e senha no FileZilla Fonte: Elaborado pelos autores com base no software FilleZilla. Observe que a conexão rápida é para ligações rápidas – por isso não há maneira de se editar a lista de ligações rápidas que armazena as últimas 10 entradas; para armazenar nomes de servidores FTP, você deve usar o Gerenciador de Site, em vez disso. O QuickConnect é recomendado para testar as informações de login antes de se executar uma entrada de administrador do site. Uma vez conectado, você pode escolher Arquivo -> “Copiar conexão atual para Site Manager...” para executar uma entrada permanente. Geralmente, é melhor usar o QuickConnect para verificar suas informações de login antes de fazer uma entrada permanente. Também é possível usar a função FileZilla Administrador do Site para especificar parâmetros específicos do local e se conectar ao site FTP alvejado. O administrador do site permite armazenar entradas e configurar mais parâmetros do que a conexão rápida permite. Em caso especial, como em servidores em LAN, caso o servidor que você deseje ligar esteja em sua casa ou em uma rede local (LAN), não há um endereço (nome de domínio) a ser informado. Na LAN, você simplesmente deve usar o endereço IP interno do PC servidor. Na maioria dos casos, o nome da rede é o nome do próprio computador. Caso o servidor esteja no mesmo PC com o Filezilla, você ainda pode usar localhost ou “127.0.0.1” como nome do host. Se você se conectar do lado de fora de sua LAN, nada disso se aplica. Você tem de usar o IP externo (WAN) em seu lugar. Ambiente para Desenvolvimento Web 40 Depois de uma tentativa de conexão bem-sucedida, uma lista de arquivos e diretórios aparece ao lado direito da janela principal. O nome do diretório remoto atual é listado no campo de edição na parte superior. Abaixo disso você vai ver a árvore de diretórios remotos. Para alterar o diretório remoto atual, siga os seguintes procedimentos: • Digite um nome de diretório no campo de edição e pressione Enter. • Clique em um diretório na árvore de diretórios. • Clique duas vezes em um diretório na lista do conteúdo do diretório atual. Você vai notar um diretório chamado “..” listado em praticamente todos os diretórios. Selecionando esse diretório, você poderá ir até o diretório-pai do diretório atual. E, pontos de interrogação (“?”) aparecem em diretórios que ainda não foram acessados, indicando que o cliente FileZilla não pode dizer se há subdiretórios dentro desses diretórios. Se você acessar o diretório no qual aparece um ponto de interrogação, esse símbolo vai desaparecer. Figura 21 – Lista de arquivos e diretórios ao lado direito da janela principal no FileZilla Fonte: Elaborado pelos autores com base no software FilleZilla. Ao lado direito do FileZilla no local site, também conhecido como Navegando em sua Máquina, funciona quase como navegar no servidor. O diretório local atual e a árvore de diretórios local são exibidos à esquerda da janela principal, por padrão (“default”). Se você tem uma estrutura Ambiente para Desenvolvimento Web 41 de diretórios idêntica à do servidor, você pode habilitar a navegação sincronizada. Isso significa que qualquer navegação de diretório em uma máquina será duplicada na outra. Para habilitar a navegação sincronizada, deve-se criar uma entrada no Administrador do Site, e na guia Avançado, verifique se o diretório local padrão e o diretório remoto padrão têm a mesma estrutura. Em seguida, marque a opção “usar a navegação sincronizada”, salve as suas configurações e se conecte. Em relação ao diretório Comparação, para ver rapidamente as diferenças entre os arquivos na máquina local e o servidor, escolha Exibir Diretório Comparação, e escolha “comparar o tamanho do arquivo” ou “comparar o tempo de modificação”. Você também pode ocultar arquivos idênticos, observando essa opção. Em seguida, selecione “Ativar”. Você vai ver agora as diferenças com códigos de cores entre as cópias do mesmo arquivo em diferentes máquinas. Você pode fazer o upload ou download de um arquivo clicando duas vezes sobre ele. Ele será adicionado à fila de transferência e a transferência é iniciada automaticamente. Para transferir diretórios e/ ou vários arquivos, selecione-o e clique com o botão direito na seleção, então você pode clicar em upload/download no menu pop-up. Figura 22 – Exemplo de executar o upload de arquivo no FileZilla Fonte: Elaborado pelos autores com base no software FilleZilla. Esses procedimentos são apenas exemplificações de utilização do software FilleZilla. Conforme as atualizações, alguns procedimentos podem ser alterados, mas os conceitos continuam os mesmos. Ambiente para Desenvolvimento Web 42 SAIBA MAIS: É possível usar FTP on-line sem precisar instalar programas. Clique aqui. Salienta-se que a área de Ambiente para o Desenvolvimento Web é bastante dinâmica. Dessa maneira, é importante estar sempre atualizada, com novas ferramentas e recursos disponíveis no mercado e também saber que o protocolo FTP não é importante apenas para a transferência de dados pela porta 20, mas também na de comandos, utilizando a porta 21. O protocolo TCP é fundamental para garantir a transferência de dados entre switches, routers, etc. Os dados são divididosem pacotes que, sequencialmente, são enviados entre nós de rede até chegarem ao seu destino. RESUMINDO: E então? Gostou do que lhe mostramos? Aprendeu mesmo tudinho? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capítulo, vamos resumir tudo o que vimos. Você deve ter aprendido que o dia a dia de administradores, webmasters, programadores, entre outros, é geralmente bastante movimentado e repleto de ferramentas. Utilitários diversos, editores, clientes SSH, conversores e outros... de vez em quando, pode acontecer de você não estar em seu local de trabalho convencional. Você pode, de repente, estar em algum cliente, sem seu notebook e sem suas ferramentas à mão. A necessidade de algum trabalho rápido e simples pode surgir a qualquer momento, como bem sabemos, dessa forma, é importante conhecer ferramentas on- line. Uma das ferramentas mais importantes na hora da administração de um site é o FTP (File Transfer Protocol), protocolo de rede padrão utilizado para copiar arquivos de um host, o responsável pela transferência dos arquivos do computador para o site. Ambiente para Desenvolvimento Web https://www.tecmundo.com.br/como-fazer/36333-como-usar-ftp-online-sem-precisar-instalar-programas.htm 43 REFERÊNCIAS DUCKETT, J. HTML e CSS: projete e construa websites. Rio de Janeiro: Alta Books, 2016. LAWSON, B.; SHARP, R. Introdução ao HTML 5. Rio de Janeiro: Alta Books, 2012. MILETTO, E. M.; BERTAGNOLLI, S., C. Desenvolvimento de Software II: Introdução ao Desenvolvimento Web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. SENA, H. Ambiente para Desenvolvimento Web: Arquitetura Cliente-Servidor. Recife: Uninassau, 2017a. SENA, H. Ambiente para Desenvolvimento Web: Arquitetura Web. Recife: Uninassau, 2017b. SENA, H. Ambiente para Desenvolvimento Web: HTTP Server. Recife: Uninassau, 2017c. Ambiente para Desenvolvimento Web Arquitetura cliente-servidor Definições básicas Padrões de arquitetura cliente-servidor Arquitetura Web Definições básicas Padrões de arquitetura web HTTP Server Arquivos de hospedagem Comunicação via HTTP File Transfer Protocol (FTP) Ferramentas de FTP Diferença entre FTP e CMS
Compartilhar