Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Centralizei um serviço através de uma Web API mas utilizei um projeto web para isso

Vou contextualizar:

Onde trabalho temos 2 websites de banco de imagens e estavamos gerenciando os bancos de forma individual (trabalho em dobro). Foi aí que surgiu a ideia, porque não criar um site web que só retornará JSON e unificar isso tudo?

Então criei um novo projeto Web ASP.NET MVC 4 que ao invés de retornar Views ele retorna JSON com a resposta para os dois sites que eu tenho, ajudou MUITO e resolveu o problema de trabalho dobrado.

DUVIDA:

Eu fiz errado ao criar um projeto Web ASP.NET ao invés de um console com o que está sendo feito no curso? E quais as vantagens da abordagem do curso(console com requisições de servidor) em relação ao que eu fiz?

6 respostas

Oi Leonardo, tudo bem?

Um serviço intermediário ajuda a eliminar as duplicações de código, como você pôde comprovar. Excelente ideia. Agora, sobre seus questionamentos:

  • Não sei como uma aplicação Console poderia resolver o problema. O caminho é fazer através de aplicação Web mesmo.
  • Sua aplicação é Web Application ou Web API? Supondo que você só vai usar essa aplicação para servir dados JSON: a vantagem de uma Web API é ser enxuta, sem configurações e arquivos que fazem parte de uma aplicação MVC convencional (isto é, sem views, arquivo de layout, css, javascript, etc), e isso deixa a aplicação mais leve, fácil de manter e mais rápida para inicializar.
  • Verifique se essa aplicação intermediária está devidamente protegida. Ela possui pontos sensíveis, que poderiam ser explorados por hackers ou bots? Ela usa token, ou algum tipo de autenticação?

Marcelo, no meu Web Application eu faço chamadas em API's de fornecedores, Google, Microsoft aplico as regras de negócio, padronizo todos os dados e retorno para o usuário, na verdade é um middleware que une resultado de imagens de vários outros fornecedores(inclusive nós mesmos), não há necessidade de nenhuma página web mas é um Web Application(com todas as funcionalidades do ASP.NET MVC 4) ou seja eu tenho o Razor mas não uso essa funcionalidade pois não há necessidade uma vez que eu só chamo as Actions que retornam JSON.

Eu autentico através de uma chave de api que eu gero para cada usuário, essa chave é enviada dentro de um Header.

Apesar de não ter terminado, notei que talvez utilizar um Console Application inicializando um servidor como foi ensinado eu ganhe recursos pois o Console consome muito menos recursos do que um projeto Web Application ASP.NET MVC 4.

Não sei se expliquei os termos de forma correta... Mas acredito que deu para entender.

solução!

Acho que entendi melhor agora.

Por falar em "Console consome muito menos recursos do que um projeto Web Application ASP.NET MVC 4", eu recomendaria você criar não um novo Console Application, mas sim um novo projeto ASP.NET Core Web API.

O ASP.NET Core é mais modular, mais leve e mais rápido que o ASP.NET MVC 4. Com ele, você só irá instalar o que você vai usar. Além disso, a migração do seu código atual é bem tranquila.

A Alura oferece estes cursos atualmente:

APIs Rest com Asp.NET Core 2.1 Parte 1: Da app MVC para API

APIs Rest com Asp.NET Core 2.1 Parte 2: Consumindo nossa API

Fala, Leonardo, tudo certo?

No curso usei uma aplicação console apenas para mostrar a transição do mundo desktop para o mundo web. O objetivo era didático mesmo. Você está certíssimo em criar uma aplicação Web desde o início do desenvolvimento.

Uma vantagem em utilizar uma aplicação console que expõe o servidor web (IWebHost) é que podemos publicá-lo em plataformas Unix. Entretanto é possível utilizar o Visual Studio criando uma aplicação Web e configurá-la para rodar via terminal. Para isso basta ir nas propriedades do projeto, aba Debug. Faço isso nos cursos que o Marcelo indicou.

Abraços!

Marcelo e Daniel, criei um ASP.NET Core Web Application para um outro projeto desde que comecei esse curso e o Core é realmente MUITO mais rápido do que o meu projeto anterior, estou gostando muito e vou aplicar na minha antiga solução assim que tiver uma janela de tempo para isso.

Legal, Leonardo! Quando estiver migrando e tiver dúvidas ou quiser trocar idéia, abre um tópico no fórum.

Abraços e sucesso!