2016-10-12 5 views
0

У меня есть два приложения:Как синхронизировать данные между двумя системами?

  1. ASP.NET MVC сайт электронной коммерция
  2. приложение VB6 управляет продукцию, складами, клиентами, поставщиками, заказами и счетами-фактурами. Он используется физическими магазинами.

Прямо сейчас эти два очень сильно связаны.

Операции, которые используют базу данных:

  • Там есть задача, которая периодически запускается на веб-сайте и проверяет базу данных VB6 приложения для любых изменений продукта (в основном цены и акции). Если есть какие-либо различия, база данных сайта обновляется с информацией из приложения VB6;
  • Существуют также аналогичные задачи для синхронизации состояния заказа и доступных ваучеров подарочной карты.

Операции, использующие объекты VB6 из .NET:

  • Когда заказ размещен на веб-сайте, он также сохраняется в приложении VB6.
  • Когда продукт обновляется администратором сайта (имя, описание, родительская категория и т. Д.), Он также обновляется в приложении VB6.
  • Когда клиент обновляет свою личную информацию, это также сохраняется в приложении VB6.
  • Когда клиент регистрируется на веб-сайте, веб-сайт запрашивает приложение VB6, если у клиента есть карточка лояльности и получает его очки вознаграждения.

Я начал использовать веб-API для недавно разработанной функции вознаграждения. Когда заказ выставляется в приложении VB6, клиент получает/теряет очки вознаграждения, и они отправляются на веб-сайт через веб-API.

Есть также другие операции, которые должны быть синхронизированы и не являются на данный момент:

  • изменения порядка (добавить/удалить продукты, скидки, стоимость доставки, продукт изменения количества и т.д.)
  • (стоимость НДС, стоимость бонусных баллов, дисконтные значения и т. д.)

Вопрос: что было бы лучшим способом синхронизации данных между этими приложениями, более свободно связанным способом? Каковы были бы преимущества/недостатки REST Services и Service Bus?

ответ

1

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

Добавление служебной шины поверх вашего REST API даст вам дополнительную развязку и позволит множеству других моделей производителя/потребителя вмешиваться. Это действительно совершенно отдельно от проблемы, которую вы пытаетесь решить, но просто добавление уровня WebAPI для сохранения данных сделает вашу жизнь намного лучше.

+0

Я думал, что мне нужна служебная шина, чтобы получать данные даже в том случае, если какое-то приложение не работает некоторое время. Я бы не хотел реализовывать очередь в обоих приложениях, чтобы убедиться, что данные отправлены правильно. Сервисная шина сделает это для меня. Я прав? –

+0

Почему это имеет значение, дело в том, что оба приложения читают и записывают в webAPI. Если кто-то не работает, они просто не записывают никаких новых данных. –

+0

Веб-интерфейс является частью веб-сайта, поэтому, когда сайт по какой-либо причине не работает, приложение VB6 не может отправлять данные. Теперь он проверяет ответ, а в случае сбоя экспорта данных он пытается отправить его до тех пор, пока он не удастся. Вот почему я думал, что система очередей будет лучше. –

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