Codificação Back-End
Este material aborda conceitos relacionados à codificação de sistemas web server-side (Back-End), utilizando a programação orientada a objetos para atender às regras de negócio estabelecidas.
Esperamos que você desenvolva, no decorrer de seus estudos, as seguintes capacidades:
Para desenvolver tais capacidades, você deverá estudar os seguintes temas:
O estudo desses temas será necessário para que você resolva a situação-problema a seguir. Então, avance para conhecê-la.
A Troppo é uma empresa de desenvolvimento de software que utiliza os melhores recursos da área em suas aplicações. Robustez, performance e escalabilidade são alguns dos termos valorizados e utilizados para desenvolver os seus projetos.
A ClientLab é uma empresa focada na gestão de clientes e, atualmente, mantém a sua base de registro em papel e não possui nenhuma automatização ou tecnologia que facilite o processo de busca de clientes e/ou registro de suas atividades. Tendo em vista o cenário atual, cada vez mais tecnológico, a ClientLab contratou a Troppo para realizar o desenvolvimento de seu novo sistema que realizará essas atividades.
Assim, o contrato estabelece que a Troppo realizará a programação de um sistema de cadastro de clientes customizado, atendendo às seguintes características:
Você deverá se atentar às regras estabelecidas, tratando os valores não permitidos inseridos pelos usuários. Para isso, você deve resolver três desafios.
Clique nos botões a seguir para conhecê-los:
Desafio 1
Aplicar linguagem de programação para atender às regras de negócio estabelecidas.
Desafio 2
Aplicar programação orientada a objetos na construção do sistema.
Desafio 3
Utilizar linguagem de marcação para a apresentação dos recursos disponibilizados na situação-problema.
Nesta etapa, você deverá resolver o desafio 1:
Para isso, você estudará os seguintes conteúdos:
Clique no player a seguir para acessar o vídeo sobre o primeiro tópico do conteúdo: Codificação Back-End.
Fonte: Unsplash
O termo server-side é relacionado às ações que acontecem do lado do servidor. No lado do usuário, ou cliente-side, as linguagens são processadas pelo navegador.
Servidor é um computador que fornece recursos a clientes e é utilizado em tudo que envolva internet ou armazenamento de dados. Um servidor local, por exemplo, é usado para o compartilhamento de arquivo, ao passo que um servidor web armazena os documentos de sites, como HTML, CSS e JavaScript, processando requisições e devolvendo informações ao cliente.
A programação Back-End permite enviar informações personalizadas, fornecendo uma melhor experiência ao usuário. Isso ocorre porque os dados são armazenados em um banco de dados e a programação server-side dinamiza os dados retornados. Por exemplo, você pode realizar operações permitidas para o usuário e publicar posts e tweets ao acessar sites como Facebook ou Twitter.
Além da personalização de conteúdo, a programação server-side pode, também, fornecer restrição de acessos, notificações (SMS, por exemplo), entre outras funções. Antes de abordar as aplicações, vamos conhecer alguns processos e conceitos importantes.
O HTTP, ou protocolo de transferência de hipertexto, permite a troca de dados na web (cliente-servidor), como vídeos, imagens e documentos HTML.
A solicitação HTTP feita contém a URL do destinatário, assim, é definida a ação necessária e as informações adicionais que podem ser incluídas na solicitação. Os métodos são importantes justamente em razão de possuírem a identificação da ação necessária. Por exemplo, podemos obter um recurso (para visualizar a imagem de perfil de um colega no Instagram), adicionar uma nova imagem (postar), atualizar ou deletar uma imagem já cadastrada em nosso perfil.
Fonte: Pixabay
Após a solicitação ser feita, o navegador aguarda por uma resposta (response) do servidor, que identifica por meio do status (um código), existente na mensagem, se a solicitação foi ou não bem-sucedida. Essa informação é importante para identificar se a requisição HTTP foi concluída corretamente.
As respostas são categorizadas em 5 grupos:
Dependendo da codificação Back-End, os sites podem ser estáticos ou dinâmicos, alterando a comunicação entre servidor e cliente.
Um site estático retorna sempre o mesmo conteúdo. Além disso, não possui ferramentas de gerenciamento incorporadas a ele. São modelos utilizados para consultar informações sobre as empresas, como serviços e produtos, e não há a necessidade de atualizar o conteúdo da página com tanta frequência. Veja um exemplo ao lado.
Caso deva ser feita uma alteração na página, uma alteração no código-fonte (usualmente HTML, CSS e JavaScript) precisará ser realizada.
Sem reformulação no código-fonte, não ocorrerão mudanças. Quando o usuário solicita uma página, o navegador web envia a solicitação para o servidor, que recupera os documentos e os retorna, com o status, ao navegador para serem renderizados, conforme mostra o esquema abaixo.
Fonte: https://developer.mozilla.org/pt-BR/docs/Learn/Server-side/First_steps/Introduction
Em um site dinâmico, todo ou parte do conteúdo é gerado dinamicamente. A inclusão, a alteração ou a exclusão de uma informação podem ser feitas por meio de um sistema de gerenciamento de conteúdo.
Portais de notícias, redes sociais, bancos de imagens e sites com muito conteúdo, em geral, costumam ser do tipo dinâmico. Veja o exemplo da imagem .NET Blog.
Com a criação de conteúdos dinâmicos, muitas aplicações web surgiram para atender aos diversos tipos de mercado e de contextos que a web exige.
Para construir a dinâmica e as regras de negócios que os sistemas exigem, construímos aplicações Back-End, que podem ler informações dos bancos de dados e organizá-las dinamicamente. É muito provável que você entre em contato com pelo menos uma dezena delas por dia entre aplicações bancárias, blogs e redes sociais.
Ao solicitar uma informação ao servidor, um site dinâmico identifica que uma parte do conteúdo será gerado dinamicamente.
Clique nos destaques para conhecer o processo resumido.
Adaptado de: https://developer.mozilla.org/pt-BR/docs/Learn/Server-side/First_steps/Introduction
Para otimizar o desenvolvimento tanto de sites dinâmicos quanto estáticos, usamos framework.
Framework é um conjunto de bibliotecas utilizado para desenvolver aplicações com uma estrutura pré-definida, podendo simplificar o processo de desenvolvimento e de ganho de performance.
Neste conteúdo, utilizaremos a linguagem de programação C# (pronuncia-se "see sharp") e o correspondente framework .NET (pronuncia-se "dotnet").
O C# foi lançado em 2002, com o Visual Studio .NET e buscava ser uma linguagem simples, moderna, de uso geral e orientada a objetos.
O .NET é uma plataforma de desenvolvimento de software cujo tempo de vida e maturidade de desenvolvimento a tornam uma das plataformas mais utilizadas por empresas. Além de compatível com o C#, o .NET oferece suporte a outras linguagens, como o F# e o Visual Basic.
O .NET fornece a base para a criação de vários tipos de aplicativos, principalmente, aplicativos desktop, aplicativos móveis, aplicativos web ou jogos, e tem suporte para os sistemas operacionais Windows, macOS e Linux.
Clique nas abas a seguir para conhecer mais detalhes sobre os tipos de aplicativos.
Os aplicativos desktop caracterizam-se como programas executados pelo usuário em seu sistema operacional sem fazer uso de um navegador web.
Os aplicativos móveis são caracterizados por serem instalados e utilizados em aparelhos celulares que funcionam com os sistemas operacionais Android ou iOS, estando disponíveis nas lojas Google Play e Apple Store, respectivamente.
Os aplicativos web são armazenados em um servidor e podem responder tanto a conteúdos estáticos, que possuem sempre o mesmo retorno, quanto a conteúdos dinâmicos, por meio de um conjunto de informações recuperadas de uma consulta ao banco de dados.
O .NET é distribuído em dois pacotes. Clique nas abas para conhecê-los.
O Software Development Kit (SDK) possui o que é necessário para criarmos uma aplicação em ambiente de desenvolvimento, a partir do .NET, viabilizando, assim, o processo de compilação e de execução da criação de nossos programas. O SDK possui também o Runtime.
Caso você tenha a aplicação pronta para ser executada, é possível utilizar somente o Runtime para fazê-la funcionar.
Saiba mais...
Para saber mais sobre o .NET, clique aqui.
Há diversas maneiras de classificar as linguagens de programação. Podemos, por exemplo, classificá-las em: compilada ou interpretada; de alto nível ou de baixo nível etc. Agora, estudaremos a classificação feita por tipo de paradigmas.
Em programação, um paradigma é uma abordagem utilizada para resolver problemas a partir de técnicas e de ferramentas disponíveis e que podem ser aplicadas a diferentes linguagens. Paradigmas são, portanto, abordagens diferentes para a criação de nossas aplicações.
Uma linguagem de programação pode aplicar paradigmas diferentes. O importante é compreender qual pode ser o paradigma mais adequado à construção de seu projeto.
Fonte: Pexels
Clique nas abas para acessar a definição resumida de alguns paradigmas de programação.
A programação estruturada é uma técnica que pode ser utilizada em diferentes linguagens, permitindo a construção de programas em um número restrito de estruturas. As três estruturas são: de controle de repetição, de condição e de sequência.
O paradigma de programação orientado a objetos (POO ou, em inglês, OOP) surgiu como uma alternativa para aproximar a representação dos itens do mundo real aos do mundo da programação; baseia-se em classes e objetos.
A programação funcional é o processo de construção de sistemas baseado em funções puras, ou seja, evitando-se o compartilhamento de estado. A partir de um dado de entrada, constrói-se uma saída esperada.
A programação imperativa é baseada em instruções e comandos, ou seja, são estabelecidas ordens sob as quais o sistema deve operar (indicando-se como e o que o sistema deve realizar).
Compare as características de algumas linguagens de programação.
Nome da linguagem | Paradigma | Paradigma de programação | Implementação | Aplicações |
---|---|---|---|---|
C# | Multi | Orientação a objetos; funcional | Compilada | Aplicações web, mobile e desktop |
Java | Multi | Orientação a objetos; imperativa | Compilada | Muito utilizada em aplicações mobile (Android) |
Elixir | Multi | Orientada a processos; funcional; concorrente; distribuída | Compilada | Utilizada em sistemas distribuídos e em APIs web |
Clojure | Único | Programação funcional | Compilada | Big data e dados |
Saiba mais...
Para saber mais sobre paradigmas de programação, clique aqui.
C# é uma linguagem de programação suportada pelo .NET; é a principal linguagem da Microsoft e possui as seguintes características:
Por ser uma linguagem compilada, o C# fornece a visualização dos erros em tempo de desenvolvimento e, em caso de falha, o código não é executado.
O C# possui maturidade no mercado (a linguagem passou por testes, validações e atualizações ao longo do tempo), sendo uma das linguagens mais utilizadas por empresas no mundo inteiro. A orientação a objetos permite a reutilização em outros cenários e contextos (inclusive, o C# te orienta a seguir essa linha). Todos os conhecimentos e conceitos adquiridos neste desafio podem ser reaplicados em outras linguagens, como o Java.
Saiba mais...
O processo de traduzir uma linguagem de alto nível, como o C#, para uma linguagem de máquina é denominado compilação. Para saber mais a respeito desse processo, clique aqui.
Para poder codificar com o .NET e a C# é necessário preparar o ambiente de desenvolvimento.
O ambiente de desenvolvimento é composto de ferramentas e utilitários necessários para o desenvolvimento de novos programas. Você deverá instalar o SDK do .NET, na versão 5, para ter acesso às ferramentas de criação e de execução do projeto no .NET.
Clique aqui para acessar o tutorial de instalação do SDK.
Interface de linha de comando
A partir da instalação do SDK, você terá acesso a uma interface que adiciona comandos ao nosso terminal, o que permite executar operações. Essa interface é chamada dotnet cli (Command Line Interface) e permite:
Há duas opções de ferramentas recomendadas para a utilização em seus projetos: VSCode e Microsoft Visual Studio, mas existem outras (como o ReSharper, da Intellij).
O Visual Studio Code (VSCode) é um editor de código leve que tem ganhado popularidade por permitir a criação de diversas áreas, como web, desktop e mobile. Para adicionar o suporte à linguagem C#, você deverá adicionar a extensão no VSCode.
O ambiente de desenvolvimento integrado da Microsoft é chamado Microsoft Visual Studio ou, simplesmente, Visual Studio. Trata-se de uma IDE gratuita.
Essa imagem é de um projeto em desenvolvimento aberto na interface da IDE Visual Studio.
Com a interface de linha de comando instalada, você poderá ter acesso a comandos que permitem criar projetos, testá-los e executá-los.
O comando dotnet new cria um projeto baseado em um modelo de sua escolha: aplicativo de console, aplicativo web asp.net core, projetos de testes e muitos outros.
Com a compreensão sobre a criação do projeto e de sua estrutura-base, você estudará conceitos básicos da sintaxe do C#, como tipos de dados e variáveis, e aprenderá a alterar o fluxo de execução de uma aplicação em seu código.
Antes de estudarmos a sintaxe básica do C#, retomaremos alguns conceitos básicos de lógica de programação.
Para retomar os conceitos, clique nos itens da lista a seguir:
Durante o desenvolvimento do projeto, são criados diversos arquivos com finalidades específicas, como guardar dados, converter informações de uma linguagem para outra, fazer a conexão entre módulos do framework, entre outros.
Para cada tipo de arquivo, é necessário utlizar programas específicos para ler certos formatos de arquivos.
Os formatos indicam como eles são armazenados, para serem consultados e visualizados posteriormente. Por exemplo: os arquivos de imagem existentes em seu computador possuem uma variação de .png, .jpg ou .jpeg, podendo ser abertos com o software leitor de fotos do sistema operacional Windows, para serem visualizados, ou com o navegador instalado (Firefox, Chrome ou Edge).
Os arquivos de texto, por sua vez, podem conter a extensão .txt (possuem uma limitação de edição e de formatação), ou .doc e .docx, próprios da Microsoft, sendo abertos, visualizados e editados com o programa Word.
Além dos softwares específicos de edição de texto, podemos usar bibliotecas para manipular um arquivo .txt. As operações de leitura e de escrita nos arquivos são comuns para armazenar dados e realizar a leitura de informações de um arquivo existente em disco e, por isso, essas operações estão presentes nas bibliotecas.
Os módulos do .NET agilizam nosso desenvolvimento, pois permitem o acesso a recursos do sistema, como leitura e gravação em arquivos com o formato .txt.
Agora vamos criar uma pasta chamada Arquivos para testar a manipulação de um arquivo de texto. Em seguida, vamos criar o arquivo.txt e realizar as operações de leitura e escrita nele, usando uma biblioteca do .NET.
Clique aqui e acompanhe o passo a passo para criar o projeto Arquivos.
Manipulação de arquivos
Agora vamos ver como manipular um arquivo de texto usando uma biblioteca do .NET.
Em seu computador, crie um arquivo chamado arquivo.txt, no qual realizaremos algumas operações. No exemplo, o arquivo.txt foi criado no disco local (geralmente identificado como C:\), como mostra a imagem a seguir.
Acompanhe no código comentado a seguir a biblioteca e os métodos para manipular o arquivo.txt.
O using
contém as importações de bibliotecas. O namespace
define uma separação lógica de pastas.
O namespace
System.IO
contém classes que permitem realizar a leitura e a gravação em arquivos, bem como fornecem acesso ao diretório de arquivos. Inclua System.IO
como using
, que contém os tipos mencionados, como mostra a imagem a seguir.
Na linha 10, é definido o local de seu computador em que o seu arquivo será salvo (local de referência).
Com o StreamWriter(caminhoDoArquivo)
, um novo StreamWriter
é inicializado com o nome do arquivo.
O stream.Write("")
permite gravar uma cadeia de caracteres.
O stream.Close()
fecha o fluxo atual do StreamWriter
.
Ao utilizar o using, a execução será finalizada ao final do bloco dessa instrução, não sendo necessário fechar e finalizar a utilização desse recurso.
O StreamReader.ReadLine()
permite realizar a leitura das informações desse arquivo .txt.
1. O protocolo de transferência de hipertexto é o:
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
O HTTP é o protocolo usualmente utilizado para a transferência de dados na web.
Ops! Tente novamente.
Lembre se de que esse protocolo é bastante utilizado como base cliente-servidor.
Resposta incorreta.
A resposta correta está representada na alternativa a.
Retome o tópico HTTP e URL para rever qual é o protocolo-padrão para a transferência de dados web.
2. Para armazenarmos um conjunto de elementos de um mesmo tipo de dado, podemos utilizar o:
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
O array é utilizado para armazenar um conjunto de elementos do mesmo tipo de dado; quando é unidimensional, é conhecido como vetor.
Ops! Tente novamente.
Um conjunto de dados de um mesmo tipo pode ser armazenado em estruturas como um vetor.
Resposta incorreta.
A resposta correta está representada na alternativa b.
O array é utilizado para armazenar um conjunto de elementos do mesmo tipo de dado; quando é unidimensional, é conhecido como vetor. Retome o tópico Lógica de programação (arrays).
3. Aponte uma das várias funções do server-side.
Atenção
Selecione uma alternativa.
Parabéns! Resposta correta.
Além do acesso controlado a informações, o server-side pode fornecer conteúdo dinâmico, enviar notificações ao usuário e armazenar informações em banco de dados.
Ops! Tente novamente.
Uma das funções do server-side é fornecer informações mais personalizadas ao usuário.
Resposta incorreta.
A resposta correta está representada na alternativa a.
Além do acesso controlado a informações, o server-side pode fornecer conteúdo dinâmico, enviar notificações ao usuário e armazenar informações em banco de dados. Retome o tópico Server-side.
Você estudou que servidor web armazena os documentos de sites, como HTML, CSS e JavaScript, processando requisições e devolvendo informações ao cliente, no lado do usuário. E o que permite a comunicação entre cliente-servidor é protocolo HTTP.
Também conheceu a diferença entre site estáticos e dinâmico e a dinâmica e as regras de negócios que os sistemas exigem, que são construídas por meio das aplicações de Back-End e realizadas por meio de linguagens de programação, como a linguagem orientada a objetos C#.
Além disso, você estudou que o .NET é framework compatível com o C# e disponibiliza uma série de recursos que podem ser utilizados para realizar a gravação e a leitura de arquivos, além de disponibilizar outros recursos que facilitam o processo de desenvolvimento.
No próximo desafio...
Você estudará como aplicar programação orientada a objetos para o desenvolvimento do sistema.
Aviso
Parece que você já iniciou o curso, você pode: