1

Я desgined моего приложения ASP.NET MVC с помощью домена Driven Design, и я получил следующие проекты:ASP.NET MVC Enterprise DDD Архитектура и WCF слой

  • MyApp.Core - ядро ​​приложения, содержит модели домена и т. д.
  • MyApp.Infrastructure - приложение main infrastrucutre, содержит реализацию для хранения модели домена (РЕПО и т. д.) с использованием EF.
  • MyApp.Web.Core - модели предметной области, услуги декларация (интерфейсы) и таких только для веб-сайтов (например, IFormAuthenticationTicketSupplier, IOAuthAuthenticationProvider и т.д.)
  • MyApp.Web.Infrastructure - веб-реализация
  • MyApp.Web.UI - Стандартное приложение ASP.NET MVC.

Это приложение должно использоваться предприятием с несколькими серверами и т. Д. В настоящее время приложение вызывает службу на уровне инфраструктуры на контроллерах, использующих репозитории и EF. Я могу подключиться к серверу БД с помощью строки подключения.

При поиске этой темы в Google я читал, что некоторые попытки, предпринятые при создании корпоративного приложения, создают сервер приложений и веб-сервер. На сервере приложений - сохранение службы WCF и на веб-сервере, просто вызывающем его.

Я хотел бы знать, должен ли я сделать это (если создание службы WCF является правильным и требуемым соглашением при работе с предприятиями): - Почему кто-то не просто использует Службы в контроллерах и вместо этого использует API? - В случае, если я использую API, это не замедлит ответ? поскольку даже если компьютеры находятся в одной сети, я все же открываю HTTP-запрос. - Если я должен использовать WCF или ASP.NET WebAPI?

Благодарим за отзыв и помощь!

ответ

3

Во-первых, в отношении ваших проектов есть необходимость разделить MyApp.Web.Core, MyApp.Web.Infrastructure и MyApp.Web.UI? Конечно, они могут быть отдельными обязанностями, но иногда инкапсуляция козырей в зависимости от зависимости. Вы всегда можете оставить их в отдельных папках и пространствах имен. Я бы не извлек что-то в отдельный проект, если мне не понадобилось ссылаться на него как на библиотеку из других источников.

Что касается обслуживания приложений, это также зависит от ваших потребностей. Если единственным местом, которое вызовет эту службу приложений, является приложение ASP.NET MVC, то нет необходимости извлекать службу приложения. Однако есть некоторые преимущества. Во-первых, вам не нужно беспокоиться обо всех зависимостях, необходимых для службы - вы просто ссылаетесь на нее через Url. И, конечно же, у вас есть возможность вызвать службу из других мест, кроме контроллера, хотя контроллер MVC может также действовать как чистый HTTP-сервис. У вас также есть возможность развернуть обновления для конкретной службы, не отпуская приложение MVC. Но у вас есть бремя поддержания отдельного сервиса. Если вы идете по этому маршруту, перейдите в WebAPI, WCF - это слишком большая абстракция.

+0

Спасибо за ваш комментарий. О разделении - я должен был упомянуть об этом, я сделал это, потому что я хочу использовать этот проект в будущем для приложений Windows 8, WP, iOS (Mono), Android (Mono) и т. Д. Поэтому я думал, что это будет хороший подход. Из-за этих приложений - я думаю, что мне нужно будет использовать WebAPI или WCF в будущем (в этом случае я буду разрабатывать приложения для iOS, Android и т. Д., Вы по-прежнему рекомендуете WCF?). Будет ли использование WebAPI или WCF замедлять производительность (если предполагается, что служба находится в одной сети)? – OzB

+1

Для служб HTTP я рекомендую WebAPI через WCF. WCF для HTTP довольно ограничен и неестествен по сравнению с WebAPI.И процесс-хоп всегда будет замедлять производительность, но это не должно быть проблемой. Фактически вы можете заставить HTML-клиент напрямую обращаться к службе WebAPI для определенных вещей. – eulerfx

+0

Спасибо, поэтому я выберу WebAPI. Последний вопрос: не могли бы вы подумать, что будет нормально использовать эту службу как на стандартных контроллерах веб-приложений, так и в WebAPI? поэтому веб-приложение не будет замедлено из-за HTTP-запроса, но все остальные приложения (iOS, Android, AJAX-вызовы) будут использовать WebAPI? – OzB

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