Baixe o app para aproveitar ainda mais
Prévia do material em texto
U N O P A R P R O G R A M A Ç Ã O P A R A W E B II Programação para web II Anderson Emídio Macedo Gonçalves Adriano Sepe Paulo Henrique Terra Programação para web II Dados Internacionais de Catalogação na Publicação (CIP) Gonçalves, Anderson Emídio Macedo ISBN 978-85-522-0318-6 1. Sites da web – projetos – programas de computador. I. Sepe, Adriano. II. Terra, Paulo Henrique. III. Título. CDD 006.786 Gonçalves, Adriano Sepe, Paulo Henrique Terra. – Londrina: Editora e Distribuidora Educacional S.A., 2018 112p. G635p Programação para web II/ Anderson Emídio Macedo © 2018 por Editora e Distribuidora Educacional S.A. Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Editora e Distribuidora Educacional S.A. Presidente Rodrigo Galindo Vice-Presidente Acadêmico de Graduação Mário Ghio Júnior Conselho Acadêmico Alberto S. Santana Ana Lucia Jankovic Barduchi Camila Cardoso Rotella Danielly Nunes Andrade Noé Grasiele Aparecida Lourenço Isabel Cristina Chagas Barbin Lidiane Cristina Vivaldini Olo Thatiane Cristina dos Santos de Carvalho Ribeiro Revisora Técnica Adriane Aparecida Loper Editorial Adilson Braga Fontes André Augusto de Andrade Ramos Leticia Bento Pieroni Lidiane Cristina Vivaldini Olo 2018 Editora e Distribuidora Educacional S.A. Avenida Paris, 675 – Parque Residencial João Piza CEP: 86041-100 — Londrina — PR e-mail: editora.educacional@kroton.com.br Homepage: http://www.kroton.com.br/ Unidade 1 | Framework: conceitos básicos no desenvolvimento web Seção 1 - Introdução ao framework 1.1 | Framework 1.2 | Introdução ao ASP.NET Core 1.2.1 | Arquitetura do .NET 1.3 | Tecnologia .NET Core 1.4 | Startup da Aplicação ASP.NET Core 1.4.1 | Método de Configuração 1.4.2 | Método de Configuração de Serviços 1.5 | Analisando o Start da Aplicação 1.6 | Middleware 1.7 | Arquivos Estáticos 1.8 | Servidor Seção 2 - Compreendendo a programação 2.1 | Definindo Razor 2.2 | Blocos de Código 2.3 | Estruturas de Controle 2.4 | Diretivas 2.5 | Páginas Razor Sumário 7 10 10 10 11 12 13 13 13 13 15 15 16 18 18 19 19 20 24 Unidade 2 | Tecnologias para programação web Seção 1 - Padrão HTML5 1.1 | Novos elementos em HTML5 1.2 | Diferentes navegadores Seção 2 - Estilo CSS 2.1 | Introdução ao CSS 2.2 | Introdução ao Java Script Seção 3 - Linguagem PHP 3.1 | HTM5 e linguagem lado servidor 3.2 | Programando em PHP 3.3 | Funcionalidades do PHP 31 34 35 37 42 42 45 49 49 49 51 Unidade 3 | O padrão MVC Seção 1 - Padrões de projeto 1.1 | Design patterns 1.2 | Estrutura de um padrão 1.3 | Tipos de padrões de projeto Seção 2 - O padrão MVC 2.1 | Padrões de arquitetura 2.2 | Padrões de arquitetura comuns 2.3 | O padrão MVC 2.4 | Frameworks 57 60 60 61 61 65 65 66 67 71 Unidade 4 | Tecnologia de acesso ao banco de dados Seção 1 - API JDBC 1.1 | Funcionamento da API 81 84 84 1.2 | Conexão java Seção 2 - Interface PreparedStatement 2.1 | Introdução a interface PreparedStatement’ 2.2 | Funcionamento da interface Seção 3 - API mysqli_connect 3.1 | Introdução ao componente mysqli_connect 3.2 | Objeto mysqli query 85 93 93 94 98 98 99 Apresentação Caro aluno, em busca de aprofundar o conhecimento na arquitetura web, vamos caminhar por uma trilha que perpassa por vários assuntos dentro desse universo rico em informação e de muitos recursos tecnológicos para cumprimento do seu propósito. Propósito este de desenvolver sistemas inteligentes e de fácil operacionalização, proporcionando aos clientes uma melhor produtividade, aumento na performance e uma resposta rápida no auxílio a tomada de decisões. Estamos falando de tecnologias de ponta no mercado para o desenvolvimento web. Da mesma maneira estamos vivendo uma época de revolução digital e nossos sistemas de informação estão evoluindo para acompanhar a tecnologia da atualidade. Este livro está dividido em quatro unidades de estudo. A Unidade 1 aborda os Frameworks, componentes importantes que, se utilizados com inteligência, auxiliam no processo de desenvolvimento de software. A Unidade 2 trabalha com várias tecnologias, como HTML5, CSS, Java Script, PHP e MySQL. São apresentadas de forma didática por meio de exemplos práticos que ajudarão você a entender melhor como funciona o processo de construção de um sistema web. A Unidade 3 apresenta a arquitetura MVC - Model View Controller, mostrando suas principais características, seu funcionamento e alguns exemplos de trabalho com esse padrão de desenvolvimento. A unidade 4 vem para fechar o conteúdo do livro de Programação para Web II, apresentando formas de conexão com o banco de dados. Abordamos, nesta unidade, algumas APIs de conexão com banco de dados e apresentamos alguns exemplos de utilização destas APIs. Acreditamos que a leitura e o estudo deste livro trarão novos conhecimentos que serão necessários para ajudar na composição de todos os materiais dos cursos da área de tecnologia da informação. Tenha uma boa leitura, um ótimo estudo e todo sucesso que você puder alcançar. Prof. Anderson Macedo Unidade 1 Framework: conceitos básicos no desenvolvimento web Este material tem o objetivo de ajudar o leitor a entender como o conceito de modularização por meio de framework pode garantir maior produtividade e facilidades no processo de desenvolvimento. Isso é necessário principalmente para aplicações web, pois envolve várias tecnologias com HTML, CSS, JavaScript, linguagem de programação, acesso a dados e técnicas de segurança. Pensar na construção de uma aplicação partindo exclusivamente do mecanismo de comunicação HTTP, com certeza seria algo desafiador. Esse cenário bastante desafiador era a realidade para muitos desenvolvedores no tempo em que o padrão Common Gateway Interface (CGI) imperava. Vamos, ainda, abordar alguns conceitos existentes na tecnologia ASP.NET Core. Objetivos de aprendizagem Nesta seção compreenderemos os conceitos de framework, e uma aplicação para desenvolvimento web através da conceptualização da tecnologia ASP.NET Core. Seção 1 | Introdução ao framework Nesta seção visualizaremos os mecanismos programáveis existentes na tecnologia ASP.NET Core e, principalmente, teremos a oportunidade de compreender como a integração entre linguagem de programação e linguagem de marcação não é algo simples, mas existem facilitadores para isso. Seção 2 | Compreendendo a programação Adriano Sepe Introdução à unidade Vamos estudar, nesta unidade, conceitos de framework e como a programação pode ser facilitada a partir desse tipo de modularização. Além dessa abordagem conceitual, vamos entender como a tecnologia ASP.NET Core, desenvolvida pela Microsoft, apresenta-se para o mercado de desenvolvimento de aplicações web. Abordaremos os conceitos relacionados à tecnologia e também sobre a forma de programarmos uma aplicação. Nos aspectos relacionados à tecnologia, compreenderemos elementos básicos, como origem e ambiente de execução, também abordaremos conceitos de inicialização, arquivos estáticos e outros. Para entendermos como a programação de conteúdo dinâmico ocorre, abordaremos a linguagem de marcação chamada Razor, que permite, dentre outras coisas, mesclar conteúdos estáticos, como HTML, CSS e JavaScript com a linguagem de programação. Abordaremos conceitos relacionados à construção de páginas Razor, promovendo a demonstração da tecnologia como um todo. Não abordaremos o padrão arquitetural MVC nesta unidade, muito natural à tecnologia tratada aqui, pois será devidamente apresentado na Unidade 4, tendo em vista a importância e a aderência que o tema tem para o desenvolvimento Web. Vamos apontar vários conteúdos correlacionados,aproveitem! U1 - Framework: conceitos básicos no desenvolvimento web10 Seção 1 Introdução ao framework Introdução à seção Nesta seção, apreenderemos conceitos de framework e suas aplicações. Também observaremos como a tecnologia ASP.NET Core se apresenta, por meio de conceitos básicos dessa tecnologia. 1.1 Framework Entendemos como framework, um padrão arquitetural que fornece um modelo de desenvolvimento, também conhecido como template. Esse modelo de desenvolvimento deve necessariamente possibilitar a extensão, sendo assim, entendemos que um framework deve fornecer um template que seja extensível para aplicações dentro de um domínio. Existem vários frameworks focados em resolver um problema comum ao desenvolvimento, que é a manipulação de um banco de dados relacional através de uma aplicação que se utiliza do paradigma orientado a objetos. Neste caso, temos paradigmas que divergem conceitualmente, no qual, para o banco de dados, os dados são mapeados por meio de tabelas e relacionamentos; já para a orientação a objetos, temos classes e associações. Para diminuir a impedância entre essas duas tecnologias existem frameworks que disponibilizam um modelo de desenvolvimento, e que naturalmente são extensíveis para suportar a necessidades de cada projeto (BOOCH; JAMES; JACOBSON, 2012). Devemos compreender que, um framework é maior do que um mecanismo. De fato, podemos pensar em um framework como um tipo de microarquitetura abrangendo um conjunto de mecanismos que trabalham juntos para resolver um problema básico de um domínio comum. Na criação de um framework existe a especificação do esqueleto arquitetural, juntamente com conceitos e mecanismos para possibilitar que usuários possam adequar / estender para suas realidades, possibilitando assim o funcionamento a partir de seu próprio contexto (BOOCH; JAMES; JACOBSON; 2012). 1.2 Introdução ao ASP.NET Core A tecnologia ASP.NET Core apresenta-se com suporte à múltiplas U1 - Framework: conceitos básicos no desenvolvimento web 11 plataformas, com alta performance, código de fonte Open Source e disponível para construção de aplicações modernas, com base em tecnologias nas nuvens, aplicações conectadas na internet. Por meio dela podemos desenvolver aplicações web e serviços, aplicações para a Internet das Coisas (IoT – sigla em inglês) e infraestrutura servidora para aplicações para dispositivos móveis. Diferentemente de outras tecnologias, essa pode ser executada nos principais sistemas operacionais, como Windows, macOS e Linux. Possibilita a sua utilização tanto em ambientes nas nuvens como infraestrutura local. Uma aplicação ASP.NET Core roda no topo da tecnologia .NET Core ou .NET Framework. Vejamos algumas diferenças entre estas tecnologias (ROTH; ANDERSON; LUTTIN, 2017). 1.2.1 Arquitetura do .NET A plataforma tecnologia .NET disponibiliza três ambientes de tempo de execução, isso significa que utilizando qualquer uma das linguagens suportadas podemos construir aplicações com restrições e facilitadores distintos. Esses ambientes de execução são necessários para permitir que uma aplicação desenvolvida em .NET possa ser executada, devemos compreender que são necessariamente pré-requisitos para as aplicações desenvolvidas. A imagem a seguir apresentará esses três ambientes: .NET Core, .NET Framework e Xamarin. Fonte: <https://docs.microsoft.com/en us/dotnet/articles/standard/media/components.png>. Acesso em: 26 abr. 2017. Figura 1.1 | Componentes do .NET U1 - Framework: conceitos básicos no desenvolvimento web12 Como já esclarecido, cada ambiente disponibilizará características específicas, restrições e vantagens. Algumas características tornam esses ambientes totalmente especializados, dessa forma, a adoção de um ou de outro deve ser baseado nas características gerais da aplicação que desejamos construir (LANDER, 2016). • NET Framework: foi o primeiro ambiente de execução construído e que consolidou a tecnologia .NET, como característica principal podemos destacar a dependência do sistema operacional Windows, também que através dele podemos construir aplicações web, servidoras ou desktop. • NET Core: ambiente otimizado para ser escalável, isso significa que foi desenhado para ser eficiente em infraestruturas servidoras locais ou remotas, através da computação nas nuvens. Diferencia-se do .NET Framework principalmente por ser multiplataforma, isso implica ser suportado em vários sistemas operacionais como Windows, Linux e macOS. • Xamarin: este ambiente foi concebido por uma empresa chamada Xamarin, que possibilita a construção e otimização de aplicações para plataformas móveis como Android e Apple iOS. Durante o decorrer desse material vamos avaliar a execução da tecnologia ASP.NET Core rodando no topo do .NET Core, visto que essa combinação apresenta maior flexibilidade pois possibilita-nos a utilização de outros sistemas operacionais (LANDER, 2016). 1.3 Tecnologia .NET Core A plataforma tecnologia .NET Core, como já visto, dispões de um ambiente de execução próprio. Além disso, apresenta algumas características que devem ser enaltecidas, visto que exibe algumas abordagens vantajosas na perspectiva do desenvolvedor quando do projeto a ser desenvolvido (LANDER, 2016). • Open Source: plataforma de código aberto, com licenças de utilização MIT e Apache 2. • Suporte: coloca-se como uma tecnologia segura relativo à evolução e ao suporte, pois possui um Long Term Support (LTS) da Microsoft, e isso significa que será suportado por um longo prazo. • Multiplataforma: suportado pelos sistemas operacionais U1 - Framework: conceitos básicos no desenvolvimento web 13 Windows, Linux e macOS, com possibilidade de ser portado para outros sistemas. 1.4 Startup da Aplicação ASP.NET Core Uma aplicação ASP.NET Core inicia por meio de uma classe que, por convenção, é chamada de Startup. Como facilitador, podemos desenvolver classes de inicialização diferentes de acordo com o ambiente de execução. Para possibilitar a execução da classe Startup dentro do contexto de uma aplicação, é necessário que haja a implementação de um método de configuração, como opcional, também podemos implementar um método que servirá para configuração dos serviços. Vamos entender as diferenças entre eles, as características próprias e também suas assinaturas (SMITH, 2017). 1.4.1 Método de configuração O método de configuração servirá para especificar como uma aplicação ASP.NET responderá as requisições HTTP. Em vias gerais, o método de configuração permitirá que o desenvolvedor defina como a aplicação processará as requisições geradas pelos navegadores, habilitando ou não recursos para isso. Estes recursos são chamados de Middleware e serão discutidos logo mais. 1.4.2 Método de configuração de serviços Sendo opcional, podemos utilizá-lo para iniciar alguns pré-requisitos necessários aos serviços que serão estabelecidos por meio do método de configuração, dessa forma, devemos compreender que, mesmo sendo opcional, o método de configuração de serviços será chamado antes do método de configuração. 1.5 Analisando o Start da aplicação Considerando a criação de uma aplicação ASP.NET Core na versão 2, teremos ao menos duas classes, a primeira camada Startup, que corresponderá à classe inicialização de nossa aplicação, já a segunda, a classe Program, que corresponde ao ponto de inicialização de nossa aplicação. Não devemos confundi-las, uma configura o funcionamento de nossa aplicação, já a outra corresponde ao ponto de inicialização da nossa aplicação no contexto de execução (SMITH, 2017). Vejamos inicialmente a classe Program, que servirá, como já dito, como ponto de inicialização da nossa aplicação: U1 - Framework: conceitos básicos no desenvolvimento web14 Fonte: elaborado pelo autor. Quadro 1.1 | Ponto de entrada da aplicação ASP.NET CORE Já a classe de inicialização (Startup.cs) tem um grau de complexidade maior, visto que define mais parâmetrosde configuração. A ativação e configuração de mais serviços pode aumentar drasticamente a complexidade dela, mas de modo geral os recursos que ativaremos em nosso exemplo são aplicáveis para a maioria das aplicações, vejamos o código: Fonte: elaborado pelo autor. Quadro 1.2 | Configurações através da classe Startup U1 - Framework: conceitos básicos no desenvolvimento web 15 Devemos compreender que, por meio dessas duas classes conseguimos configurar o funcionamento do servidor web que hospedará a nossa aplicação, bem como ativar recursos que sustentarão o funcionamento da aplicação. 1.6 Middleware Para possibilitar uma maior flexibilidade na construção de uma aplicação web, a tecnologia ASP.NET Core dispõe de um conceito chamado de Middleware que, em vias gerais, possibilita que elementos computacionais sejam ativados para processar uma requisição, possibilitando, dessa forma, que cada um destes possa manipular a requisição e/ou gerar conteúdo de resposta, permitindo ainda interromper a continuidade do processamento de uma requisição (ANDERSON; SMITH, 2017). 1.7 Arquivos estáticos Todo e qualquer recurso que não necessite de processamento pelo servidor para que haja a entrega ao cliente, que na maioria dos casos será um navegador, serão chamados de arquivos estáticos. Como exemplo podemos destacar arquivos de mídia, arquivos de marcação HTML/XML ou script em JavaScript. Para possibilitar essa entrega, devemos ativar esse recurso por meio da classe de Startup, e então utilizar uma pasta chamada wwwroot para armazenamento, isso para uma configuração padrão (ROTH; ANDERSON; LUTTIN, 2017). Vejamos como ativaremos esse recurso por meio da classe Startup. cs: Fonte: elaborado pelo autor. Quadro 1.3 | Habilitando arquivos estáticos U1 - Framework: conceitos básicos no desenvolvimento web16 1.8 Servidor Dentro da arquitetura existente na web, encontramos a topologia Cliente/Servidor, na qual basicamente a figura do cliente é o navegador, e a figura do servidor será atendida por algum componente de software capaz de responder as solicitações dos clientes, isso possivelmente por meio do protocolo HTTP e suas variações. Aplicações ASP.NET Core rodam em processos de implementações de servidores HTTP, e atualmente dispomos de duas implementações capazes de hospedar e processar uma aplicação desenvolvida nessa tecnologia. Até para possibilitar que uma aplicação ASP.NET Core funcione em múltiplas plataformas, dispomos de um servidor web chamado Kestrel. Para ambientes Windows podemos utilizar algumas possibilidades, como módulo ASP.NET Core, que roda por trás do IIS, que é uma implementação do servidor web construído pela Microsoft. Destacamos a versão HttpSys e WebListener como outra implementação para sistemas operacionais Windows. O que devemos entender é que cada uma dessas implementações disponibiliza mais ou menos recursos, também existem diferenças sobre o melhor cenário, em quesitos de performance, segurança ou capacidade de gerenciamento (DYKSTRA, 2017). Para saber mais Para saber mais a respeito da linguagem de programação C# e o framework .NET Core, acompanhe uma trilha de estudo com o título “Gruía de C#”, fornecido pela Microsoft. Para isso, utilize o link a seguir: <https://docs.microsoft.com/pt-br/dotnet/csharp/index>. Questão para reflexão Qual é a diferença entre framework e biblioteca? Atividades de aprendizagem 1. Para possibilitar que uma aplicação ASP.NET Core execute, precisamos que isso ocorra através de um servidor web. Para possibilitar que a tecnologia em questão pudesse ser multiplataforma, o que significa a possibilidade U1 - Framework: conceitos básicos no desenvolvimento web 17 de rodar em vários ambientes como sistemas operacionais distintos ou mecanismos de hospedagem, então houve a implementação de um servidor capaz de ser multiplataforma. Qual o nome do servidor web disponibilizado pela Microsoft para tal feito? a) IIS. b) Kestrel. c) HttpSys. d) Apache. e) WebListeners. 2. A representação de um dado na programação está diretamente relacionada à utilização de variável, então é natural que, ao projetarmos um algoritmo a quantidade e os tipos de variáveis estarão relacionados a alguma lógica. Qual é a justificativa para a declaração de uma variável e a definição do seu tipo? U1 - Framework: conceitos básicos no desenvolvimento web18 Seção 2 Compreendendo a programação Introdução à seção Nesta seção, vamos compreender como a programação de conteúdo dinâmico para web ocorre com o uso da tecnologia ASP. NET Core, para isso, veremos como mesclamos conteúdos estáticos com linguagem de programação, e como isso tudo gerará conteúdos dinâmicos que poderão ser consumidos nos navegadores. 2.1 Definindo Razor Primeiramente devemos compreender o que é a sintaxe Razor para então avançarmos nos conceitos que a norteiam. A correta interpretação sobre a sintaxe Razor pode ser definida da seguinte maneira: Razor é uma sintaxe de marcação para códigos que rodam do lado do servidor, isso para páginas web. Então, a sintaxe Razor consiste em uma marcação Razor, que possui características próprias, que permite a inclusão de código C# em arquivos de marcação contento HTML. Esses arquivos possuem a extensão “.cshtml” (MULLEN; ANDERSON, 2017). A linguagem padrão do Razor é o HTML, dessa forma, o seguinte código será interpretado inteiramente como um arquivo HTML, vejamos: Fonte: elaborado pelo autor. Quadro 1.4 | Utilizando HTML no Razor Como já falado, Razor suporta a utilização da linguagem de programação C#, permitindo, assim, a criação de conteúdos dinâmicos. Como também já mencionado, a linguagem padrão do Razor é HTML, e quando há necessidade da inclusão de código C# devemos utilizar o símbolo @ (arroba). A inclusão de C# implicará a avaliação e no processamento desse código, gerando, na maioria das vezes, código HTML. Dessa forma, devemos compreender que o Razor permite que alternemos códigos estáticos em linguagem de marcação HTML que, U1 - Framework: conceitos básicos no desenvolvimento web 19 quando processados gerarão como resultado o próprio conteúdo HTML, já quando houver código em C#, haverá um processamento e a geração de um conteúdo dinâmico (MULLEN; ANDERSON, 2017). 2.2 Blocos de código Para a inclusão de um bloco de código devemos iniciá-lo utilizando o @ e acrescentar as chaves de abertura { e de fechamento }, assim como definirmos um bloco em C#. Dentro dessa estrutura, devemos utilizar código válido em C#, não gerando conteúdo de marcação algum. Ao definirmos uma variável dentro desse bloco, ela estará visível em todo o documento Razor. Vejamos no exemplo a seguir como podemos utilizá-lo (MULLEN; ANDERSON, 2017): Fonte: elaborado pelo autor. Quadro 1.5 | Mesclando HTML e C# 2.3 Estruturas de controle Para atender aos mais complexos fluxos podemos utilizar todas as estruturas de controle disponíveis em C#, tudo isso no documento Razor. Perceba que para utilizá-las devemos apenas incluir o caractere @ (MULLEN; ANDERSON, 2017). U1 - Framework: conceitos básicos no desenvolvimento web20 Fonte: elaborado pelo autor. Quadro 1.6 | Controlando fluxo na visão Perceba que apenas a estrutura de repetição for que iniciamos com o @, isso porque sempre que houver um bloco de código em Razor entende-se que haverá código C#, sendo assim, as demais instruções em C# foram compreendidas corretamente, Dentro dessa lógica, Razor define que podemos gerar conteúdo de marcação utilizando o que chamamos de transição implícita. Veja que no bloco do primeiro if geramos um conteúdo HTML, e isso é reconhecido automaticamente. Também podemos utilizar a transição delimita explicitamente, para isso, utilizamos uma marcação com uma tag chamada text, perceba isso no segundo bloco de código. Ainda podemos utilizar a transição explicita de linha, como pode ser observado nas saídas de HTML geradas nos cases definidos dentro da estrutura de seleção switch (MULLEN;ANDERSON, 2017). O processo de transição entre linguagem de programação C# e linguagem de marcação HTML tende a ser tranquilo, visto as várias formas de flexibilização disponibilizadas pela tecnologia. 2.4 Diretivas Diretivas Razor são representadas por expressões implícitas e palavras-chave precedidas pelo símbolo @. Utilizamos a diretiva @ using para importação de recursos externos ao nosso projeto, como o código apresentado no quadro 1.5 (MULLEN; ANDERSON, 2017). Outra importante diretiva é a @model, que permite que seja U1 - Framework: conceitos básicos no desenvolvimento web 21 definido qual o tipo do modelo que será manipulado pela página Razor, vejamos o seguinte exemplo, nele encontraremos uma página que, por objetivo, deve apresentar os dados da um objeto da classe aluno. Devemos compreender que o modelo dessa página servirá para permitir que a ferramenta auxilie no processo de mesclagem entre código C#, baseado na classe modelo, e linguagem de marcação HTML. Para isso, observaremos dois arquivos, um com extensão .cs, no qual será codificado a classe Aluno e outro com extensão .cshtml, no qual codificaremos a nossa página Razor. Fonte: elaborado pelo autor. Quadro 1.7 | Definindo a classe modelo Aluno A classe Aluno, como já observado, representará o modelo do dado no qual desejamos que seja apresentado na página Razor. Vejamos agora como o uso da diretiva @model deve ser feito e, principalmente, alguns benefícios a respeito disso. Fonte: elaborado pelo autor. Quadro 1.8 | Criando visão baseada no modelo U1 - Framework: conceitos básicos no desenvolvimento web22 Perceba, inicialmente, que a classe Aluno foi informada (expressão implícita) diretamente na diretiva @model, e para esse projeto chamado DemoAspNetCore, utilizamos uma subpasta chamada Models, então se fez necessário informar o namespace para que a classe fosse reconhecida. Não estamos aqui discutindo como o objeto que será acessado através da variável de contexto @Model será gerado e passado, isso porque entraríamos na discussão do modelo de desenvolvimento, no qual veremos uma das formas, na sequência (MULLEN; ANDERSON, 2017). Existem algumas vantagens na utilização da diretiva @model, pois a partir do momento que é estabelecido o modelo de uma página Razor, então, a ferramenta (que no meu caso é o Visual Studio) passará a auxiliar na codificação, permitindo maior produtividade e também evitando erros, isso porque haverá uma checagem de todo o código, e havendo o acesso a algum membro não válido para Aluno, então, o compilador indicará. Vejamos essa consideração em evidência por meio de uma pequena adaptação ao nosso código (MULLEN; ANDERSON, 2017). Fonte: elaborado pelo autor. Quadro 1.9 | Checagem da visão pelo compilador Perceba que ao invés de acessarmos o atributo Cpf, estamos indicando o acesso ao atributo Cpfs que, conforme observação ao modelo, percebemos que não existe, veja que até mesmo a coloração ficou diferenciada. Como resultado do processo de compilação, a seguinte mensagem é apresentada: U1 - Framework: conceitos básicos no desenvolvimento web 23 Fonte: elaborado pelo autor. Quadro 1.10 | Resultado da compilação após checagem da visão Sever- ity Code Description Project File Line Suppression State Error CS1061 ‘Aluno’ does not contain a defi- nition for ‘Cpfs’ and no extension method ‘Cpfs’ accepting a first argument of type ‘Aluno’ could be found (are you missing a using directive or an assembly refer- ence?) De- moAspNet- Core C:\Us- ers\x-admin\ \demo-src\ DemoAspN- etCore\De- moAspNet- Core\Pages\ AlunoView. cshtml 17 Active Já a diretiva @functions permite que qualquer código C# seja definido, exceto instruções que, neste caso, devemos utilizar os blocos de códigos. Para melhor entendimento, considere o seguinte exemplo, ele mostrará a utilização desses dois recursos (MULLEN; ANDERSON, 2017). U1 - Framework: conceitos básicos no desenvolvimento web24 Fonte: elaborado pelo autor. Quadro 1.11 | Utilizando a diretiva @functions 2.5 Páginas Razor Utilizamos as páginas Razor para construir aplicações web em cenários focados nas páginas, algo mais simples e intuído, isso porque a tecnologia ASP.NET Core possui total suporte para o padrão arquitetural MVC. Este padrão possibilita o desenvolvimento de aplicações separando em três grupos de recursos, os modelos que representam os dados manipulados, os controles que executam ações de controle sobre o fluxo de interações geradas pelos usuários da solução e, por último, tempo, as visões, que correspondem aos recursos que representam aquilo que o usuário visualizará. Vale o destaque que esse padrão se apresenta como um ótimo modelo para desenvolvimento web, e que será devidamente abordado na Unidade 4 (ANDERSON; NOWAK, 2017). Para introduzirmos o conceito de páginas Razor, vamos avaliar o U1 - Framework: conceitos básicos no desenvolvimento web 25 seguinte conteúdo escrito, utilizando a sintaxe Razor, e que tem por objetivo a geração de um conteúdo HTML apresentando a tabulada de um número que, neste caso, é a tabuada do três, vejamos o código: Fonte: elaborado pelo autor. Quadro 1.12 | Criando uma página Razor A primeira característica de destaque é a diretiva @page, que habilita o arquivo para ser acessado através do navegador sem a necessidade U1 - Framework: conceitos básicos no desenvolvimento web26 de criação de um elemento de controle ou qualquer outro tipo de configuração. Neste exemplo utilizamos a criação da visão (HTML + Razor cshtml) e o modelo (classe TabuadaModelo), ambos dentro de um mesmo arquivo, mas a tecnologia possibilita que arquivos sejam gerados separadamente, HTML + Razor em arquivos cshtml, já as classes modelos em arquivos cs (ANDERSON; NOWAK, 2017). Para saber mais Mecanismos de segurança focados na identificação e autorização de usuários para execução de ações em uma aplicação web são fundamentais, pois este ambiente é muito hostil quando avaliamos as possibilidades de ataques hackers. Como sugestão, leia o artigo “O novo modelo de segurança do ASP.NET Core” escrito pelo autor Rafael Paschoal de Carvalho, ele vai conceitualizar uma das abordagens de segurança disponíveis no ASP.NET Core. Para acessar utilize o seguinte link: <http://netcoders.com.br/o-novo-modelo-de-seguranca-do- asp-net-core/>. Acesso em: 12 set. 2017. Questão para reflexão Existem outras formas para desenvolvermos as nossas aplicações ASP. NET Core sem utilizarmos páginas Razor? Atividades de aprendizagem 1. As páginas Razor possibilitam a construção de conteúdos dinâmicos utilizando a sintaxe Razor. Qual a função do modelo definido utilizando a diretiva @model? a) Persistir dados automaticamente na base de dados. b) Criar facilitadores para persistência de dados. c) Facilitar a construção de conteúdo dinâmico baseado no modelo. d) Possibilitar a carga automática da base de dados. e) Criar facilitadores para carregar dados. 2. A estruturação de um código traz algumas vantagens significativas, citadas e visualizadas por meio da refatoração efetuada. Assinale a alternativa incorreta relativo à modularização: a)Possibilidade de reutilização de código. U1 - Framework: conceitos básicos no desenvolvimento web 27 b) Complexidade nas técnicas utilizadas. c) Aumento de legibilidade. d) Associa-se, necessariamente, a técnicas mais simples de programação. e) Potencializa a organização do código. Fique ligado Nesta unidade estudamos: - Conceito de framework. - Introdução ao .NET Core. - Tecnologia ASP.NET Core. - Programação Web com Razor. Para concluir o estudo da unidade Caro aluno, estamos finalizando esta unidade! Por meio dela, você pôde observar como o conceito de modularização por framework é algo extremamente funcional, podemos ainda compreender como a tecnologia .NET Core flexibiliza o desenvolvimento, por ser multiplataforma, e independente do sistema operacional Windows. Abordamos algunsconceitos relevantes sobre a tecnologia ASP.NET Core, carro-chefe para desenvolvimento web, fornecido também pela Microsoft, e, então, concluímos compreendendo uma das faces do desenvolvimento web, utilizando, para isso, a sintaxe de marcação Razor. Atividades de aprendizagem da unidade 1. Para a construção de aplicações web, podemos utilizar recursos que necessitam de processamento, por exemplo, podemos citar imagens, vídeos, ou arquivos como HTML e CSS. Para isso, em ASP.NET Core, devemos ativar um recurso que permitirá que esse tipo de conteúdo seja exposto. Assinale a alternativa que corretamente define como devemos fazer isso: a) Na classe Program através da instrução app.EnableStaticFiles(). b) Na classe Startup através da instrução app.EnableStaticFiles(). c) Na classe Startup através da instrução app.UseStaticFiles(). d) Na classe GlobalConfig através da instrução app.UseStaticFiles(). e) Através do arquivo de configuração appsettings.json adicionando o conteúdo "StaticFiles": true. U1 - Framework: conceitos básicos no desenvolvimento web28 2. Qual a função do recurso chamado middleware para a tecnologia ASP. NET Core? a) Permitir que haja balanceamento de carga nos servidores automaticamente. b) Possibilitar a comunicação com bibliotecas nativas do sistema operacional hospedeiro. c) Habilitar mecanismos para conversação com bibliotecas escritas em versões anteriores à da aplicação em desenvolvimento. d) Possibilitar que componentes de inteligência processem as requisições, podendo ou não gerar a saída (resultado do processamento). e) Permitir que uma aplicação ASP.NET Core funcione em servidores web construídos para outras tecnologias. 3. As diretivas são utilizadas no Razor para vários fins, para indicar o uso de namespace, para adicionar novos blocos de código ou então tipos de dados internos a nossa página, e ainda podemos utilizar para indicar o tipo de dado referente ao modelo que será necessário para codificar a página. Assinale a alternativa que corretamente define a diretiva de modelo: a) @using. b) @Model. c) @model. d) @type. e) @import. 4. Podemos adicionar códigos diretamente em nossos arquivos Razor, para isso, podemos utilizar a diretiva de funções ou então a declaração de bloco de códigos. Assinale a alternativa que apresenta corretamente a forma com que poderíamos fazer a declaração de ambos: a) Bloco de Código: @{ } – Diretiva de Funções: @functions { } b) Bloco de Código: @code { } – Diretiva de Funções: @functions { } c) Bloco de Código: @code { } – Diretiva de Funções: @function { } d) Bloco de Código: @block { } – Diretiva de Funções: @functions { } e) Bloco de Código: @block { } – Diretiva de Funções: @function { } 5. Para configurarmos a aplicação, de forma geral, podemos utilizar a classe Startup, disponível exatamente para isso. A partir dessa classe, poderemos exercer dois tipos de configuração e, para isso, são disponibilizados dois métodos: Configure e ConfigureServices. Assinale a alternativa que define conceitualmente quando utilizaremos um e/ou outro método de configuração: a) Não há distinção, podemos optar conforme acharmos mais apropriado. b) As configurações gerais são feitas no método Configure, já o método U1 - Framework: conceitos básicos no desenvolvimento web 29 ConfigureServices será utilizado para aplicações do tipo Web Service. c) As configurações de acesso a banco serão feitas necessariamente no método Configure, já o método ConfigureServices será utilizado para aplicações do tipo Web Service. d) Configuramos os Web Services no método Configure, já o método ConfigureServices nós os ativamos. e) No método Configure especificamos como a aplicação responderá às requisições, já o método ConfigureService utilizamos para inicializar alguns pré-requisitos necessários. U1 - Framework: conceitos básicos no desenvolvimento web30 Referências ANDERSON, Rick; NOWAK, Ryan. Introduction to Razor Pages in ASP.NET Core. Microsoft, 15 ago. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/mvc/razor- pages>. Acesso em: 20 ago. 2017. ANDERSON, Rick; SMITH, Steve. ASP.NET Core Middleware Fundamentals. Microsoft, 14 ago. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/fundamentals/ middleware>. Acesso em: 20 ago. 2017. BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do usuário. Rio de Janeiro: Campus, 2012. DYKSTRA, Tom et al. Web server implementations in ASP.NET Core. Microsoft, 3 ago. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/fundamentals/ servers/?tabs=aspnetcore2x>. Acesso em: 10 ago. 2017. LANDER, Rich. Guia da plataforma .NET. Microsoft, 31 out. 2016. Disponível em: <https:// docs.microsoft.com/pt-br/dotnet/articles/standard/>. Acesso em: 2 ago. 2017. MULLEN, Taylor; ANDERSON, Rick. Razor syntax for ASP.NET Core. Microsoft, 4 jul. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor>. Acesso em: 10 ago. 2017. ROTH, Daniel; ANDERSON, Rick; LUTTIN, Shaun. Introduction to ASP.NET Core. Microsoft, 3 ago. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/>. Acesso em: 9 ago. 2017. SMITH, Steve et al. Application Startup in ASP.NET Core. Microsoft, 1 mar. 2017. Disponível em: <https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup>. Acesso em: 5 ago. 2017. Unidade 2 Tecnologias para programação web Considerando toda a complexidade existente para a plataforma web, a proposta desta unidade é a utilização de uma linguagem didática e instrutiva, buscando a simplicidade nas abordagens das seções e desenvolvendo alguns assuntos contidos na ementa da disciplina de Programação para web II. Além disso, dentro da metodologia adotada, busca-se o objetivo de inserir o aluno ao contexto de desenvolvimento de aplicações web para que ele se familiarize com as etapas e desafios deste universo. Objetivos de aprendizagem Anderson Emidio de Macedo Gonçalves Grande parte do conteúdo criado para a internet é acessada por navegadores web por meio do protocolo HTTP ou HTTPS. Serão abordadas, nesta seção, as características básicas que envolvem os padrões do HTML5, padrão utilizado no desenvolvimento web. Seção 1 | Padrão HTML5 Será abordada, nesta seção, o CSS, uma linguagem de folhas de estilos em cascata, utilizada em toda etapa de design de uma página web. Além disso, o CSS é um padrão altamente utilizado na arquitetura web e anda junto em muitos aspectos com o HTML5, pois o CSS precisa do HTML5 para que suas funcionalidades tenham efeito. Veremos os conceitos, características e os principais comandos do CSS, na Seção 2, desta unidade de ensino. Esta seção também abordará algumas técnicas do Java Script. Java Script é uma linguagem de programação para web baseada em SCRIPT que também é utilizada em conjunto com o HTML5. O JS, como é popularmente Seção 2 | Estilo CSS e Java Script conhecido, pode ser utilizado para acessar algumas áreas de uma página HTML ou para desempenhar alguns recursos específicos, importantes somente para esta tecnologia. Portanto, nesta seção, será abordada a parte conceitual do Java Script, assim como as suas principais características e formas de utilização que serão apresentadas especificamente com elementos do HTML5. A linguagem de programação orientada a objetos PHP, vem sendo bem utilizada no mercado web por características como: recursos modernos, fácil sintaxe e desempenho no tráfego das informações específicas do lado servidor. Nesta seção serão abordados alguns conceitos, principais características e alguns exemplos de páginas com funções em PHP. Seção 3 | Linguagem PHP Introdução à unidade Atualmente existem várias tecnologias e ferramentas que auxiliam o desenvolvimento web. A proposta desta unidade de ensino é abordar algumas destas tecnologias, apresentando suas características e funcionalidades, contextualizando por meio de exemplos de utilização. Serão abordadas tambémalgumas ferramentas com recursos poderosos que auxiliam o profissional de arquitetura web no cumprimento de suas atividades. Esta unidade de ensino abordará características de descrição e funcionalidades de três tecnologias para programação web, são elas: HTML5, CSS e Java Script. Além de aplicar alguns exemplos em PHP, uma linguagem de programação para web utilizada no mercado profissional de TI. U2 - Tecnologias para programação web34 Seção 1 Padrão HTML5 Introdução à seção Atualmente grande parte do conteúdo que está disponível na internet necessita de comandos HTML para ser apresentado e mostrado ao usuário final. Diversos aplicativos de utilização diária, como editores de textos, foram desenvolvidos por meio de uma linguagem de marcação. No entanto, não conseguimos visualizá-los, porque, como as linguagens de programação, o código fonte de uma página web, por exemplo, não é explícito ao usuário final. Sabemos que está por trás da interface apresentada, mas não temos acesso à sua codificação tão facilmente. Nesta seção, abordaremos algumas características e comandos que foram criados especificamente para o HTML5. Geralmente não existe dificuldade demasiada para migração de HTML para HTML5, por exemplo. Basta saber posicionar o que deseja entre uma tag de abertura e uma tag de fechamento. Essas tags são chamadas de container. Esse container, por sua vez, vai aplicar as configurações do texto, imagem, gráfico, arquivos de mídia ou qualquer conteúdo que possa ser exibido em uma página web (SANDERS, 2012). Fonte: elaborada pelo autor. Figura 2.1 | Containers em HTML5 U2 - Tecnologias para programação web 35 A Figura 2.1, ilustra alguns containers da estrutura de HTML5, CSS, Java Script e PHP. Repare que na parte superior da Figura 2.1 o nome do arquivo está com extensão .php. Se você editar este arquivo e salvar como HTML, ele funcionará com exceção do trecho que está entre as tags <?php ?>, pois esta tag é específica para comandos PHP e o arquivo tem que estar salvo nesta extensão. Enfim, existem várias particularidades entre arquivos de códigos fontes híbridos, isto é, contendo várias linguagens. 1.1 Novos elementos em HTML5 A linguagem HTML é composta por tags. Uma tag é descrita em um código fonte HTML entre caracteres especiais "<>", por exemplo: <h1> Texto inserido </h1>. Tudo que está entre as tags de início e fechamento será formatado ou executado de acordo com a regra da própria tag, no caso, h1. Ainda dentro de uma tag, temos os elementos e os atributos. Os elementos são os diferentes tipos de tags existentes, e os atributos são as características que podemos alterar para cada elemento. Fonte: Sanders (2012, p. 9). Figura 2.2 | Elementos em HTML5 U2 - Tecnologias para programação web36 O número de elementos é bem extenso. Na Figura 2.2 e 2.3 estão presentes alguns deles. Fonte: Sanders (2012, p. 10). Figura 2.3 | Elementos em HTML5 Dentre as novas tags criadas para o padrão HTML5, vale a pena destacar que elas trabalham em conjunto com as tags CSS e ou Java Script, além disso, elas têm autonomia para exercer sua funcionalidade sozinhas. Depois de conhecer um pouco das novas tags, é importante aplicar para que você aprenda a funcionalidade destas tags na prática. Sugerimos a você que comece a escrever um código em HTML e faça o teste destas tags. É importante também, como estamos falando de desenvolvimento web, que o teste seja feito em mais do que um navegador. U2 - Tecnologias para programação web 37 Questão para reflexão Analise a utilização das tags a seguir: <center> <spacer <font> Estas e outras tags são consideradas tags inválidas para o HTML5. Elas foram substituídas por outras estruturas. Por exemplo, a tag font pode ser utilizada de outra maneira com um comando de CSS. Podemos concluir que novas versões de linguagens e aplicativos contêm, além de comandos e funcionalidades novas, correções de alguns bugs pontuais. 1.2 Diferentes navegadores Uma grande dificuldade de quem desenvolve para web é fazer com que o seu website se comporte da mesma maneira na maioria dos navegadores existentes no mercado. É um desafio nada fácil, pois foram criados muitos navegadores desde o surgimento da internet. Enquanto os desenvolvedores estão apenas preocupados em fazer o seu sistema funcionar nos navegadores de sua preferência, acabam esquecendo que os usuários comuns podem utilizar outros navegadores para acessar o seu website. Isso também pode ser um problema. Outra condição na atualidade é o fato de existirem vários dispositivos de acesso à web, como smartphones, tablets além de computadores comuns, isto afeta diretamente a responsividade. A responsividade é um recurso que pode ser implementado, fazendo as adequações de interfaces automaticamente, conforme o dispositivo que está sendo utilizado para visualização de uma página web. Como foi mencionado, existem vários navegadores à disposição do público em geral para acesso à web. A Microsoft, por exemplo, criou o Internet Explorer (IE), A Apple, o Safari, o Google, o Chrome e assim por diante. Vamos apresentar, nesta seção, alguns navegadores existentes no mercado e algumas de suas características. Vamos começar falando um pouco sobre o Internet Explorer. U2 - Tecnologias para programação web38 Fonte: elaborada pelo autor. Figura 2.4 | Navegador Internet Explorer (IE) Por questões apenas de padronização todos os navegadores aqui apresentados estarão com o Google carregado: <http://www.google. com.br>. O Internet Explorer é o navegador padrão da Microsoft. Atualmente, a versão mais recente é a versão EDGE, apresentada na Figura 2.5. Fonte: elaborada pelo autor. Figura 2.5 | Navegador Internet Explorer (versão EDGE) U2 - Tecnologias para programação web 39 O navegador FireFox, da Mozilla, exibido na Figura 2.6, veio do antigo e famoso Netscape e foi lançado em meados da década de 1990. O FireFox também tem suporte ao HTML5. Fonte: elaborada pelo autor. Figura 2.6 | Navegador FireFox Mozilla Na Figura 2.7 é exibida o famoso Google Chrome, um dos navegadores mais populares da atualidade. Fonte: elaborada pelo autor. Figura 2.7 | Navegador Google Chrome U2 - Tecnologias para programação web40 O google ficou mundialmente famoso por meio de vários de seus recursos. Aplicativos como tradutores, buscas e mapas, deixaram este navegador muito atraente para os seus usuários. O Chrome, a exemplo dos outros navegadores, também possui suporte ao HTML5. Outros navegadores existentes como Opera, Safari, Iron entre outros, também possui suporte às novas tags e recursos do HTML5, isto significa que se você está utilizando HTML5 em suas páginas, pode ficar tranquilo, pois existe suporte por quase todos os navegadores disponíveis no mercado (SANDERS, 2012). Para saber mais Algumas das principais funcionalidades dos navegadores web estão presentes em quase todos os existentes, porém, existe algumas particularidades: acesse este link: <http://g1.globo.com/tecnologia/ noticia/2011/06/saiba-mais-sobre-os-principais-navegadores-de- internet.html>, e veja um comparativo sobre os principais navegadores existentes na web. Vale a pena. Atividades de aprendizagem 1. Uma grande parte do conteúdo disponível e criado para a internet está em HTML, porém, existem outras tecnologias que associam recursos e complementam as páginas da web. De acordo com estas informações, a linguagem HTML é considerada uma linguagem de que tipo? Assinale a alternativa correta: a) Linguagem de marcação de hipertexto. b) Linguagem de programação orientada a objetos. c) Linguagem de programação estruturada. d) Linguagem de script de comandos. e) Pseudolinguagem utilizada em arquivos HTML. 2. A linguagem HTML é composta por tags. Uma tag é descrita em um código fonte HTML entre caracteres especiais "<>", por exemplo: <h1> Texto inserido </h1>. Tudo que está entre as tags de início e fechamento será formatado ou executado de acordo com a regra daprópria tag, no caso, h1. Ainda, dentro de uma tag, temos os elementos e os atributos. Os elementos são os diferentes tipos de tags que temos e os atributos são as características que podemos alterar para cada elemento. U2 - Tecnologias para programação web 41 Paralelamente a isto existem novas tags, ou novos elementos que foram criados especificamente para o HTML5. Analise as alternativas e assinale a opção correta que contenha apenas elementos específicos do HTML5. a) <article> <aside> <audio> <canvas>. b) <html> <embed> <figure> <footer>. c) <article> <aside> <mark> <h1>. d) <footer><hgroup><keygen><table>. e) <sql><article><keygen><canvas>. U2 - Tecnologias para programação web42 Seção 2 Estilo CSS Introdução à seção O CSS, que significa Cascading Style Sheets, ou folhas de estilo em cascata, em português, é uma especificação que define como os elementos de uma página web serão apresentados. No decorrer desta seção serão apresentados alguns comandos e exemplos desta tecnologia de design da arquitetura web. 2.1 Introdução ao CSS O CSS trabalha em conjunto com o HTML, pois dentro do próprio HTML podemos inserir comandos em estilo CSS. Procurando dar uma visão prática, vamos para algumas características de funcionamento do CSS. Em primeiro lugar é preciso dizer ao documento HTML que ele precisa aceitar comandos em CSS. Este processo é realizado por meio da tag: <link rel="stylesheet">. Dentro do código fonte HTML é simples fazer esta referência, e ela pode ser feita de duas maneiras diferentes. Uma é fazer referência ao código CC3 dentro do próprio arquivo e a outra maneira é fazer referência a um arquivo externo. O comportamento em relação à execução dos comandos será o mesmo, mas a organização dos comandos será feita de forma diferente. Enfim, são possibilidades de trabalho com os comandos do CSS. U2 - Tecnologias para programação web 43 Fonte: elaborada pelo autor. Figura 2.8 | Código CSS em arquivo externo A Figura 2.8, nos mostra, na linha 6, o link para outro arquivo com o nome de "estilo.css", onde existem as configurações de design de todo o documento index.html exibido na figura. Observe a seguir o conteúdo do arquivo "estilo.css". Fonte: elaborada pelo autor. Figura 2.9 | Código do arquivo "estilo.css" U2 - Tecnologias para programação web44 A Figura 2.9 consta parte da configuração de CSS existente que será responsável pela formatação do conteúdo da página index.html no browser. Vamos então apresentar está página no navegador Chrome. Fonte: elaborada pelo autor. Figura 2.10 | Página index.html exibida no Chrome Incrível, não é mesmo!? O código CSS presente no arquivo "estilo. css" formatou em forma de menu suspenso alguns países mais visitados do mundo todo. O link existente no nome de cada país foi feito com a tag "href", mas a cor, posicionamento, fonte, tamanho da fonte etc. foi tudo configurado com comandos CSS. Questão para reflexão Analise as duas questões a seguir, refletindo como resolvê-las. Pela experiência em programação web que você tem e com o conteúdo apresentado nesta unidade, até o momento, podemos afirmar que o CSS veio para ficar e é uma das tecnologias mais presente na atualidade, quando o assunto é interface gráfica para web. A partir desta colocação, reflita como fazer melhor a organização dos comandos CSS dentro do seu projeto web. Analise também as vantagens obtidas por optar por trabalhar com uma ferramenta de apoio para a construção do seu CSS, por exemplo, o editor SUBLIME. Sabemos que quando trabalhamos com projetos WEB, também precisamos manter nossos códigos e scripts devidamente organizados. U2 - Tecnologias para programação web 45 2.2 Introdução ao Java Script O Java Script, popularmente conhecido como JS, é uma linguagem de script que também, a exemplo do CSS, pode e deve ser utilizada em conjunto com o HTML5. Vamos apresentar algumas considerações e aplicações desta linguagem utilizada no desenvolvimento de um projeto web. Apesar de ser outro tipo de linguagem, a forma de inseri-la dentro de um arquivo HTML é similar ao CSS. Temos que referenciar o arquivo utilizado com um link e também podemos construir comandos em JS dentro do próprio arquivo HTML ou em um arquivo fora dele. Baseado em nossa questão para reflexão do item 2.1, podemos concluir que a segunda maneira é a mais adequada, por questões de organização do código. Fonte: elaborada pelo autor. Figura 2.11 | Código Java Script dentro do arquivo HTML A Figura 2.11, nos mostra, na linha 5, a tag <script> </script> para utilização de comandos Java Script dentro do arquivo html. Após a linha 20, existe a continuação deste arquivo HTML com a tag <body> </body>, que nos mostra como o conteúdo será exibido. Basicamente este código JS valida a idade de uma pessoa fornecida em um campo input type de entrada de dados. A partir dessa idade, a U2 - Tecnologias para programação web46 função verificarIdade(), como pode ser observada a partir da linha 7 na Figura 2.11, abrirá a página do Google se a idade fornecida for acima de 17, caso contrário uma mensagem "Acesso proibido para menores de 18 anos." é apresentada no browser. Vamos às práticas através das imagens. Fonte: elaborada pelo autor. Figura 2.12 | Exibição da página index.html A Figura 2.11 mostra a tela inicial da validação. O teste começa após o usuário clicar no botão "OK". Neste momento, o nosso JS entra em ação disparando uma mensagem na tela: "Qual a sua idade?", como pode ser observado na Figura 2.12. Fonte: elaborada pelo autor. Figura 2.13 | Mensagem do Java Script Aplicando uma estrutura condicional composta, o algoritmo implementado pode tomar dois caminhos. O primeiro caso, a idade seja menor que 18. Fonte: elaborada pelo autor. Figura 2.14 | Mensagem para idade menor que 18 anos U2 - Tecnologias para programação web 47 O segundo caminho é a idade ser pelo menos 18 anos. Neste caso, como já relatado, será aberta uma nova página com o endereço do Google resultando na imagem da Figura 2.15. Fonte: elaborada pelo autor. Figura 2.15 | Página exibida para maiores de idade Como podemos constatar, é relativamente simples programar em Java Script dentro de páginas HTML, basta desenvolver a lógica e utilizar os comandos JS para deixar sua página mais profissional (SANDERS, 2012). Para saber mais As tecnologias CSS e Java Script estão presentes no mercado profissional de desenvolvimento web e prontas para serem exploradas por vocês. Se você quer conhecer mais um pouco dos recursos destas linguagens e saber como aplicá-las, não perca tempo! Todas estas informações você encontra no livro Smashing HTML5: técnicas para a nova geração da web (2012, p. 109-233), do autor Bill Sanders. Atividades de aprendizagem 1. A propriedade position do CSS3 refere-se ao posicionamento usado para um determinado elemento HTML. Quais valores essa propriedade permite? U2 - Tecnologias para programação web48 Assinale a alternativa correta: a) public, private, default ou static. b) top, bottom, left, right ou center. c) bottom, left, right, wrap ou center. d) static, relative, absolute, fixed. e) public, protected, private, fixed. 2. Uma folha de estilo, essa seria a tradução para a sigla CSS, externa é ideal, pensando no reaproveitamento de código, sendo possível mudar a aparência de um site inteiro alterando apenas um arquivo. Com relação às folhas de estilo externas, considere: I- < link rel="stylesheet" type="text/css" href="estilo.css"> II- < style type="text/css"> @import url("estilo.css"); III- < @import page="text/css" src="estilo.css"> IV- <@include type="text/css" href="estilo.css"> Considere que o arquivo CSS está no mesmo diretório da página HTML. Para fazer referência correta a um arquivo CSS externo, no interior do cabeçalho da página HTML pode-se utilizar o que é apresentado na(s) afirmativa(s): a) I e II. b) I, II e III. c) III e IV. d) I e III. e) I e IV. U2 - Tecnologias para programaçãoweb 49 Seção 3 Linguagem PHP Introdução à seção A linguagem PHP atua no lado do servidor para traduzir as informações armazenadas para quem está acessando uma página HTML5, por exemplo. Dizemos que a página está no lado cliente. Vamos estudar algumas características desta linguagem, saber um pouco mais sobre como ela funciona no lado servidor e, finalmente, ver alguns exemplos de codificações em PHP. Vamos ao nosso estudo! 3.1 HTM5 e linguagem lado servidor O trabalho de um servidor web é um pouco diferente, um servidor PHP, por exemplo, pode processar informações de várias origens e depois enviar para um navegador HTML. Ele pode, por exemplo, interagir com bancos de dados, recurso que não seria possível utilizando somente códigos HTML ou HTML5. Essa interação é responsável pelo dinamismo de grande parte do conteúdo web que acessamos hoje. Isto quer dizer que fatalmente estamos consultando, inserindo, alterando e deletando dados de um servidor a partir de páginas HTML. Isto só é possível por meio de um servidor web. Entre outras palavras, o trabalho da linguagem de programação PHP é, além de possibilitar comandos e funções que dão vida às nossas páginas web, ser parte do processo de transmissão de informações por meio da internet. Outro servidor web que atua no mercado é o Apache. Temos outros servidores também, mas o foco agora é abordar um pouco da linguagem PHP. 3.2 Programando em PHP Um detalhe muito importante é a extensão do arquivo PHP. Para que um código na linguagem PHP venha funcionar, obrigatoriamente o arquivo tem que estar salvo com a extensão .php. Caso contrário o código não irá executar. U2 - Tecnologias para programação web50 Fonte: elaborada pelo autor. Figura 2.16 | Exemplo PHP parte 1 Na Figura 2.16, é apresentado um código em PHP simples. Este código cria algumas variáveis e testa se o nome da variável "$professor" é igual a "Anderson Macedo". A condição retorna o resultado lógico verdadeiro, pois está sendo atribuído este valor de forma fixa no código. Então, o nome do professor e a abreviatura da disciplina são exibidos na tela. A linguagem PHP é uma linguagem fracamente tipada. Esta afirmação significa que as variáveis criadas em PHP não precisam de tipos definidos e que durante a execução do programa podem armazenar conteúdos de diferentes tipos de dados. A sintaxe desta linguagem é bem simples. Isto também é um fator que atrai o número de desenvolvedores simpatizantes ao PHP. Também é uma linguagem que consegue se conectar com vários bancos de dados disponíveis no mercado, por exemplo, o MySQL, banco de dados que, por sinal, foi muito aceito no desenvolvimento de projetos web. U2 - Tecnologias para programação web 51 Fonte: elaborada pelo autor. Figura 2.17 | Exemplo PHP parte 2 A Figura 2.17 exibe a página produzida pelo código da Figura 2.16. Como o nome do professor é o mesmo que utilizado no comando condicional, ele foi exibido na página. Questão para reflexão Analise as duas questões a seguir refletindo como resolvê-las. A linguagem PHP é a mais adequada atualmente para desenvolvimento web, de acordo com o cenário de tecnologia da atualidade? Como trabalhar com a responsividade de uma página web? Existem frameworks para auxílio desta tarefa? O apelo visual para conteúdos web está presente na internet. É preciso considerar este requisito no desenvolvimento de um projeto web. 3.3 Funcionalidades do PHP Já abordamos, nesta unidade, que PHP é utilizado do lado do servidor para realizar funções dinâmicas, como coletar dados de formulários, gerar páginas com informações fornecidas por uma base de dados etc., mas ele também possui outras funcionalidades, tais como: • Escrever aplicações desktop: certamente o PHP não é considerado a melhor linguagem para desenvolver aplicações desktops, porém, para tal finalidade pode ser utilizado o PHP- GTK, que é uma extensão do PHP para desenvolvimento em U2 - Tecnologias para programação web52 multiplataformas. • Utilização em grande parte dos sistemas operacionais: o PHP também pode ser utilizado na maioria dos sistemas operacionais, como Windows, Unix, RISC OS etc. Também é suportado por vários servidores web do mercado. O Apache por exemplo suporta o PHP sem problemas. • Outra funcionalidade é o suporte de vários SGBD da atualidade, por exemplo: MySQL por meio de uma conexão ODBC. Para concluir, o PHP tem uma biblioteca de comandos que estão disponíveis para utilização em todo o processo de desenvolvimento web. Para saber mais O PHP é uma linguagem para ser trabalhada do lado do servidor, assim como o Java Script é uma linguagem para ser utilizada do lado do cliente. A validação de um CPF é um bom exemplo para utilização de um JS, pois a página web não vai precisar fazer nova requisição ao servidor para fazer esta validação, já que o JS valida no lado do cliente. Atividades de aprendizagem 1. De acordo com o código PHP a seguir: Ao ser executado por um servidor web, esse código apresentará um número. Pegue o número apresentado e multiplique-o por 2. Assinale a alternativa que contenha o resultado desta multiplicação. U2 - Tecnologias para programação web 53 a) 14. b) 15. d) 5. d) 7. e) 12. 2. A declaração de variáveis em PHP também está de acordo com as boas práticas existentes para nomenclatura de variáveis de outras linguagens. Os nomes que identificam as variáveis no PHP devem ser sempre iniciados pelo sinal de dólar "$", seguido por: Assinale a alternativa correta: a) um hífen. b) um arroba. c) qualquer dígito hexadecimal. d) uma letra ou sinal de sublinhado. e) qualquer caractere existente. Fique ligado Resumo dos itens estudados nesta unidade: • Padrão HTML5. • Estilo CSS e Java Script. • Linguagem PHP. Para concluir o estudo da unidade O processo de desenvolvimento de uma página web, ou um ecommerce completo se torna muito complexo considerando alguns aspectos que vimos nesta unidade de ensino, como tecnologias utilizadas, diferentes navegadores presentes no mercado, responsividade entre outros. Assim como no processo de engenharia de requisitos, para a criação de conteúdos web também deve-se levar em consideração a visão dos profissionais envolvidos no projeto, garantindo, assim, um alto percentual de acerto na satisfação do cliente ou usuário. U2 - Tecnologias para programação web54 Atividades de aprendizagem da unidade 1. O servidor web é responsável por interpretar os comandos presentes em uma página web e realizar o seu processamento. Assinale a alternativa que contenha um servidor web existente. a) Delphi. b) JSTL. c) NetBeans. d) Netscape. e) Apache. 2. No desenvolvimento web, assim como no desenvolvimento em outras arquiteturas, existem alguns padrões de boas práticas de programação, tais como nomenclatura de variáveis, um código limpo e profissional, padrões de design etc. Assinale a alternativa correta para o órgão no qual pessoas trabalham em tempo integral em busca de melhorias. a) W3G. b) JSF. c) IIF. d) W3F. e) W3C. 3. Assinale a linguagem que foi projetada para separar o conteúdo escrito, tal como HTML, de conteúdos como: layout, cores, fontes, alinhamentos, margens etc.? Assinale a alternativa que contenha o nome dessa linguagem. a) Ajax. b) CSS. c) Ruby. d) JavaScript. e) PHP. 4. Acompanhe o exemplo da construção de uma página web a seguir: Um profissional estava desenvolvendo uma página web utilizando HTML e CSS em uma técnica conhecida como tableless. Ele criou o layout da página utilizando contêineres com bordas discretas para agrupar elementos de acordo com um conjunto de características. Quando adicionou elementos nos contêineres, percebeu que estes elementos ficavam grudados nas laterais da página. Para definir, então, uma margem interna de mesma medida, em todos os U2 - Tecnologias para programação web 55 lados dos contêineres, utilizou um atributo CSS. Assinale a alternativa que contenha este atributo. a) Padding. b) Align. c) Margin.d) Stretching. e) Default-margin. 5. Veja o código a seguir: lados dos contêineres, utilizou um atributo CSS. Assinale a alternativa que contenha este atributo. a) Padding. b) Align. c) Margin. d) Stretching. e) Default-margin. U2 - Tecnologias para programação web56 Referências SANDERS, Bill. Smashing HTML5. São Paulo: Bookman, 2012. BASHAM, Bryan; SIERRA, Kathy; BATES, Bert. Use a cabeça!: Servlets & JSP. 2. ed. Rio de Janeiro: Alta Books, 2008. Unidade 3 O padrão MVC Nesta unidade estudaremos o padrão de projeto MVC, exploraremos os conceitos relacionados a padrões de projetos e frameworks utilizados na implementação de aplicações web e que a cada dia se consolidam mais nas práticas de desenvolvimento sendo largamente utilizados nas principais tecnologias para este ambiente. Objetivos de aprendizagem Como resolver problemas relacionados à implementação de soluções web? Com certeza teremos uma série de desafios que deverão ser enfrentados e que teremos que solucionar, mas graças ao exponencial crescimento de tecnologias, linguagens, arquiteturas e componentes em aplicação nos projetos de desenvolvimento web temos uma forma interessante de propor soluções, os padrões de projeto vêm em resposta a uma série de situações já enfrentadas por outras pessoas, e que, com soluções criativas, acabaram criando padrões largamente divulgados e utilizados como soluções para estes desafios. Seção 1 | Padrões de projeto Um dos principais padrões utilizados no desenvolvimento de aplicações web será o foco do nosso estudo nesta seção, vamos entender o objetivo geral desse padrão e a função de cada uma de suas camadas, incluindo comentários sobre frameworks que implementam esse padrão. Seção 2 | O padrão MVC Paulo Henrique Terra Introdução à unidade Vários aspectos relacionados à implementação de uma aplicação web favorecem a utilização de padrões de projetos já empregados no desenvolvimento de software, entre eles podemos citar a proposta de solução para organização de código e solução arquitetural lógica para separar em camadas as regras de negócio disponíveis em classes, métodos e/ou funções das interfaces que formarão o front-end responsável pela interação com o usuário final. Podemos citar ainda fatores relacionados à qualidade do projeto e do produto final de software, como a manutenibilidade proporcionada pela independência funcional dos módulos criados separadamente, cada um encapsulando sua respectiva responsabilidade, evitando acoplamentos desnecessários entre componentes proporcionando uma alta coesão desses componentes que, mais tarde, podem sofrer manutenção. A facilidade em encontrar soluções baseadas em padrões de projeto como o MVC, disponível e com grande qualidade nos principais motores de busca na interbet. e a vasta literatura contendo referências renomadas no assunto, gera outro fator motivacional para aplicação destas soluções. Pense que você não precisará “reinventar a roda” para organizar a estrutura lógica de sua aplicação, incluindo a criação do código de seu projeto web, há também grande oferta de mão de obra com o conhecimento em padrões comuns de projeto que facilitam a integração de desenvolvedores em uma equipe de desenvolvimento para esse tipo de projeto, até mesmo o fato da necessidade de capacitação de desenvolvedores utilizando padrões de projeto é um fator relevante a ser considerado devido à curva rápida de aprendizagem desses conceitos. Portanto, conhecer os princípios que norteiam os padrões básicos é de essencial importância para desenvolvedores de software, estes princípios darão base sólida para a tomada de decisão e utilização de frameworks que “concretizam” e podem ser aplicados para facilitar o emprego destes conceitos na criação de soluções de software. Sendo assim, nas seções desta unidade vamos explorar padrões de projeto, frameworks e, principalmente, o padrão MVC. Vamos construir a base do conhecimento destes conceitos para conseguirmos ganhar mais produtividade na construção de nossas aplicações web. Boa leitura! U3 - O padrão MVC60 Seção 1 Padrões de projeto Introdução à seção A compreensão acerca de soluções pré-estabelecidas permite uma implementação de software com mais reutilização de códigos e componentes. Usualmente implementamos aplicações web utilizando linguagens de programação orientadas a objetos ou baseadas nos princípios deste paradigma, assim, uma das propostas deste paradigma é o reúso, para potencializar uma programação mais eficiente. Vamos abordar dois temas importantes para este propósito, o primeiro relacionado a padrões de projeto reforçará a ideia do uso de soluções comuns a um conjunto de situações, o segundo terá foco na concretização destas soluções comuns no formato de frameworks. Iniciaremos os nossos estudos e potencializaremos também os nossos conhecimentos. 1.1 Design patterns Design patterns ou simplesmente padrões projeto são soluções aplicadas a um grupo comum de problemas que podem ser adaptadas a uma série de situações enfrentadas no processo de implementação de aplicações web. Um padrão de projeto descreve um problema comum que ocorre regularmente no desenvolvimento de software e descreve então uma solução geral para esse problema que pode ser utilizada em muitos contextos diferentes. Em geral, para padrões de projeto de software, a solução é uma descrição de um pequeno conjunto de classes e suas interações (BARNES, 2004, p. 325). Conforme definido por Barnes (2004), os padrões de projeto podem nos ajudar de duas maneiras, ao desenvolver uma aplicação de software. Inicialmente documentam boas soluções para problemas, de modo que essas soluções possam ser reutilizadas em problemas U3 - O padrão MVC 61 semelhantes, assim, a reutilização não está no nível de código- fonte criado em uma determinada linguagem, mas sim, no nível das estruturas das classes. Segundo, padrões de projeto são nomeados e ajudam os designers de software em conversas sobre seus designs, isso permite economizar detalhes de uma explicação, assim, a linguagem padrão introduzida por padrões de projeto estabelece outro nível de abstração, um que permite lidar com a complexidade até em sistemas mais intrincados. Podemos citar como benefícios na utilização de padrões de projetos o fato de fornecerem soluções testadas e aprovadas, tornando as aplicações mais fáceis de entender e manter, além do fato de manter o desenvolvimento de módulos coesos e permitir, ainda, que a comunicação entre os membros do time de desenvolvimento de projeto torne-se mais eficiente. Apesar de todos os benefícios vale ressaltar que os padrões de projetos não são “receitas de bolo” prontas a serem utilizadas. Elas devem ser avaliadas e adaptadas à realidade do projeto em desenvolvimento, caso esses padrões sejam mal implementados, eles podem tornar-se um dificultador no entendimento do projeto, causando até mesmo a criação de código desnecessário, assim, é preciso bom senso, será necessário implementar a solução e validar o seu funcionamento, uma vez que ela se aplique, ela ainda poderá ser otimizada, ajustando-se para tratar as deficiências do projeto, para isso, vale o conhecimento geral sobre o projeto e o seu funcionamento. 1.2 Estrutura de um padrão Os padrões são descritos com informações mínimas relativas à estrutura de classes e devem incluir uma descrição do problema resolvido por este padrão, além das forças contra ou a favor da utilização deste, o template básico deve possuir no mínimo: Nome: deve descrever o padrão de maneira conveniente. Descrição: em relação ao problema que o padrão pretende solucionar (normalmente dividida em seções como intensão, motivação, aplicabilidade). Consequências: do uso do padrão, que deve prever resultados e compensações. 1.3 Tipos de padrões de projeto Conforme definido por Gamma et al. (2000), os padrões de projeto foram classificados em três tipos: padrões de criação,padrões estruturais e padrões comportamentais. U3 - O padrão MVC62 Os padrões de criação têm como objetivo abstrair o processo de criação de objetos, ou seja, a sua instanciação. Assim, eles ajudam um sistema a tornar-se independente, a despeito de como seus objetos são criados, compostos e representados. Basicamente, utiliza-se a herança para variar a classe que é instanciada. Por exemplo, o padrão Singleton garante que haverá somente uma única instância para uma determinada classe e esta instância é acessível de forma global e uniforme. Outros padrões de criação são: Abstract Factory, Builder, Factory Method e Prototype. Os padrões estruturais dão ênfase em como as classes e objetos são compostos, ou seja, preocupa-se com sua estrutura, o objetivo destes padrões é reduzir a preocupação do desenvolvedor em como realizar o relacionamento entre unidades, para isso, propõe soluções de design de sistemas, o padrão Adapter, por exemplo, permite que dois objetos se comuniquem, mesmo com interfaces incompatíveis, assim, uma nova classe é criada para adaptar uma interface a outra. Por fim, os padrões comportamentais atuam sobre como responsabilidades são atribuídas às entidades, o que afeta diretamente o comportamento destas, o objetivo é facilitar a comunicação entre os objetos por meio da distribuição de responsabilidades, garantindo a coesão. Um exemplo de padrão comportamental é o padrão State que permite um objeto alterar o seu comportamento quando seu estado interno muda, outros padrões comportamentais são: Strategy, Template Method e Visitor. Percebemos que existem padrões com objetivos distintos, portanto, será necessário, como já comentamos anteriormente, uma compreensão ampla sobre cada um desses padrões para que de fato se tornem soluções e não mais conceitos complexos que podem atrapalhar o desenvolvimento. O livro Padrões de projeto, escrito por Gamma et al., em sua versão original de 1995, é referência no estudo desses padrões. Nesta obra, encontramos os detalhes sobre cada um dos padrões comentados anteriormente, tais padrões ficaram conhecidos como padrões GoF (Gang of Four), isto se deve ao fato do livro ter sido elaborado por quatro autores que definiram os padrões. Na Figura 3.1, podemos ver uma imagem muito difundida pela internet e demonstra de maneira sintética a distribuição dos padrões de projeto, conforme o seu tipo e propósito. U3 - O padrão MVC 63 Fonte: César (2017). Figura 3.1 | Estrutura do MVC Para saber mais Leia o material indicado: Componentes, Frameworks e Design Patterns. Disponível em: <http://www.dca.fee.unicamp.br/~gudwin/ftp/ea976/ Patterns.pdf>. Acesso em: 1 nov. 2017. Questão para reflexão Então, quer dizer que existem padrões para tipos distintos de problemas e que podem ser utilizados em resposta às dificuldades enfrentadas em projeto de desenvolvimento web? Como vimos nesta seção, a resposta é sim, porém, para que os padrões não se tornem mais um problema, é necessário entender a sua estrutura, isto inclui o tipo de problema que pretende solucionar. Atividades de aprendizagem 1. O padrão de projetos GoF define 23 padrões divididos em três tipos, sendo: padrões de criação, padrões de estrutura e padrões de comportamento. Assinale a alternativa que possui somente padrões de estrutura. U3 - O padrão MVC64 a) Brigde, Decorator e Visitor. b) Brigde, Decorator e Builder. c) Decorator, Facade e Singleton. d) Decorator, Facade e Memento. e) Brigde, Decorator e Facade. 2. Cada tipo de padrão de projeto GoF possui ênfase em objetivo(s) distinto(s). Assinale a questão que melhor define o(s) objetivo(s) dos tipos de padrões de projeto de comportamento: a) O objetivo destes padrões é reduzir a preocupação do desenvolvedor em como realizar o relacionamento entre unidades, para isso, propõe soluções de projeto de sistemas. b) O objetivo destes padrões é reduzir a preocupação do desenvolvedor em como realizar o relacionamento entre unidades, para isso, propõe soluções de design de sistemas. c) O padrão dos tipos de projeto de comportamento tem como objetivo facilitar a comunicação entre objetos por meio da distribuição das responsabilidades entre os objetos. d) Padrões do tipo comportamento ajudam um sistema a tornar-se independente, a despeito de como seus objetos são criados, compostos e representados por meio da abstração do processo de criação de objetos. e) O padrão dos tipos de projeto de comportamento tem como objetivo facilitar a comunicação entre objetos por meio separação da lógica de programação da persistência de dados. U3 - O padrão MVC 65 Seção 2 O padrão MVC Introdução à seção A organização arquitetural de uma aplicação é dos desafios que devem ser superados em um projeto de desenvolvimento, a aplicação dos conceitos baseados no padrão MVC possibilitará a aplicação de soluções eficientes e que presam pela separação da lógica de negócios da camada de apresentação por meio da organização do código em camadas. Temos que levar em consideração o fato de que, ao desenvolver para web, também temos outros componentes envolvidos que foram elaborados de maneira a coexistir de modo harmônico com as camadas e suas respectivas funções estabelecidas no padrão MVC. Iniciaremos os nossos estudos relacionados a este padrão e a estes componentes que permitem a sua aplicação. 2.1 Padrões de arquitetura Você pode pensar em um padrão de arquitetura como uma descrição abstrata, estilizada, de boas práticas experimentadas e testadas em diferentes tipos de sistemas e ambientes. Assim, um padrão de arquitetura deve descrever uma organização de sistema bem-sucedida em sistemas anteriores. Deve incluir informações de quando o uso de desse padrão é adequado, e seus pontos fortes e fracos (SOMMERVILLE, 2011, p. 108). Podemos perceber que, pela definição anterior de Sommerville (2011), há uma grande semelhança entre os conceitos definidos por Gamma et al. (2000) e Barnes (2004), vistos na seção anterior desta unidade, sobre definição de padrões de projeto. Portanto, podemos concluir que padrões, em sua definição mais ampla, descreve um problema que ocorre inúmeras vezes em um determinado contexto, e descreve ainda a solução para este problema, de modo que essa solução possa ser utilizada em situações distintas, logo, sejam os padrões do tipo criacional, estrutural ou comportamental, ou ainda, U3 - O padrão MVC66 padrões arquiteturais definidos em outras áreas da engenharia de software, eles colaborarão para a solução de problemas de projetos de software. Pensando em um padrão de arquitetura, conforme Sommerville (2011), como uma descrição abstrata, estilizada, de boas práticas já utilizadas e testadas em diferentes ambientes e sistemas, então, um padrão de arquitetura deve descrever uma organização de sistemas bem-sucedida em outros sistemas, incluindo informações de quando esse padrão é adequado, seus pontos fortes e fracos, bem como é feito em um padrão de projeto. 2.2 Padrões de arquitetura comuns É comum a utilização de vários conceitos definidos por arquiteturas vastamente conhecidas em projetos de software para web, entre elas a arquitetura cliente-servidor, arquitetura de repositório, arquitetura em camadas entre outros. Há uma variedade de arquiteturas propostas como solução conceitual para uma série de situações que necessitam de organização sistêmica, seja em nível de estruturação de código até a condição de equipamentos físicos em que o sistema proposto estará hospedado. Estes padrões atuam em visões distintas, mas complementares e que devem ser consideradas na etapa de projeto técnico do processo de desenvolvimento do software, devemos considerar algumas visões fundamentais nesta etapa e que são essenciais para a evolução da etapa de desenvolvimento, conforme exposto por Kruchten (1995), o modelo de visão 4 + 1 de arquitetura de software sugere que deve haver quatro visões fundamentais de arquitetura relacionadas, conforme segue:
Compartilhar