RohitVaidya Ответов: 1

Почему люди добавляют контроллеры web API в проект MVC UI, а не создают отдельный проект web API?


Я видел в приложении, которое я только начал работать, что контроллеры веб-API добавляются в проект MVC UI, и для этого приложения не создается отдельный проект веб-API.

Что я уже пробовал:

When I asked architect of the application about this, he just answered that it was already built in application and thus he did not modify the architecture. 
I did not get the actual reason for this architectural style of having Web API controller in MVC UI Project.

Please someone can explain me the advantage of it and if it is a good practice to follow this.

Richard MacCutchan

Вы можете попробовать документацию MVC.

1 Ответов

Рейтинг:
12

David_Wimbley

Ничего не зная о вашем проекте, я изложу вам свою точку зрения.

Хотя то, что сказал ваш коллега, верно, контроллеры web api включены в проект MVC (с точки зрения функциональности контроллеры MVC и контроллеры web api очень похожи)...ваш коллега может использовать их взаимозаменяемо, не осознавая или, возможно, просто не заботясь, поскольку они служат одной и той же цели.


Я бы поставил много денег, если бы вы пошли туда и изменили все унаследованные контроллеры веб-api с ApiController (например, MyWebApiController: ApiController) на контроллер (превратив их из веб-api в контроллеры mvc), он, вероятно, все равно работал бы так же. Там могут быть различия, если вы делаете загрузку файлов или другие вещи, но простые/базовые команды crud, скорее всего, не увидят никаких проблем.

Итак, вопрос в том, имеет ли это значение? Вероятно, нет, но это делает много предположений о проекте, который я никогда не видел. Есть ли преимущества? Если это простой автономный проект, который является только веб-интерфейсом, то единственное преимущество, которое я вижу, - это только один проект/решение для работы (для меня это не имеет большого значения в любом случае).

Что касается того, что это хорошая практика, то если бы вы создавали приложение, которое имело бы несколько пользовательских интерфейсов (например, веб -, настольный, мобильный) Я, вероятно, не стал бы жестко связывать проект web UI со слоем API, как это было сделано, я бы разделил его на отдельные проекты и представил API как свой собственный проект, а MVC-как свой собственный проект.

Это может быть слишком далеко вниз по пути разработки, что попытка разделить это на части просто считается техническим долгом на данный момент для вас, но я сомневаюсь, что использование контроллеров web api в проекте mvc приносит какой-либо вред.


RohitVaidya

Спасибо Дэвиду за подробное объяснение моего вопроса.

Да, это автономное приложение, поэтому наличие веб-API в одном проекте не причиняет никакого вреда.

Однако если он работает одинаково даже после изменения всех унаследованных контроллеров web api с контроллера API на обычный контроллер, то я думаю, что мне нет смысла писать контроллер Web API вместо обычного контроллера.

Как правило, основная цель написания web api заключается в предоставлении сервисного интерфейса для различных приложений, и здесь, в моем примере, мы не обслуживаем его. :-)