2015-08-14 5 views
0

Это скорее вопрос дизайна, чем проблема. Итак, вот сценарий: у вас есть приложение asp.net 5 с контроллером webapi и оно предоставляет данные для многих типов клиентов: веб-приложений, ios, java-приложений и т. Д. Предположим, что одним из этих клиентов является mvc-контроллер внутри тот же веб-хост и визуальное студийное решение, что и webapi.Вызов WebApi как экземпляра класса

Каковы последствия вызова в webapi в качестве экземпляра класса вместо того, чтобы делать то, что делают другие типы клиентов, - что должно сделать сетевой вызов на основе отдыха? Очевидными преимуществами являются устранение превышения заголовка сетевого вызова и устранение сериализации. Но я хотел знать, какие могут быть некоторые из возможных негативов. Кто-нибудь делал это раньше?

ответ

2

Простым решением может быть то, что вы можете извлечь эту логику в отдельную сборку ... позвольте сказать «Бизнес-логический уровень», чтобы и WebApi, и MVC могли получить к ней доступ.

Это недостаток, что вы не сможете обойтись без MVC и WebApi. Я имею в виду, что использование WebApi в качестве единого интерфейса данных может позволить вам размещать приложение MVC отдельно от места размещения WebApi ... но подход в первом абзаце объединяет оба объекта и заставит вас размещать их вместе, чтобы иметь доступ к данные.

+0

Я полностью согласен с вашим первым абзацем. Можете ли вы объяснить второй абзац больше? – StriplingWarrior

+0

Ну, желание состоит в том, чтобы иметь один интерфейс для доступа к данным, webapi. И все-таки у нас уже есть уровень бизнес-логики по другим причинам. Но я предполагаю, что тогда вопрос станет тем, что будет полезно, если все пройдет через webapi, если вы потеряете аннотации, связанные с http. –

1

Если вы вызываете класс непосредственно, любая работа, выполняемая конвейером HTTP, не будет выполнена. Таким образом, ваш класс API не будет иметь доступ к HttpContext, например.

Также никакие аннотации (атрибуты), связанные с безопасностью или Http, не будут работать, поэтому вашему контроллеру MVC, возможно, придется справиться с этим.

+0

Да действительные баллы. Но было бы не слишком много работы, чтобы добавить тонкую службу обертки, которая будет обрабатывать разбор этих аннотаций, если это необходимо. И в нашем текущем приложении контроллеры mvc уже имеют большую часть аннотаций для безопасности и связанных с ними элементов, поэтому на самом деле нам не понадобилось бы больше всего или всех этих аннотаций. Но независимо от того, что это нужно учитывать. –

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