2015-12-29 3 views
-1

Я разрабатываю приложение Windows с использованием C# в .NET., Он работает правильно., Но клиент хочет получить на веб-сайте также. Как это возможно.? Веб-сервер и локальная работа с одной и той же базой данных. Я хочу синхронизировать две базы данных одинаково в каждом 15-секундном интервале или обновлять время данных? Пожалуйста, дайте мне решение этой проблемы.О базе данных Синхронизация

+1

вы можете использовать веб-сервис или посмотреть в wcf, и если его единственный выход, то это кажется простым. –

+1

, если 'Web Server' и' Windows app' используют одну и ту же базу данных, зачем их синхронизировать? –

+0

Вы можете просто написать службу jsonrpc в своем решении для сбора информации из db с помощью своих методов. –

ответ

1

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

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

Репликация - большая тема сама по себе, поскольку вам нужно подумать о том, как конфликты вашего разрешения в данных изменяются между двумя копиями базы данных (например, если одна и та же запись изменяется в обеих базах данных).

Вы говорите в своем вопросе, что сайт будет иметь «выход», если это означает, что на веб-сайте отображаются только данные, доступные только для чтения (т.е. без редактирования данных на веб-сайте), тогда репликация будет проще, чем только необходимо скопировать данные на копию базы данных веб-сайта.

Еще одно решение для веб-приложений и настольных приложений для обмена одной копией базы данных. Тогда задаются вопросы, где размещать эту базу данных и как ее получить. На данный момент вы, вероятно, используете подключение к базе данных в своем рабочем приложении для доступа к базе данных. Наименее-кодирующее решение для обеспечения доступности данных в Интернете будет состоять в том, чтобы разместить ваш веб-сайт в сети клиента, чтобы как настольное приложение, так и веб-сайт имели доступ к базе данных. Тем не менее, это означает, что ваш клиент теперь размещает веб-сайт в своей сети, который имеет всевозможные потенциальные проблемы (например, безопасность, объемы трафика, время безотказной работы и т. Д.).

Вы можете написать веб-службу REST (например, ASP .NET WebAPI), чтобы сделать данные доступными для веб-сайта из сети клиента, но опять же, для чего вам потребуется веб-сайт (ну, веб-сервис) из сети клиента.

Альтернативный подход состоит в том, чтобы разместить базу данных в облаке и позволить веб-сайту и настольному приложению получить доступ к ней оттуда. Это устраняет необходимость размещения веб-сайта в сети клиентов. Тем не менее, вы, вероятно, обнаружите, что ваше настольное приложение теперь будет медленнее, чем вам хотелось бы, поскольку оно предназначено для ожидания близких данных и быстрого доступа. Если вы написали настольное приложение с асинхронной структурой доступа к данным, которая будет менее проблематичной, но если нет, вы, вероятно, обнаружите, что настольное приложение замедляется.

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

Еще одно решение заключается в том, чтобы локально размещенная база данных была доступна удаленно размещенному веб-сайту через TCP (SQL Server может это сделать), но опять же есть проблемы с безопасностью, которые необходимо учитывать, и снова вам нужно подумать о том, интернет-соединения надежны и достаточно устойчивы, чтобы предоставлять данные для веб-сайта в режиме реального времени.

Чтобы получить правильное решение, вам необходимо рассмотреть (среди прочего), будут ли данные редактироваться как на веб-сайте, так и в приложении, сейчас или в будущем, а также подумать о вероятном числе пользователей веб-сайт сейчас и в будущем. Это дискуссия, в которую вы должны включить клиента.

+1

Отличные очки, все они, и спасибо за усилия. Однако это делает этот вопрос настолько плохим: это то, что мы называем «слишком широким». Есть слишком много возможных решений, каждый из которых требует подробного ответа и предоставления ссылок на другие ресурсы, черт, для каждого из ваших абзацев вы можете купить несколько книг по этому вопросу. Фактически, для каждого из предметов есть вопросы. OP должен показать свое исследование и свои аргументы (т. Е. Ответить на комментарии, отправленные на вопрос), прежде чем этот вопрос будет даже удаленно подотчетен. – CodeCaster

+1

Да, я полностью согласен, я действительно просто пытался продемонстрировать, что их огромное количество, чтобы рассмотреть и дать OP некоторые вещи для исследования. – tomRedox

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