На работе у нас есть собственная устаревшая CRM-система (в дальнейшем тексте будет называться LS), которая используется на предприятии. LS также используется для хранения некоторых платежей клиентов. LS передается на аутсорсинг, и моя компания не владеет кодом, поэтому (прямые) изменения в коде приложения не могут быть внесены моей компанией. Однако нам принадлежит база данных, которую использует LS, и ее данные. Способ управления данными заключается в использовании единой базы данных и огромного количества таблиц, в которых хранится информация, необходимая для нескольких секторов (например: продажи, финансы, маркетинг и т. д.). Это приводит к сложному графику взаимосвязей и трудным для понимания таблицам.
Теперь у нас есть еще одно приложение (в следующем тексте оно будет называться
ConfApp), которое была разработана собственными силами и использует часть данных из LS, чтобы финансовый сектор мог генерировать своего рода подтверждения клиентских платежей для наших клиентов. ConfApp также используется в бухгалтерском секторе для подтверждения платежей наших клиентов, но у бухгалтерского учета другие потребности и требования по сравнению с финансами. Используя жаргон DDD, мы можем сказать, что существует два разных ограниченных контекста: один для бухгалтерского учета и один для финансов.
В настоящий момент ConfApp запрашивает базу данных LS напрямую, чтобы получить необходимые данные о клиентах и платежах. Поскольку он запрашивает базу данных LS напрямую, ConfApp жестко связан с базой данных, и ему необходимо знать о столбцах и связях, которые его не интересуют, а также о любых изменениях в базе данных LS. Вот почему, следуя практике DDD, я хочу создать отдельную схему для каждого ограниченного контекста в базе данных ConfApp. Каждая схема будет иметь таблицу «Клиент», но только ту информацию, которая интересует этот конкретный ограниченный контекст (например, бухгалтерскому учету требуется один набор адресов электронной почты для клиентов, а финансам — другой набор адресов электронной почты). Для этого ConfApp должен быть интегрирован с LS. Проблема, с которой я столкнулся, заключается в том, что я не знаю, какой тип интеграции использовать, поскольку LS не может быть изменен.
Варианты, о которых я думал, - это следующее:
1. Обмен сообщениями => кажется сложным, поскольку мне нужны только данные, а не поведение. Кроме того, это может оказаться сложной задачей, поскольку, как говорилось ранее, прямое изменение исходного кода LS невозможно. Возможно, создание какого-то приложения-адаптера, которое подключается к базе данных LS и при изменениях отправляет сообщения приложениям-подписчикам. Тем не менее кажется сложным.
2. Интеграция базы данных => Отслеживание изменений или какой-либо другой метод отслеживания изменений базы данных. Должно быть проще, чем Вариант 1, решает проблему получения только тех данных, которые нужны ConfApp, но не решает проблему связи между ConfApp и базой данных LS. Вместо реализации логики синхронизации в ConfApp это мог бы сделать другой проект, но есть ли причина не использовать вместо этого Messaging? И какой метод синхронизации данных использовать? Обе системные базы данных являются экземплярами SQL Server.
Я знаю «теорию» DDD, но мне не хватает практического опыта. Мой проблемный домен выглядит для меня как вспомогательный поддомен. Я не планирую использовать моделирование предметной области (на данный момент) и не спрашиваю об этом. Я спрашиваю конкретно о системной интеграции.
Подробнее здесь: https://stackoverflow.com/questions/793 ... wo-systems
Интеграция приложений (данных) между двумя системами ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Интеграция двух приложений Flet с основным приложением Flet App Python
Anonymous » » в форуме Python - 0 Ответы
- 52 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Интеграция индекса Llama VectorStoreIndex с агентами Langchain для тряпичных приложений
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-