синхронизировать портал онлайн-заказов с локальной базой данных

StackOverflow https://stackoverflow.com/questions/456107

  •  19-08-2019
  •  | 
  •  

Вопрос

Итак, мы создаем локально размещенную пользовательскую систему торговых точек (на сайте клиента), в которой нет ничего особенного.Это все .NET, C # и SQL Server.

Одним из требований является то, что система позволяет принимать заказы и через Интернет.По различным причинам (надежность / скорость соединения, резервные копии, стабильность, техническое обслуживание и т.д.) веб-портал будет размещен за пределами сайта, в какой-либо стандартной веб-хостинговой компании.

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

Мы придумали решение, которое сводит к минимуму воздействие локальной базы данных на внешний мир:

  • веб-приложение не может получить доступ ни к чему из локального приложения.
  • единственный способ перемещения данных - это push-сообщение, отправленное из локального приложения в веб-приложение.
  • единственное, что может сделать веб-приложение, это отправить уведомление в локальную базу данных о том, что принят новый заказ.Затем локальное приложение подключится к внешнему приложению и получит информацию о заказе.

Итак, мы думали о подобном дизайне, используя веб-сервисы и просто определяя основные действия в веб-приложении, такие как addProduct (id, бла-бла-бла)

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

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

Это было полезно?

Решение

Это тот случай, когда SOA кажется мне применимым.Я бы рассмотрел возможность предоставления определенных функциональных возможностей из POS-приложения с использованием WCF.Для этого необходимо, по крайней мере, следующее:

  • вы можете повторно использовать функциональность POS-системы вместо того, чтобы дублировать ее части на веб-сайте
  • Используя, например, привязку MSMQ, вы можете функционировать в несвязанных ситуациях
  • WCF обладает отличными механизмами безопасности, транзакционной поддержкой и т.д...

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

Чтобы узнать больше о WCF, я могу порекомендовать Программирование сервисов WCF автор : Джувал Лоуи

Другие советы

На самом деле это не прямой ответ на ваш вопрос ...Я бы попытался подключить VPN-туннель между двумя сайтами, а если вы не можете, попробуйте использовать SSH-туннель?

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

@olle Это выглядит многообещающе.Одна из проблем заключается в том, что соединение между онлайн-порталом b / w и локальным приложением ненадежно.Тем не менее, мы по-прежнему хотим иметь возможность принимать заказы, когда ссылка отключена.Итак, я думаю, мы собираемся использовать WCF в веб-приложении для чтения данных с сервера и кэширования их в локальных таблицах.Веб-приложение будет запрашивать данные через промежуточный уровень, который обслуживает содержимое из кэшированных таблиц, если вызов WCF не возвращается в течение короткого времени.Если он вернется успешно, кэш будет удален и заменен результатами.Звучит как план?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top