Desenvolvimento WEB Flashcards
O que é um Web Service?
Um Web Service é um sistema de software projetado para oferecer suporte à interação máquina a máquina através de uma rede;
Possui uma interface descrita em um formato processável por máquina (especificamente WSDL –Web Service DescriptioncLanguage);
Outros sistemas interagem com o Web Service da maneira prescrita por sua descrição usando mensagens SOAP, normalmente transmitidas usando HTTP com uma serialização XML em conjunto com outros padrões relacionados à Web;
Agentes e Serviços
Um Web Service é uma noção abstrata que deve ser implementada por um agente concreto;
O agente é o software ou hardware concreto que envia e recebe mensagens, enquanto o serviço é o recurso caracterizado pelo conjunto abstrato de funcionalidades fornecidas;
Solicitantes e Provedores
O objetivo de um Web Service é fornecer algumas funcionalidades em nome de seu proprietário -uma pessoa ou organização, como uma empresa ou um indivíduo;
A entidade provedora é a pessoa ou organização que fornece um agente apropriado para implementar um serviço específico;
Uma entidade solicitante é uma pessoa ou organização que deseja fazer uso do Web Service da entidade prestadora. Ele usará um agente solicitante para trocar mensagens com o agente da entidade prestadora
Arquitetura Orientada a Serviços (SOA
É uma forma de arquitetura de sistemas distribuídos que geralmente é caracterizada pelas seguintes propriedades:
➢Visualização lógica: o serviço é uma visualização lógica e abstrata de programas, bancos de dados, processos de negócios etc., definidos em termos do que faz, geralmente executando uma operação em nível de negócios;
➢Orientação da mensagem: O serviço é formalmente definido em termos das mensagens trocadas entre o agente provedor e o agente solicitante, e não nas propriedades dos próprios agentes. A estrutura interna de um agente, incluindo recursos como linguagem de implementação, estrutura de processos e até estrutura de banco de dados, é deliberadamente abstraída na SOA. Um dos principais benefícios disso diz respeito aos chamados sistemas legados. Ao evitar qualquer conhecimento da estrutura interna de um agente, é possível incorporar qualquer componente ou aplicativo de software que possa ser “encapsulado” no código de tratamento de mensagens que permita a ele aderir à definição formal de serviço;
➢Orientação da descrição: um serviço é descrito por metadados processáveis por máquina. A descrição suporta a natureza pública da SOA: somente os detalhes expostos ao público e importantes para o uso do serviço devem ser incluídos na descrição. A semântica de um serviço deve ser documentada, direta ou indiretamente, por sua descrição;
➢Granularidade: os serviços tendem a usar um pequeno número de operações com mensagens relativamente grandes e complexas;
➢Orientação de rede: os serviços tendem a ser orientados ao uso em uma rede, embora isso não seja um requisito absoluto;
➢Neutralidade de plataforma: as mensagens são enviadas em um formato padronizado e neutro da plataforma, entregue pelas interfaces.
XML é o formato mais óbvio que atende a essa restrição
Web Services Description Language (WSDL)
É uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
Um documento WSDL descreve um serviço da web. Ele especifica a localização do serviço, e os métodos do serviço, usando estes elementos principais:
Define os tipos de dados (esquema XML) usados pelo serviço da web
Define os elementos de dados para cada operação
Descreve as operações que podem ser executadas e as mensagens envolvidas.
Define o protocolo e formato de dados para cada tipo de porta
MVC é o acrônimo de Model-View-Controller
MVC é o acrônimo de Model-View-Controller (em português: Arquitetura Modelo-Visão-Controle - MVC) é um padrão de projeto de software,[1] ou padrão de arquitetura de software formulado na década de 1970,[2] focado no reuso de código e a separação de conceitos em três camadas interconectadas, onde a apresentação dos dados e interação dos usuários (front-end) são separados dos métodos que interagem com o banco de dados (back-end). Camada de modelo ou da lógica da aplicação (Model) Modelo é a ponte entre as camadas Visão (View) e Controle (Controller), consiste na parte lógica da aplicação, que gerencia o comportamento dos dados através de regras de negócios, lógica e funções. Esta fica apenas esperando a chamada das funções, que permite o acesso para os dados serem coletados, gravados e, exibidos. Camada de apresentação ou visualização (View) Visão pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É onde os dados solicitados do Modelo (Model) são exibidos. É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. A Visão também provoca interações com o usuário, que interage com o Controle (Controller). O exemplo básico disso é um botão gerado por uma Visão, no qual um usuário clica e aciona uma ação no Controle. Camada de controle ou controlador (Controller) Controle é o componente final da tríade, faz a mediação da entrada e saída, comandando a visão e o modelo para serem alterados de forma apropriada conforme o usuário solicitou através do mouse e teclado. O foco do Controle é a ação do usuário, onde são manipulados os dados que o usuário insere ou atualiza, chamando em seguida o Modelo. O Controle (Controller) envia essas ações para o Modelo (Model) e para a janela de visualização (View) onde serão realizadas as operações necessárias.
Arquitetura de software
A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reúso do projeto dos componentes e padrões entre projetos
Arquitetura em camadas
Arquitetura multicamada
Arquitetura em camadas visa a criação de aplicativos modulares, de forma que a camada mais alta se comunica com a camada mais baixa e assim por diante, fazendo com que uma camada seja dependente apenas da camada imediatamente abaixo. Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar os serviços em uma camada inferior, mas não o oposto.
Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar os serviços em uma camada inferior, mas não o oposto.
Em Engenharia de software, a arquitetura em camadas (mais conhecida como arquitetura multicamadas) é um sistema Cliente-Servidor onde as camadas de apresentação, processamento de aplicativos e gerenciamento de dados são separados
A arquitetura em camadas pode ser definida como um processo de decomposição de sistemas complexos em camadas para facilitar a compreensão do mesmo, como também, facilitar a manutenção deste sistema, ainda afirma que, esta técnica foi emprestada da arquitetura de computadores, que utilizam camadas de chamada ao sistema operacional, drivers e afins.
Camada de apresentação
A camada de apresentação é responsável pela apresentação, interação do usuário e recebimento de dados processados pelo software bem como suas funções.
Em sistemas distribuídos, existem duas alternativas para apresentação:
Usando um navegador web, todo o conteúdo e formulário de uma aplicação web clássica são apresentados em XML, XHTML E JavaScript, entre outras linguagens criadas para a World Wide Web. Sua comunicação com camadas é geralmente feita através do HTTP.
Usando um cliente gordo, você produz sua própria interface gráfica do usuário. Usando as opções de exibição estendida da linguagem de programação ou da biblioteca gráfica para essa finalidade, como Flash ou Java Swing se comunicando com a camada de aplicativos por meio de protocolos de rede, como SOAP, Microsoft NET Remoting, entre outros.
Camada de controle
A camada de controle é responsável por comandar o fluxo da apresentação servindo como uma camada intermediária entre a camada de apresentação e a lógica.
Camada lógica de negócios
A camada lógica de negócios se refere a implementação de regras de negócio ou requisitos do sistema.
Camada de acesso a dados
A camada de dados inclui as técnicas de persistência de dados (compartilhamento de arquivos, servidores de banco de dados e etc) e a camada de acesso a dados que encapsula os mecanismos e expõe os dados. O armazenamento persistente geralmente usa banco de dados, mas outros sistemas podem usar arquivos normais.
Duto e filtro ou Pipe-And-Filter
Duto e filtro ou Pipe-And-Filter, em engenharia de software, é um estilo de arquitetura orientado a dados. É composto por uma cadeia de elementos de processamento dispostos de tal forma que a saída de cada elemento é a entrada do próximo, ou seja, os programas (chamados de filtros) processam as entradas recebidas e geram uma nova saída. Os filtros são conectados por meio de dutos que agem como buffers, armazenando a saída de um filtro enquanto ela não é lida pelo próximo filtro da sequência. Cada etapa do processamento é implementada como uma transformação, que pode ser executada sequencialmente ou em paralelo. Um exemplo clássico do padrão duto e filtro é o shell do Linux, onde existe uma coleção de pequenos programas que geralmente fazem uma única coisa e podem ser encadeados na mesma linha de comando.
Cliente-servidor
O modelo cliente-servidor (em inglês client/server model), em computação, é uma estrutura de aplicação distribuída que distribui as tarefas e cargas de trabalho entre os fornecedores de um recurso ou serviço, designados como servidores, e os requerentes dos serviços, designados como clientes.
Repositório
Cada subsistema mantém seu próprio banco de dados e são passados explicitamente para outros subsistemas. Quando grandes quantidades de dados precisam ser compartilhados, o modelo de repositório é usado para organizar os sistemas.
Inversão de controle Ioc
(Inversion of Control ou IoC, em inglês) é um princípio de design de programas de computadores onde a sequência (controle) de chamadas dos métodos é invertida em relação à programação tradicional, ou seja, ela não é determinada diretamente pelo programador. Este controle é delegado a uma infraestrutura de software muitas vezes chamada de container ou a qualquer outro componente que possa tomar controle sobre a execução. Esta é uma característica muito comum a alguns frameworks.
A plataforma JEE contém uma série de especificações e containers
JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados;
Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. Ele contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador.
JSP (Java Server Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido.
JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java.
EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações.
JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas.
JPA (Java Persistence API), é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans.
JMS (Java Message Service), é uma API para middleware orientado a mensagens. Através dela é possível realizar a comunicação de forma assíncrona entre duas ou mais aplicações.
JSF (JavaServer Faces), é uma especificação Java para a construção de interfaces de usuário baseadas em componentes para aplicações web.
J2EE define 4 camadas básicas no modelo de aplicação
Camada Cliente – Parte do software que roda no computador do usuário;
Camada Web - Parte do software que roda no servidor web, que por sua vez fica normalmente dentro do servidor de aplicações;
Camada de negócios – Parte do software que roda no servidor de aplicações;
Camada de dados – Banco de dados e sistemas externos;
O que é o Spring Framework?
O Spring é um framework java open source criado pela Pivotal para facilitar o desenvolvimento de aplicações corporativas, baseado nos padrões de projeto de inversão de controle e injeção de dependência.
O Spring framework foi criado devido os problemas que os desenvolvedores java enfrentavam ao criar uma aplicação corporativa J2EE. Um dos problemas era a necessidade de utilizar um servidor de aplicação robusto, entre muitos outros fatores.
Spring
O Spring é um framework open source para a plataforma Java criado por Rod Johnson e descrito em seu livro “Expert One-on-One: JEE Design e Development”. Trata-se de um framework não intrusivo, baseado nos padrões de projeto inversão de controle (IoC) e injeção de dependência.
Arquitetura Spring
O Spring possui uma arquitetura baseada em interfaces e POJOs (Plain Old Java Objects), oferecendo aos POJOs características como mecanismos de segurança e controle de transações. Também facilita testes unitários e surge como uma alternativa à complexidade existente no uso de EJBs. Com Spring, pode-se ter um alto desempenho da aplicação.
Esse framework oferece diversos módulos que podem ser utilizados de acordo com as necessidades do projeto, como módulos voltados para desenvolvimento Web, persistência, acesso remoto e programação orientada a aspectos.
Injeção de dependência (Dependency Injection, em inglês) é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema. Nesta solução as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (container) que é responsável por “injetar” em cada componente suas dependências declaradas. A Injeção de dependência se relaciona com o padrão Inversão de controle mas não pode ser considerada um sinônimo deste
O que é arquitetura de software?
Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade
Os arquitetos são aqueles que modelam e projetam o sistema e, os engenheiros são aqueles que controlam o processo até a conclusão.
O que é engenharia de software?
Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade
Os arquitetos são aqueles que modelam e projetam o sistema e, os engenheiros são aqueles que controlam o processo até a conclusão.
Web Service
Web Service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web Services são componentes que permitem às aplicações enviar e receber dados. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, um formato intermediário como XML, Json, CSV, etc.
Um documento XML é bem-formado se:
Possui um só elemento raiz que inclui todos os demais;• Todos os elementos devem estar devidamente aninhados;
Se presente, o que é recomendado, a instrução de processamento declaração XML deve literalmente iniciar o documento. Essa declaração pode indicar a versão de con-junto de caracteres utilizada (ex.: UTF-8);
Todos os elementos não vazios devem ter start-tag e end-tag;• Atributos não se repetem num mesmo elemento;
Todas as entidades analisadas, referenciadas direta ou indiretamente, devem ser também entidades bem-formadas.
Comentários XML, JAVASCRIPT, CSS, HTML, JAVA
XML: HTML: CSS: /* */ JAVASCRIPT: // OU /* */ JAVA: /** Javadoc */ COMENTÁRIO DE DOCUMENTAÇÃO OU // OU /* */
O que é REST?
EST, ou Representational State Transfer, é um estilo arquitetônico aplicado para fornecer padrões entre sistemas de computador na web, facilitando a comunicação entre eles. Os sistemas em conformidade com REST, muitas vezes conhecidos como sistemas RESTful, são reconhecidos pelo jeito como separam as preocupações do cliente e do servidor.
No estilo REST, a implementação do cliente e do servidor pode ser feita de forma independente, sem que cada um conheça o outro. Isso significa que o código do lado do cliente pode ser alterado a qualquer momento, sem afetar a operação do servidor, e o contrário também é válido.
Ao utilizar uma interface REST, clientes diferentes atingem os mesmos pontos finais REST, executam ações iguais e recebem as mesmas respostas. Como os sistemas REST interagem por meio de operações padrão sobre recursos, eles não dependem da implementação de interfaces.
Essas restrições ajudam as aplicações RESTful a alcançar maior nível de confiabilidade, além de possibilitar um desempenho rápido e escalável. Todos os componentes podem ser gerenciados, atualizados e reutilizados sem afetar o sistema como um todo, mesmo durante a operação
O “pai” do REST é Roy Fielding
REST
Client-server
A implementação do cliente e do servidor podem ser feitas independentemente, sem que cada um tenha conhecimento do outro;
Isso significa que o código no lado do cliente pode ser alterado a qualquer momento sem afetar a operação do servidor, e o código no lado do servidor pode ser alterado sem afetar a operação do cliente;
Desde que cada lado saiba qual formato de mensagens enviar para o outro, eles podem ser mantidos modulares e separados;• Separando as preocupações da interface do usuário das preocupações de armazena-mento de dados, melhora-se a flexibilidade da interface entre as plataformas;
A separação permite que cada componente evolua independentemente;
Usando uma interface REST, diferentes clientes atingem os mesmos pontos de extremi-dade REST, executam as mesmas ações e recebem as mesmas respostas;
Comunicação entre Cliente e ServidorNa arquitetura REST, os clientes enviam solicitações para recuperar ou modificar recursos, e os servidores enviam respostas para essas solicitações;
REST
Stateless
Os sistemas que seguem o paradigma REST são stateless, o que pode ser traduzido livremente como “sem estado”. Isso significa que o servidor não precisa saber nada sobre o estado em que o cliente se encontra e vice-versa.
REST
Uniform interface
O principal elemento que distingue o REST de outras opções com base na rede é o seu foco em uma interface uniforme entre os componentes. O princípio de generalidade, característica da engenharia de software, quando aplicado à interface de componentes, simplifica a arquitetura do sistema e torna as interações mais visíveis.
REST é definido por quatro fatores:
identificação de recursos; gerenciamento de recursos por meio de representações; mensagens auto-descritivas; hipermídia.