@WhiteNinja

Как грамотно организвать архитектуру комплекса из нескольких систем?

Добрый день!

Уважаемые коллеги, прошу консультации в вопросе организации архитектуры комплекса систем.

Для примера, есть три системы (на деле систем может быть десяток):

1. Система управления складом (SecondApplication)
2. Система управления клиентами (FirstApplication)
3. Система управления и настройки (MainApplication)

897f0c75bc8742349ae2cc97df93b2ed.png

Система управления и настройки (MainApplication) - служит для задания иерархии подразделений в организации, списка сотрудников, установки им разных прав доступа в разных системах (FirstApplication, SecondApplication), собирает агрегированную информацию и других систем. Т.е. с одной стороны служит виртуальным рабочим пространством для каждого сотрудника, а с другой стороны это "единый пульт управления" для администраторов и руководителей.

Каждая из систем состоит, на данный момент, из трех уровней Data Access Layer, Bussines Logic Layer, и Presentation Layer.
База данных на данный момент одна, для всех систем, но должны быть возможность разместить таблицы каждой системы в разных БД, на разных серверах.

В MainApplication присутствуют такие сервисы, как
- PositionService (с CRUD методами) - сервис отвевчающий за должности;
- DepartmentService (с CRUD методами) - сервис отвечающий за отделы;
- SystemRoleService (с CRUD методами) - сервис отвечающий за роли в системах;
и т.п.

Конечно в какой-то момент в приложениях FirstApplication и SecondApplication понадобилось получить, например, все должности текущего пользователя, т.е. в теории - воспользоваться методами PositionService из BLL системы MainApplication. На данный момент это сделано дублированием сервиса и сущностей в BLL и DAL FirstApplication и SecondApplication, что конечно же не правильно, так как в случае изменения сущности Position (должность к примеру) или изменению метода GetPositionsByUserId, нужно менять его в трех местах - MainApplication, FirstApplication, SecondApplication.
Потребность вызова "общих функций" стала расти в разных системах, все стало пухнуть и стало понятно, что дублирование методов до хорошего не доведет.

Как выход из этой ситуации - веб сервисы на основе wcf, или ASP.NET WEB API. Прочитав информацию о wcf, все равно осталось много белых пятен и ряд вопросов:
- намного ли медленнее будет работать подход с wcf сервисами, чем текущей подход (дублированием)?
- если в примере используется несколько сервисов-классов PositionService, DepartmentService, RoleService и т.п, это будут отдельные wcf-сервисы?
- какие слои получаются для каждой системы: DAL <-> BLL <-> WCF <-> ASP.NET MVC ?

Огромная просьба проконсультировать в этом вопросе, возможно я смотрю не на те подходы (WCF, API).
Как грамотно организовать взаимодействие между несколькими системами в комплексе систем?

Заранее благодарю за любую помощь!
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 1
AxianLTD
@AxianLTD
Ключевое слово enterprise service bus, но есть сильные сомнения что ваша контора в этом нуждается и потянет по ресурсам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы