2013-03-20 3 views
1

У меня довольно сложное решение, которое я реализовал с помощью ASP Web API, среди прочих. Сейчас у меня есть 3 проекта в моем решении, которые стоит обсудить. Один из них - это WebAPI, содержащий только api-методы. Другие два являются бэкэнд и интерфейсом для моего приложения. Бэкэнд использует SPA-подход, загружая в основном пустые оболочки для просмотров и заполняя все, используя API-интерфейс API. Интерфейс, с другой стороны, из-за проблем с SEO был решен, чтобы быть реализован более традиционными способами, так как большинство вещей передается серверной стороне. Мой вопрос в том, возможно ли и хорошая практика просто вызвать методы web api из интерфейсных контроллеров и отправить результаты в представление? Я не вижу смысла дублировать большинство кода в обычных контроллерах, так как все это делается с помощью api.Доступ к API ASP API из обычных контроллеров MVC

Любые образцы этого? Я искал, но не мог найти много.

ответ

2

Если вам нужно позвонить в службу веб-API из кода C# (контроллеры MVC или в другое место), HttpClient или WebClient можно использовать для вызова служб через HTTP.

Если вам нужно просто повторно использовать код, его следует абстрагировать в библиотеку классов (DLL) и ссылаться на проекты веб-API и MVC.

+0

HttpClient/webClient путь был тем, что я искал, googling это дало мне хорошие образцы .... Я думал об абстрагировании ... У меня есть сервисный уровень, веб-api в основном использует его, но у меня нет логики подкачки на уровне сервиса. Это в API. Может быть, я должен просто положить его туда. –

1

Я столкнулся с этой ситуацией и, по крайней мере, использовал контроллеры Web API от контроллеров MVC. Вы можете сделать это просто, создав новые объекты контроллеров Web API, а затем вызывая соответствующие методы от них. Я обнаружил, что этот метод работает нормально, но создает зависимость, которая означает, что ваш веб-API не может измениться, не изменяя также контроллеры MVC.

Мой совет состоит в том, чтобы добавить в свои модели так много функциональных возможностей, что имеет смысл с частичными классами, а если это еще недостаточно, создайте еще один логический уровень, который содержит всю общую бизнес-логику. Вы не должны дублировать логику в своих MVC и веб-API-контроллерах, они должны просто служить в качестве клей для получения обслуживаемых данных.

Смежные вопросы