Поэтому мы решили перестроить приложение в нашем бизнесе, поскольку оно находится в Sharepoint без видимой причины, кроме как использовать функцию индексации документов.
Мы решили создать наше новое приложение в ASP.NET MVC3 с использованием C #. Мы пытаемся определиться с общей архитектурой.
Я думал что-то вроде следующего:
- Core - доменные объекты (poco's)
- Данные - Entity Framework (сначала код) или nHibernate, представленные в качестве репозиториев
- Сервис - этот уровень будет инкапсулировать любую бизнес-логику и действовать как фасад. Это может быть разбито на дополнительные модули.
- UI (MVC) - Контроллеры и представления.
Все это будет связано вместе с помощью DI-контейнера, такого как Autofac.
Мы также хотим иметь возможность писать модульные тесты, поэтому мы должны иметь возможность макетировать наш сервисный уровень и хранилища данных для тестирования наших контроллеров и т. Д.
Итак - это звучит как хороший общий архитектурный шаблон для довольно стандартного бизнес-приложения?
Идея состоит в том, что данные, сервис, пользовательский интерфейс могут ссылаться на Core, но пользовательский интерфейс будет действительно общаться только с компонентами уровня сервиса и не знать о деталях реализации данных и т. Д.
Мой следующий вопрос заключается в том, что в какой-то момент мы захотим показать некоторые функции вне нашего приложения, например, WCF Services / ASP.NET Web API.
Что, на ваш взгляд, будет лучшим вариантом. Построить сервисный уровень в WCF и вызвать его из наших контроллеров в MVC? Если это так, будет ли это тестируемым или нам нужно написать оболочку для веб-службы? Может ли это занять много времени?
OR
Продолжить написание сервисного уровня (т. Е. Service1.CreateObject (object obj);) в классах C # и создать веб-сервис как отдельный объект, предоставляющий только те функциональные возможности, которые нам нужны, которые вызывают наш сервисный уровень?
Любые мысли были бы очень полезны, так как я не знаю, какой будет лучший маршрут.