Diferença entre o Projeto MVC 5 e o Projeto Web Api

Eu sou novo em ASP.NET MVC e API Web e tentando obter o básico. AFAIK, temos modelos de projeto no VS 2013, nomeados como MVC , Web API e Both of them together .

Eu passei pelos tutoriais e aprendi que podemos criar uma API usando apenas MVC, assim como com o modelo de API da Web.

Então, quais são as diferenças entre estes, com base na arquitetura e uso ?

Basicamente, um controlador de Web API é um controlador MVC , que usa o HttpMessageResponse como o tipo base de sua resposta, em vez de ActionResponse . Eles são os mesmos na maioria dos outros aspectos. A principal diferença entre os tipos de projeto é que o tipo de projeto MVC Application inclui coisas específicas da Web, como CSS padrão, arquivos JavaScript e outros resources necessários para um site, que não são necessários para uma API.

O MVC é usado para criar sites da web. Neste caso, os Controllers geralmente retornam uma View (ou seja, uma resposta HTML) para solicitações do navegador. As APIs da Web, por outro lado, geralmente são feitas para serem consumidas por outros aplicativos. Se você deseja permitir que outros aplicativos acessem seus dados / funcionalidades, você pode criar uma API da Web para facilitar esse access. Por exemplo, o Facebook tem uma API para permitir que desenvolvedores de aplicativos acessem informações sobre usuários usando o aplicativo. As APIs da Web não precisam ser para consumo público. Você também pode criar uma API para suportar seus próprios aplicativos. Por exemplo, criamos uma API da Web para suportar a funcionalidade AJAX do site do MVC.

A Microsoft mudou a maneira de apresentar os diferentes modelos. Agora, em vez de usar modelos diferentes para tipos de projetos diferentes, eles incentivam os desenvolvedores a misturar tecnologias ASP.NET dentro do mesmo projeto, conforme necessário. Microsoft chama isso vNext .

ATUALIZAÇÃO: Para ASP.NET Core, a API da Web foi integrada ao tipo de projeto MVC 6 e a class ApiController é consolidada na class Controller . Mais detalhes em: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Meus dois centavos…

  1. No asp.net MVC – o Controller do MVC decide qual deve ser a View – isto é, o controlador decide o que o usuário deve “ver” (com base no cenário atual ou contexto), quando faz uma solicitação.
  2. No ASP.Net Web Forms , as páginas ASPX decidem o que o usuário deve “ver” quando faz uma solicitação.
  3. Mas na API da Web , não há controle / poder de nenhum dos resources da API da Web para decidir o que o usuário deve “ver” quando faz uma solicitação.

A API da Web NÃO é uma tecnologia vinculada apenas a sites. Pode ser usado para vários fins – não apenas sites. Por isso, não sabe o significado de rendering

Leitura Adicional

  1. Planejando soluções Web hoje: Web Forms, ASP.NET MVC, API da Web e OWIN.
  2. APIs da Web do WCF ou do ASP.NET? Meus dois centavos no assunto
  3. A próxima geração do .NET – ASP.NET vNext
  4. Introdução ao ASP.NET MVC 6

Controlador MVC derivado da class do controlador. Em Mvc você pode retornar visualizações. A arquitetura do Mvc usa para criar um aplicativo. No entanto, as APIs da Web são usadas para fornecer dados a vários aplicativos.

Web Api drives do controlador Api e não retorna a visualização.

Nota: Você também pode criar o Web Api a partir do controlador MVC, mas precisa retornar o resultado como JsonResult ou outros tipos de retorno suportados pela API da web.

Além das respostas já fornecidas aqui, vale a pena notar qualquer controlador que herda do ApiController e ter uma ação com o verbo Http POST só pode ter um parâmetro de input [FromBody]. Se estiver usando um controlador MVC (derivado de ‘Controller’), você pode ter muitos parâmetros pós-input.