Я совсем запутался...
Asp.Net MVC - создание веб-приложений, Web Api - сервисов. Не могли бы вы объяснить для каких задач пишутся сервисы, а для каких веб приложения? Насколько я понимаю, если у нас клиент планируется не только веб, но еще, например, WPF-приложение, мобильное, то выбор должен пасть в сторону сервисов.
Конкретно для моего случая: имеется некое десктопное приложение еще на WinWorms. Хочется его перевести в веб. И встает логичный вопрос что использовать: Asp.Net Web Api + AngularJs или Asp.Net MVC?
Буду благодарен за любую информацию.
Ответ
Бакэнд для AngularJs можно написать хоть на ASP.NET MVC, хоть на Asp.Net Web Api, хоть на WCF (да, WCF тоже умеет делать REST-сервисы). Основная разница между ними в следующем:
ASP.NET MVC подходит для генерации страниц на стороне сервера (но не мешает работать и клиентским фреймворкам). Выбрав связку Angular.js + Web Api, вы навсегда ограничите себя исключительно клиентской генерацией страниц, приобретя заодно возможные проблемы с индексацией поисковиками. Взамен - у вашего сайта автоматически появится API, которое можно сделать публичным.
Думаю, начать надо с выяснения ответов на следующие вопросы:
Сколько человек будут работать над проектом и какие технологии им знакомы?
Насколько само ваше веб-приложение укладывается в концепцию HTTP? Оно будет состоять из набора отдельных динамически генерируемых страниц или из одной (или нескольких) страниц, содержащих формы, контролы и экраны?
Пример приложения первого вида - Википедия. Пример приложения второго вида - Gmail.
2а. Предполагается ли, что страница никогда не будет обновляться полностью?
2б. Сможет ли пользователь открыть одновременно 2 части вашего приложения в одной вкладке? (+ ко второму виду)
2в. Понадобится ли пользователю делиться ссылкой с другими или ставить ссылку в закладки? (+ к первому виду)
Нужно ли вам публичное API?