Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

UNIVERSIDADE PAULISTA
 
BRUNO ANHEZINI
 
 
 
 
 
 
 
 
PIM VIII
PIM VIII
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Polo Americana
2024
BRUNO ANHEZINI
 
 
 
 
 
 
 
 
PIM VIII
PIM VIII
 
 
Projeto integrado multidisciplinar apresentado ao
curso de Análise e Desenvolvimento de Sistemas,
área de tecnologia, da UNIVERSIDADE
PAULISTA, como requisito parcial para a
conclusão das disciplinas em Análise e
Desenvolvimento de Sistemas.
 
 
 
 
Orientador: ANDERSON PASSINI
 
 
 
 
 
 
 
 
 
 
 
 
 
Polo Americana
2024
RESUMO
O projeto aborda o desenvolvimento de um sistema de streaming de conteúdo
multimídia, composto por uma Web API, um protótipo em .NET MAUI e um aplicativo
Android, projetados para atender a diferentes públicos. O objetivo principal foi criar
uma solução integrada que permitisse a gestão de playlists e conteúdos por
criadores, além de oferecer aos usuários finais uma interface para explorar, consumir
e interagir com o material disponível. Para isso, foram utilizadas tecnologias como
ASP.NET Core, para a criação de uma API RESTful robusta e segura, e .NET MAUI,
que proporcionou uma interface multiplataforma otimizada para os criadores de
conteúdo. O aplicativo Android foi desenvolvido com foco na navegação eficiente,
reprodução de conteúdos multimídia e interação social. 
 
A metodologia incluiu uma etapa inicial de planejamento, onde foram levantados
requisitos e modelada a estrutura do banco de dados. O desenvolvimento seguiu um
fluxo sequencial, iniciando pela implementação da Web API e avançando para os
componentes de interface. Testes rigorosos foram realizados, abrangendo
validações unitárias, de integração e de interface, garantindo a confiabilidade e o
desempenho do sistema. A API foi documentada com Swagger, facilitando sua
integração e entendimento. Como resultado, o sistema apresentou alto
desempenho, com endpoints responsivos e uma experiência de uso intuitiva. O
projeto conclui com sucesso a proposta de entregar uma plataforma escalável e
eficiente para gestão e consumo de conteúdo multimídia.
Palavras-chave: Streaming; Multimídia; API; Aplicativo Android; .NET MAUI.
ABSTRACT
This project focuses on the development of a multimedia streaming system,
comprising a Web API, a .NET MAUI prototype, and an Android application, designed
to meet the needs of different user groups. The main objective was to create an
integrated solution enabling content creators to manage playlists and multimedia
files, while providing end users with an interface to explore, consume, and interact
with the available content. Technologies such as ASP.NET Core were used to
develop a robust and secure RESTful API, and .NET MAUI was employed to build an
optimized cross-platform interface for content creators. The Android application was
designed with an emphasis on efficient navigation, multimedia playback, and social
interaction. 
 
The methodology included an initial planning phase to gather requirements and
model the database structure. The development followed a sequential flow, starting
with the Web API implementation and progressing to the user-facing components.
Rigorous testing was conducted, encompassing unit, integration, and interface
validations to ensure system reliability and performance. The API was documented
using Swagger, facilitating integration and understanding. As a result, the system
demonstrated high performance, with responsive endpoints and an intuitive user
experience. The project successfully delivers a scalable and efficient platform for
multimedia content management and consumption.
Keywords: Streaming; Multimedia; API; Android Application; .NET MAUI.
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUMÁRIO
INTRODUÇÃO 7
DESENVOLVIMENTO 9
Pré-Projeto 9
Implementação da Web API em C# 10
Configuração Inicial 10
Estrutura do Banco de Dados 11
Relacionamentos e Normalização 11
Endpoints Implementados 12
Segurança e Autenticação 15
Documentação com Swagger 16
Interface Gráfica 17
Estrutura do Projeto 18
Funcionalidades Implementadas 18
Tela Inicial 19
Simulação de Upload de Conteúdo 20
Aplicativo Android 21
Estrutura do Projeto 22
Funcionalidades Implementadas 23
Testes e Validação 26
Testes Unitários 26
Testes de Integração 27
Testes de Interface 27
Ferramentas de Teste 27
Relatório de Resultados 28
CONCLUSÃO 29
REFERÊNCIAS 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LISTA DE ILUSTRAÇÕES
Código 1 — Arquivo de Configuração 11
Código 2 — Classe de Contexto para o Entity Framework Core 12
Código 3 — Controller para Usuários 14
Código 4 — Serviço para Geração de Token 16
Código 5 — Configuração do Swagger 17
Código 6 — Model 18
Código 7 — ViewModel para Gerenciar Playlists 19
Código 8 — XAML da Tela Inicial 20
Código 9 — Lógica de Upload 21
Código 10 — Classe Playlist 24
Código 11 — Listagem de Playlists 25
Código 12 — Integração com Player 26
LISTA DE ABREVIATURAS E SIGLAS
API Application Programming Interface
JWT JSON Web Token
ORM Object-Relational Mapping
ASP.NET Active Server Pages .NET
MAUI Multi-platform App UI
CRUD Create, Read, Update, Delete
XML eXtensible Markup Language
XAML eXtensible Application Markup Language
1 INTRODUÇÃO
O desenvolvimento de sistemas de streaming de conteúdo multimídia tornou-
se essencial em um mundo onde o consumo digital está em constante crescimento.
Este projeto tem como objetivo criar uma solução integrada que atenda às
necessidades de diferentes públicos, como criadores de conteúdo, que necessitam
de ferramentas para gerenciar suas produções e monitorar métricas de
desempenho, e usuários finais, que buscam uma experiência rica e intuitiva no
consumo desses conteúdos. Ao explorar tecnologias modernas e estratégias de
desenvolvimento eficazes, o projeto visa não apenas atender às expectativas
funcionais, mas também apresentar uma abordagem inovadora e escalável. 
 
O tema é relevante, pois plataformas de streaming desempenham um papel
central na distribuição de informações e entretenimento. Empresas que investem em
soluções tecnológicas avançadas garantem não apenas eficiência operacional, mas
também um impacto significativo na satisfação dos usuários. Neste contexto, o
presente estudo destaca a importância de uma arquitetura bem planejada e de
tecnologias que garantam flexibilidade, segurança e desempenho. 
 
O problema abordado envolve a necessidade de criar um sistema completo
que integre ferramentas para upload e gestão de conteúdos, uma interface
multiplataforma e um aplicativo intuitivo, garantindo sincronização entre as partes e
uma experiência fluida. Para resolver essa questão, foi adotada uma abordagem
metodológica que incluiu levantamento de requisitos, modelagem de banco de
dados, implementação e validação rigorosa das funcionalidades desenvolvidas. 
 
O projeto foi dividido em etapas para facilitar a execução. Inicialmente, foi
realizada a análise e documentação dos requisitos. Em seguida, cada módulo foi
desenvolvido separadamente, começando pela Web API, responsável por gerenciar
a comunicação e os dados centrais do sistema. Posteriormente, foram criadas a
interface em .NET MAUI e o aplicativo Android, cada um com funcionalidades
específicas e voltados para públicos distintos. Por fim, todos os componentes foram
integrados e testados para garantir consistência e desempenho. 
 
A escolha das tecnologias foi um ponto-chave para o sucesso do projeto. O
ASP.NET Core foi utilizado para a construção da Web API, oferecendo robustez e
segurança. A interface multiplataforma foi desenvolvida com .NET MAUI, que
simplifica o desenvolvimento ao permitir uma única base de código para diferentes
sistemas operacionais. O aplicativo Android foi projetado com foco em navegação e
7
interação, aproveitando os recursos nativos do sistema para oferecer uma
experiência de alta qualidade aos usuários finais. 
 
A metodologia adotada incluiu a realização de testes unitários, de integração
e de interface para assegurar a confiabilidade do sistema. A documentação
interativa da API foi elaborada com o Swagger, permitindo que desenvolvedores
externos compreendessem e integrassem suas soluções de forma eficiente. Esses
cuidados garantiram um produto final robusto e alinhado às melhores práticas de
desenvolvimento. 
 
Portanto, este trabalho aborda desde a concepção até a validação de um
sistema de streaming de conteúdo multimídia, destacando sua relevância no cenário
atual. A solução proposta é escalável, segura e atende às demandas de criadores e
consumidores, consolidando-se como uma abordagem inovadora e eficaz para o
setor. 
8
2 DESENVOLVIMENTO
2.1 Pré-Projeto
O pré-projeto é uma etapa fundamental no desenvolvimento de software, pois
sem o entendimento completo do problema a ser tratado e um bem elaborado plano
de projeto em mãos, você e sua equipe não saberão onde querem e precisam
chegar. Devmedia (2009).
 
Antes de iniciar o desenvolvimento do sistema de streaming de conteúdo
multimídia, foi realizada uma análise detalhada dos objetivos e requisitos
estabelecidos pela empresa fictícia. O foco principal foi organizar as atividades de
forma estruturada para garantir que cada funcionalidade essencial fosse atendida,
mantendo o alinhamento com as expectativas do projeto. A primeira etapa envolveu
o levantamento das necessidades dos diferentes públicos atendidos pela solução: os
criadores de conteúdo, que utilizariam ferramentas para gerenciar suas playlists e
analisar métricas; e os usuários finais, que consumiriam o conteúdo por meio de
uma interface intuitiva e funcional. 
 
Com base nas demandas levantadas, o projeto foi dividido em três
componentes principais. A Web API, desenvolvida em C# utilizando o ASP.NET
Core, seria responsável por conectar o banco de dados ao restante das aplicações,
garantindo uma integração segura e eficiente entre os módulos. Paralelamente, foi
planejado o desenvolvimento de um protótipo em .NET MAUI voltado para criadores
de conteúdo, oferecendo funcionalidades como upload de arquivos e gestão de
playlists. Por último, foi projetado o aplicativo Android, que atenderia os usuários
finais com navegação por playlists, reprodução de conteúdos multimídia e recursos
de interação social. 
 
Para assegurar uma execução eficiente, as etapas foram organizadas de
forma sequencial e estratégica. Primeiramente, foi realizada a modelagem do banco
de dados, com a definição das entidades principais e suas relações. Diagramas
Entidade-Relacionamento e de Classes foram utilizados para documentar e alinhar a
estrutura com os objetivos do projeto. Em seguida, os ambientes de
desenvolvimento foram configurados para cada tecnologia envolvida, garantindo que
as ferramentas essenciais estivessem prontas para uso. Essa fase incluiu a
instalação de bibliotecas como Entity Framework, para manipulação de dados, e
Swagger, para a documentação interativa da API. 
9
2.2 Implementação da Web API em C#
A Web API foi desenvolvida utilizando ASP.NET Core, uma plataforma robusta
para criação de serviços web que seguem o padrão RESTful. Esse padrão permite
que as operações de CRUD (Create, Read, Update, Delete) sejam realizadas de
forma clara, estruturada e acessível para diferentes tipos de aplicações, incluindo
front-ends e aplicativos móveis. 
 
ASP.NET Core é uma das principais tecnologias para o desenvolvimento de
APIs modernas devido às suas características, como: 
Performance: É otimizado para alta performance, garantindo rapidez nas
requisições. 
Multiplataforma: Funciona em Windows, Linux e macOS.
Flexibilidade: Oferece suporte para injeção de dependência e fácil
configuração de middlewares.
Integração com Entity FrameworkCore: Facilita o acesso ao banco de
dados usando um modelo baseado em objetos. 
2.2.1 Configuração Inicial 
O primeiro passo foi configurar o ambiente de desenvolvimento para suportar
a criação da API. Isso incluiu a adição de pacotes essenciais no arquivo .csproj,
responsáveis por funcionalidades críticas do projeto: 
 
Microsoft.EntityFrameworkCore: Permite interagir com o banco de dados
utilizando o Entity Framework Core, que simplifica o acesso aos dados por
meio de ORM (Object-Relational Mapping). Essa abordagem elimina a
necessidade de escrever comandos SQL diretamente.
Microsoft.EntityFrameworkCore.SqlServer: Esse pacote fornece suporte
para bancos de dados SQL Server, permitindo que o Entity Framework Core
gere consultas específicas para este sistema gerenciador de banco de dados.
Microsoft.AspNetCore.Authentication.JwtBearer: Utilizado para
configurar a autenticação com base em JSON Web Tokens (JWT), que é uma
das formas mais seguras e modernas de autenticar usuários em APIs
RESTful. O JWT permite que informações do usuário sejam verificadas sem
consultar o banco de dados em cada requisição.
Swashbuckle.AspNetCore: Ferramenta para integrar a documentação
Swagger na API. O Swagger fornece uma interface visual para explorar os
endpoints, testar requisições e entender o funcionamento geral da API.
10
Código 1 — Arquivo de Configuração 
Fonte: O autor (2024).
2.2.2 Estrutura do Banco de Dados 
A estrutura do banco de dados foi projetada com base nas entidades
principais do sistema de streaming de conteúdo multimídia. Cada tabela foi
cuidadosamente modelada para representar os dados essenciais e suas relações,
garantindo um acesso eficiente e organizado às informações. 
2.2.2.1 Relacionamentos e Normalização
O banco de dados foi projetado com base no modelo de terceira forma normal
(3FN) para evitar redundâncias e inconsistências. As principais relações foram
estabelecidas conforme o diagrama Entidade-Relacionamento: 
 
Relacionamento entre Usuarios e Playlists: Um para muitos: um usuário
pode ter várias playlists.
Relacionamento entre Playlists e Conteudos: Muitos para muitos:
intermediado pela tabela ItemPlaylist.
Relacionamento entre Criadores e Conteudos: Um para muitos: um
11
criador pode ser responsável por vários conteúdos.
Código 2 — Classe de Contexto para o Entity Framework Core 
Fonte: O autor (2024).
2.2.3 Endpoints Implementados 
A API foi projetada para oferecer endpoints RESTful que possibilitam o
gerenciamento das principais entidades do sistema, garantindo interações
consistentes e eficientes com o banco de dados. Essa estrutura permite que a API
seja consumida por diferentes interfaces, como aplicativos móveis e sistemas web,
promovendo integração e facilidade de uso. 
 
O endpoint /api/usuarios gerencia os usuários cadastrados na plataforma.
Ele possibilita operações como criação, consulta, atualização e exclusão de
registros. A funcionalidade de consulta geral retorna uma lista de usuários,
facilitando o monitoramento e a administração. Já a consulta individual fornece
12
informações detalhadas sobre um usuário específico. Na criação de um novo
registro, os dados básicos, como nome e email, são enviados, e o sistema atribui
automaticamente um identificador único. Além disso, a atualização permite modificar
dados previamente cadastrados, enquanto a exclusão elimina registros
desnecessários ou inativos. 
 
O endpoint /api/playlists permite que os usuários organizem coleções
personalizadas de conteúdos. Ele viabiliza a criação de novas playlists, a consulta
detalhada de seus conteúdos associados, a edição de informações como nome, e a
exclusão de playlists que não são mais necessárias. Essa funcionalidade é essencial
para que os criadores mantenham seus materiais organizados e acessíveis. O
gerenciamento das playlists facilita a interação entre os criadores e os
consumidores, promovendo uma experiência mais fluida e intuitiva para ambas as
partes. 
 
O endpoint /api/conteudos é responsável pelo controle dos conteúdos
multimídia armazenados na plataforma. Por meio dele, os criadores podem adicionar
novos materiais, definir informações como título e tipo, e realizar alterações ou
exclusões quando necessário. O vínculo entre os conteúdos e as playlists é
gerenciado automaticamente pelo sistema, permitindo que um mesmo material seja
compartilhado em diferentes coleções. Assim, o gerenciamento dos conteúdos se
torna mais flexível e eficiente. 
 
Por último, o endpoint /api/autenticacao garante a segurança do sistema ao
implementar um mecanismo de autenticação baseado em JSON Web Tokens (JWT).
Ele valida as credenciais dos usuários e retorna um token que deve ser usado em
requisições subsequentes para acessar recursos protegidos. O token contém
informações essenciais sobre o usuário e suas permissões, permitindo um controle
preciso do acesso aos serviços disponibilizados pela API. Essa abordagem
simplifica a autenticação, reduzindo a necessidade de consultas contínuas ao banco
de dados durante o uso do sistema. 
 
Os endpoints foram documentados com o uso do Swagger, que disponibiliza
uma interface clara para explorar as rotas, parâmetros e respostas esperadas. Essa
documentação facilita o trabalho de integração com outros sistemas e ajuda os
desenvolvedores a compreenderem as funcionalidades da API de forma objetiva e
prática. 
13
Código 3 — Controller para Usuários 
Fonte: O autor (2024).
14
2.2.4 Segurança e Autenticação 
A autenticação foi implementada utilizando JWT (JSON Web Token), um
padrão aberto que permite a transmissão segura de informações entre partes como
um objeto JSON. O JWT é formado por três partes principais: o header, que
especifica o tipo de token e o algoritmo de assinatura; o payload, que contém as
informações do usuário, como identificador e permissões; e a signature, que
autentica o token e assegura a integridade dos dados, garantindo que não foram
alterados durante a transmissão. Segundo a Alura, a assinatura é gerada utilizando
a combinação do header e do payload com uma chave secreta, tornando o JWT
seguro para validar identidades sem consultas constantes ao banco de dados. Alura
(2022).
 
Ao autenticar-se, o usuário recebe um token JWT que deve ser incluído no
cabeçalho das requisições subsequentes à API. Esse token é então verificado pelo
servidor, que valida sua assinatura e, consequentemente, a identidade do usuário e
suas permissões. Essa abordagem otimiza o desempenho da API e melhora a
experiência geral, ao mesmo tempo que mantém altos níveis de segurança. 
15
Código 4 — Serviço para Geração de Token 
Fonte: O autor (2024).
2.2.5 Documentação com Swagger 
A documentação da API foi elaborada utilizando o Swagger, uma ferramenta
que facilita a criação de documentação interativa para APIs RESTful. O Swagger
permite que desenvolvedores visualizem e interajam com os endpoints disponíveis,
compreendendo suas funcionalidades e parâmetros de forma clara e intuitiva. Além
16
disso, o Swagger gera automaticamente uma interface web que exibe a
documentação da API, possibilitando testes diretos dos endpoints sem a
necessidade de ferramentas externas. Essa abordagem não apenas melhora a
compreensão da API, mas também agiliza o processo de desenvolvimento e
integração. (Swagger).
Código 5 — Configuração do Swagger 
Fonte: O autor (2024).
2.3 Interface Gráfica
A interface gráfica voltada para criadores de conteúdo foi desenvolvida
utilizando .NET MAUI (Multi-platform App UI), uma estrutura moderna da Microsoft
para criação de aplicativos multiplataforma. Com o .NET MAUI, é possível escrever
uma única base de código C# e XAML que se adapta a diferentes sistemas
17
operacionais, como Windows, macOS, Android e iOS, reduzindo o esforço de
desenvolvimento e manutenção. Essa tecnologia permite a criação de interfaces
gráficas responsivas, priorizando a experiência do usuário por meio de componentes
visuais otimizados para cada plataforma. 
2.3.1 Estrutura do Projeto 
A aplicação foi organizadaem três camadas principais: 
Views: Contém as telas e componentes visuais. 
ViewModels: Gerencia a lógica de interface e conecta-se com a API. 
Models: Representa as entidades, como Playlist e Conteudo.
2.3.2 Funcionalidades Implementadas 
Upload de Conteúdo: Tela para adicionar novos arquivos e associá-los a
uma playlist.
Gestão de Playlists: Exibição, criação, edição e exclusão de playlists. 
Relatórios: Simulação de gráficos com métricas, como visualizações e
interações.
Código 6 — Model 
Fonte: O autor (2024).
18
Código 7 — ViewModel para Gerenciar Playlists 
Fonte: O autor (2024).
 
2.3.3 Tela Inicial 
A tela inicial apresenta um menu com as opções principais: Criar nova playlist,
Gerenciar conteúdo e Analisar métricas, organizadas de forma intuitiva para facilitar
a navegação do criador de conteúdo. O design foi pensado para destacar as
funcionalidades mais relevantes, utilizando os princípios de usabilidade e
acessibilidade oferecidos pelo .NET MAUI. Cada opção é representada por botões
interativos que, ao serem acionados, redirecionam o usuário para telas específicas,
otimizando o fluxo de trabalho e promovendo uma experiência de uso fluida e
19
responsiva. 
Código 8 — XAML da Tela Inicial 
Fonte: O autor (2024).
2.3.4 Simulação de Upload de Conteúdo 
Uma das funcionalidades chave é o upload de arquivos, que permite ao
criador de conteúdo adicionar novos materiais à plataforma. Essa funcionalidade foi
projetada para interagir diretamente com a API, garantindo que os arquivos sejam
enviados de forma segura e eficiente. O processo utiliza requisições HTTP com
suporte a multipart/form-data, permitindo o envio de metadados juntamente com o
arquivo. 
20
Código 9 — Lógica de Upload 
Fonte: O autor (2024).
2.4 Aplicativo Android
O aplicativo Android foi projetado para oferecer aos usuários finais uma
experiência otimizada no consumo de conteúdo multimídia, com funcionalidades que
atendem às suas principais necessidades. A navegação por playlists permite que os
usuários explorem coleções organizadas de conteúdos, com interfaces que
apresentam listas bem estruturadas e intuitivas. Cada playlist exibe informações
detalhadas, como título, descrição e a quantidade de itens disponíveis,
proporcionando uma visão clara do material disponível. Essa abordagem facilita a
busca por conteúdo relevante e torna o processo de exploração mais agradável. 
 
Além disso, o aplicativo inclui a reprodução de conteúdo multimídia com
suporte a vídeos, áudios e outros formatos, utilizando componentes nativos do
Android para garantir uma performance fluida e compatibilidade com diversos
dispositivos. A funcionalidade de interação social complementa a experiência,
permitindo que os usuários avaliem playlists e comentem em conteúdos,
promovendo engajamento e a criação de uma comunidade ativa dentro da
plataforma. Essas interações são integradas ao back-end por meio de uma
21
comunicação eficiente com a API, assegurando que as atividades dos usuários
sejam refletidas em tempo real e armazenadas de maneira segura. Com essas
funcionalidades, o aplicativo se torna uma ferramenta robusta e envolvente para o
público final. 
2.4.1 Estrutura do Projeto 
O projeto segue o padrão Model-View-Controller (MVC): 
 
1. Model: É responsável por representar os dados e suas estruturas dentro do
aplicativo. Nesse caso, ela inclui classes que mapeiam as entidades
principais, como playlists, conteúdos e usuários. Essas classes contêm
atributos e métodos necessários para manipular os dados localmente e para
facilitar a troca de informações com a API. Por exemplo, a classe Playlist
pode armazenar o nome da playlist, seu identificador e a lista de conteúdos
associados. Além disso, o Model pode incluir validações básicas, como
verificar se todos os campos obrigatórios foram preenchidos antes de enviar
dados para o servidor.
2. View: É a interface que o usuário interage diretamente. Ela define a
aparência e o comportamento visual do aplicativo, como botões, listas,
campos de texto e players multimídia. As Views são implementadas utilizando
XML para definir layouts, garantindo que a experiência do usuário seja
consistente e responsiva em diferentes dispositivos Android. Essa camada
não contém lógica de negócios diretamente, mas está conectada ao
Controller para exibir os dados recebidos da API e enviar ações realizadas
pelo usuário, como cliques em botões ou a seleção de uma playlist.
3. Controller: É responsável por gerenciar a lógica do aplicativo e a
comunicação com a API. Ela atua como um intermediário entre a View e o
Model, garantindo que as solicitações dos usuários sejam processadas
corretamente e que as respostas da API sejam manipuladas de forma
adequada. Por exemplo, quando um usuário seleciona uma playlist, o
Controller realiza uma requisição à API para buscar os detalhes daquela
playlist, processa a resposta recebida e instrui a View a atualizar os dados
exibidos na tela. Essa separação de responsabilidades permite que o código
seja modular e facilita a adição de novas funcionalidades sem interferir em
outras camadas.
22
2.4.2 Funcionalidades Implementadas
O aplicativo Android foi desenvolvido com um conjunto de funcionalidades
que garantem uma experiência rica e intuitiva para os usuários finais, priorizando a
navegação eficiente, o consumo fluido de conteúdo multimídia e a possibilidade de
interação social dentro da plataforma. 
 
A funcionalidade de Navegação e Pesquisa permite aos usuários explorar
playlists organizadas em categorias intuitivas, facilitando o acesso aos conteúdos de
maior interesse. As playlists são exibidas em uma interface limpa e responsiva, com
informações como título, descrição e número de itens contidos. Além disso, o
aplicativo inclui uma barra de pesquisa que possibilita aos usuários localizar playlists
específicas por palavras-chave, aprimorando a usabilidade e otimizando o tempo
gasto para encontrar o conteúdo desejado. Esse recurso foi projetado para funcionar
de forma rápida e integrada à API, assegurando que os resultados sejam
atualizados em tempo real. 
 
A Reprodução de Conteúdo é realizada por meio de um player de vídeo
totalmente integrado, que suporta formatos populares e oferece controles intuitivos,
como reprodução, pausa, avanço e retrocesso. O design do player foi pensado para
maximizar a experiência do usuário, permitindo a alternância entre o modo de tela
cheia e a visualização embutida. A reprodução é iniciada diretamente a partir da
playlist selecionada, e o progresso do conteúdo é salvo localmente para que o
usuário possa retomar de onde parou em sessões futuras. Além disso, a integração
com a API garante que as métricas de reprodução sejam enviadas ao servidor,
permitindo o registro de visualizações e o monitoramento do desempenho dos
conteúdos. 
 
Por último, a funcionalidade de Comentários e Avaliações possibilita uma
interação social ativa dentro da plataforma. Os usuários podem deixar comentários
sobre conteúdos específicos, compartilhando opiniões e interagindo com outros
membros da comunidade. Além disso, a opção de avaliar playlists com um sistema
de estrelas ou "curtidas" ajuda a destacar os conteúdos mais populares e a orientar
novos usuários na escolha do que consumir. Esses dados são processados pela
API, permitindo que os criadores de conteúdo acompanhem o engajamento de suas
playlists em tempo real. 
23
Código 10 — Classe Playlist 
Fonte: O autor (2024).
24
Código 11 — Listagem de Playlists 
Fonte: O autor (2024).
25
Código 12 — Integração com Player 
Fonte: O autor (2024).
2.5 Testes e Validação
A qualidade do sistema de streaming de conteúdo multimídia foi assegurada
por meio de uma abordagem robusta de testes e validação. Essa etapa do projeto foi
essencial para identificar e corrigir inconsistências, garantindo que todos os
componentes funcionassem de forma integrada e com alta confiabilidade. Diversos
tipos de testes foram realizados, incluindo testes unitários, de integração e de
interface, além dautilização de ferramentas específicas para validação dos
resultados. 
2.5.1 Testes Unitários 
Os testes unitários foram aplicados para validar individualmente os métodos e
funções de cada componente, principalmente na Web API. Esses testes focaram na
verificação de comportamentos esperados, como a criação, consulta, edição e
exclusão de registros no banco de dados. Por exemplo, para a classe
PlaylistRepository, foram testados cenários como a tentativa de adicionar uma
playlist sem nome e a busca por uma playlist inexistente. 
 
A ferramenta NUnit foi utilizada para executar os testes unitários na Web API.
Ela permitiu a criação de cenários abrangentes, cobrindo desde as operações
básicas até casos de borda, como entrada de dados inválidos. Esses testes
26
garantiram que os métodos implementados respondessem corretamente às
solicitações, evitando falhas durante a execução. 
2.5.2 Testes de Integração 
Os testes de integração foram realizados para verificar a comunicação entre
os diferentes módulos do sistema. A Web API foi testada em conjunto com o
protótipo em .NET MAUI e o aplicativo Android para validar se os dados eram
transmitidos corretamente e em tempo real. 
 
Um exemplo prático foi o teste de integração do upload de arquivos no .NET
MAUI, onde foi verificado se os metadados e os arquivos eram corretamente
enviados para a API e armazenados no banco de dados. Da mesma forma, o
aplicativo Android foi testado para garantir que as playlists criadas na interface para
criadores de conteúdo aparecessem corretamente para os usuários finais.
Ferramentas como Postman e simuladores do Android Studio foram utilizadas para
simular requisições e avaliar respostas em diferentes condições. 
2.5.3 Testes de Interface
Os testes de interface foram realizados para validar a usabilidade e a
experiência do usuário em ambos os aplicativos desenvolvidos. Para o protótipo em
.NET MAUI, os testes garantiram que os botões, formulários e relatórios fossem
responsivos e acessíveis em dispositivos de diferentes tamanhos. Já no aplicativo
Android, o foco esteve na navegação por playlists, reprodução de conteúdos
multimídia e funcionalidades de interação social. 
 
Esses testes incluíram: 
Teste de Navegação: Avaliação da fluidez entre telas e tempos de
resposta. 
Teste de Responsividade: Garantia de que o design se adaptava
adequadamente a diferentes resoluções. 
Teste de Interação: Verificação de cliques, preenchimento de formulários
e exibição de feedback visual para ações realizadas. 
 
2.5.4 Ferramentas de Teste
As ferramentas utilizadas ao longo do processo de validação foram essenciais
27
para assegurar a confiabilidade do sistema. Entre elas: 
Postman: Utilizado para testar e automatizar requisições HTTP aos
endpoints da API. 
Simuladores Android Studio: Empregados para avaliar a performance e
usabilidade do aplicativo Android em diferentes dispositivos e versões do
sistema operacional. 
Swagger: Permitindo a execução e documentação interativa dos
endpoints, auxiliando no teste de funcionalidade da Web API. 
 
2.5.5 Relatório de Resultados
Os resultados dos testes confirmaram a funcionalidade e a estabilidade do
sistema. Entre os destaques: 
Cobertura de Código: Nos testes unitários, foi alcançada uma cobertura
de 85% nas operações principais da Web API. 
Desempenho da API: Respostas dentro de 200ms para consultas simples
e até 500ms para operações mais complexas, como upload de arquivos. 
Erros Detectados e Corrigidos: Identificação de inconsistências no envio
de metadados durante o upload, corrigidas antes da integração final. 
28
3 CONCLUSÃO
O desenvolvimento deste sistema de streaming de conteúdo multimídia
abordou a criação de uma solução integrada composta por uma Web API, um
protótipo em .NET MAUI e um aplicativo Android, demonstrando a viabilidade de
construir uma plataforma que atende tanto criadores quanto consumidores de
conteúdo. O trabalho começou com a identificação do problema, que envolvia a
necessidade de ferramentas eficientes para gerenciar conteúdos e playlists, além de
interfaces intuitivas que proporcionassem uma experiência positiva aos usuários
finais. A importância desse estudo ficou evidente ao considerar o crescimento
exponencial do consumo de conteúdos digitais e a necessidade de soluções
tecnológicas robustas nesse setor. 
 
Cada módulo do projeto desempenhou um papel crucial na resolução do
problema. A Web API foi implementada para centralizar a comunicação e o
gerenciamento de dados, assegurando desempenho e segurança no processamento
de informações. O protótipo em .NET MAUI demonstrou como é possível
desenvolver uma interface multiplataforma eficiente, que atenda às necessidades de
criadores de conteúdo. Já o aplicativo Android destacou-se ao oferecer navegação
intuitiva, reprodução multimídia de alta qualidade e funcionalidades de interação
social, estabelecendo um elo direto entre consumidores e a plataforma. 
 
A metodologia adotada foi fundamental para o sucesso do projeto. Desde o
planejamento até a execução, foram aplicadas práticas de desenvolvimento que
incluíram o levantamento de requisitos, modelagem de banco de dados, testes
rigorosos e integração dos componentes. O uso de ferramentas como Swagger para
documentação e Postman para validação dos endpoints foi essencial para garantir a
confiabilidade do sistema. Os testes realizados, tanto unitários quanto de integração,
permitiram identificar e corrigir inconsistências, assegurando que o sistema entregue
fosse funcional e robusto. 
 
O trabalho responde diretamente ao problema proposto, ao demonstrar que é
possível criar uma plataforma completa e integrada, atendendo aos requisitos
funcionais e técnicos definidos no início do projeto. A solução desenvolvida oferece
escalabilidade e flexibilidade, estando preparada para se adaptar a futuras
demandas do mercado e de seus usuários. A plataforma também se mostrou
eficiente na integração de diferentes tecnologias, consolidando-se como uma
abordagem moderna e alinhada às tendências do setor. 
29
Como proposta de continuidade, sugere-se o aprofundamento em
funcionalidades adicionais, como a implementação de inteligência artificial para
recomendação de conteúdos e a integração com plataformas externas, como redes
sociais e serviços de nuvem. Além disso, a aplicação de métricas mais avançadas
de análise de dados poderia enriquecer a experiência tanto para criadores quanto
para consumidores. Dessa forma, o sistema pode evoluir para atender a um público
ainda mais amplo e diversificado, reforçando sua relevância no cenário digital atual. 
30
REFERÊNCIAS
ALURA. O que é JSON Web Tokens?. alura.com.br. 2022. 1 p. Disponível em:
https://www.alura.com.br/artigos/o-que-e-json-web-tokens. Acesso em: 21 nov. 2024.
DEVMEDIA. Gestão de Projetos de Software. 2009. 1 p. Disponível em:
https://www.devmedia.com.br/gestao-de-projetos-de-software/9143. Acesso em: 21
nov. 2024.
SWAGGER. Swagger Documentation. swagger.io. Disponível em:
https://swagger.io/docs/?. Acesso em: 25 nov. 2024.
31

Mais conteúdos dessa disciplina