JayCesar / generation-bootcamp

[💻 Bootcamp ] Um programa de estudos de 3 meses da Generation Brasil, sendo cada qual destinado a diferentes tecnologias.
4 stars 0 forks source link

Introdução ao Desenvolvimento web usando Java e Spring boot #20

Closed JayCesar closed 1 year ago

JayCesar commented 1 year ago

SOFEA

SOFEA (Service Oriented Front-end Architecture - Arquitetura de Serviço Orientado ao Front-end) é uma arquitetura para Desenvolvimento WEB em Ambientes Cloud, onde o Front-end é independente do Back-end e inclusive pode estar hospedado em um Servidor diferente do Back-end. Nesta arquitetura, a lógica de apresentação (código do cliente) é desacoplada da lógica de negócios (Banco de dados e o Back-end), e a interface do usuário obterá dados dos serviços em a forma de JSON \ XML com a ajuda de solicitações HTTP Requests e Respostas HTTP Response.

image

O que é Single Page Application (SPA)?

São aplicações cuja funcionalidade está concentrada em uma única página. Ao invés de recarregar toda a página ou redirecionar o usuário para uma página nova, apenas o conteúdo principal é atualizado de forma assíncrona, mantendo toda a estrutura da página estática. Imagine um dashboard, em que os menus lateral e superior são os mesmos para todas as telas da aplicação. Ao clicar em uma opção como “Cadastro de produtos”, o usuário não precisaria recarregar toda a página para ver que no fim apenas o conteúdo central mudou. Para evitar isso, mantemos os menus fixos e alteramos apenas a parte do meio, em que estarão os formulários, tabelas, etc.

Benefícios da Arquitetura SOFEA

API REST

Primeiro vamos compreender os 2 conceitos:

API é um acrônimo que provém do inglês Application Programming Interface (Interface de Programação de Aplicações), que se trata de um conjunto de rotinas e padrões estabelecidos e documentados por uma determinada aplicação, para que outras aplicações consigam utilizar rodas as suas funcionalidades sem precisar conhecer os detalhes da implementação do software.

Desta forma, entendemos que as API’s permitem uma interoperabilidade entre aplicações. Em outras palavras, a comunicação entre aplicações e entre os usuários de uma API pode receber requisições de diversas aplicações distintas (Web, Mobile, Desktop e até mesmo de uma outra API)

image

REST é um acrônimo que provém do inglês Representational State Transfer (Transferência de Estado Representacional), que criado no ano 2000 por Roy Fielding, em sua tese de doutorado, na qual ele descreve um design de arquitetura de software construído para servir aplicações em rede.

REST é uma arquitetura utilizada para integrar o Back-end com o Front-end, através do protocolo HTTP. Uma API Rest se comunica com o Front-end através do envio de Requests (Requisições) e do e recebimento de Responses (Respostas).

Estas Requests e Responses, são compostas por Objetos no formato JSON, em conjunto com os Métodos GET, POST, PUT e DELETE conforme vimos no modulo de Ciência da Computação.

image

Formato JSON

JSON (JavaScript Object Notation) é um modelo para armazenamento e transmissão de informações no formato texto. Apesar de muito simples, tem sido bastante utilizado por aplicações Web devido a sua capacidade de estruturar informações de uma forma bem mais compacta do que o modelo XML, tornando mais rápido a interpretação dessas informações. Isto explica o fato de o JSON ter sido adotado por empresas como Google e Yahoo, cujas aplicações precisam transmitir grandes volumes de dados.

image

Arquitetura MVC

MVC é acrônimo de Model, View e Controller, é um padrão de arquitetura de software responsável por contribuir na otimização da velocidade entre as requisições feitas pelo comando dos usuários.

A arquitetura MVC é dividida em três componentes essenciais: image

Model (Modelo): Sua responsabilidade é gerenciar e controlar a forma como os dados se comportam por meio das funções, lógica e regras de negócios estabelecidas.

Controller (Controladora): A camada de controle é responsável por intermediar as requisições enviadas pelo View com as respostas fornecidas pelo Model, processando os dados que o usuário informou e repassando para outras camadas.

View (Visão): Essa camada é responsável por apresentar as informações de forma visual ao usuário. Em seu desenvolvimento devem ser aplicados apenas recursos ligados a aparência como mensagens, botões ou telas.

Um dúvida muito recorrente na programação é se no processo de desenvolvimento pode ter apenas esses 3 componentes ou se é possível acrescentar mais alguns. A resposta é sim para a possibilidade de inserir uma camada extra. Essa sequência de códigos pode ser alterada conforme a necessidade do projeto.

Arquitetura básica de uma WEB API Spring

1. Controller A primeira parte do sistema que interage com a Requisição HTTP enviada pelo cliente é a Camada de Controle (Controller). Ela define os Endpoints da API, ou seja, os pontos finais das rotas. Nesta Requisição também deve ser informado o Método (GET, POST, PUT ou DELETE). O principal objetivo da Camada Controller é oferecer serviços ao cliente, ou seja, fornecer a resposta, status, entre outros. O controlador faz uso dos serviços fornecidos pela camada de serviço (Service) para atender o cliente.

2. Service A camada de Serviço (Service) destina-se a implementar as lógicas de negócios. O principal objetivo da camada de serviço é oferecer serviços à camada controladora. Todos os tipos de cálculos com os dados, por exemplo, são executados nesta camada, portanto, a camada de serviço requer dados. Portanto, elas contam com os serviços oferecidos pela camada Repository/DAO.

3. Repository/DAO DAO significa Data Access Object (Objeto de acesso aos dados) e o principal objetivo da camada Repository é acessar (consultar) dados de forma eficiente no Banco de dados e fornecer serviços para a camada de serviço.

Existem interfaces no Spring Boot, que nos fornecem todas as operações do CRUD (CREATE, RETRIEVE, UPDATE, DELETE). Assim, a camada Repositório pode implementar qualquer um deles. A Camada Repository é como se fosse uma "Loja de Consultas", que oferece diversos tipos de consultas para a sua aplicação interagir com o Banco de dados.

4. Modelk A camada Model (Modelo) representa os objetos do mundo real. Assim, esses objetos são referidos como modelos. JPA (Java Persistence API) fornece as referências ou detalhes sobre ORM (Object Relation Mapping - Mapeamento Objeto Relacional), o que significa que a classe Java pode ser relacionada à tabela do banco de dados. Existem muitas implementações de JPA ORM, a mais utilizada é o Hibernate. Este assunto será visto em detalhes, mais adiante.


Algumas imagens sobre:

image

image