Подключение настольных приложений Windows к удаленному местоположению - PullRequest
1 голос
/ 15 октября 2010

Я хотел бы знать, как я могу подключить удаленные офисы к центральной базе данных.

Вот сценарий:

Офис с несколькими пользователями, работающими над приложением для рабочего стола Windows

Это приложение получает данные из базы данных на офисном сервере.

Теперь 1 или более удаленных (офисы, магазины и т. Д.) Должны иметь доступ к одним и тем же данным.

Как можномы достигаем этого?

Иногда нам нужно в реальном времени

Иногда это не так важно.

Ответы [ 4 ]

6 голосов
/ 15 октября 2010

Из-за безопасности вам нужен какой-то промежуточный уровень между клиентом и базой данных.Выставлять базу данных прямо в интернет очень опасно.Многие приложения используют SOAP в этом сценарии, потому что он широко применяется.Вы создаете сервис SOAP, определяете протокол и функции, а затем клиент вызывает его.Другие варианты: создание службы / сервера на основе REST, которая делает то же самое, или даже создание простого уровня TCP / IP.Возможны следующие варианты:

  1. Сервис SOAP в качестве среднего уровня
  2. Средний уровень REST на основе HTTP
  3. Средний уровень на основе XML RPC
  4. Чистый TCP/ IP среднего уровня
  5. VPN-соединение для клиентов

Если вы делаете VPN-соединение с клиента, вы можете иметь прямой доступ к базе данных, но это, вероятно, для клиентовособенно если они не из вашей компании.Я лично, вероятно, пошел бы с 2 или 3, но только потому, что я не очень люблю SOAP.Большинство, если их спросить, предпочли бы SOAP, я думаю.

РЕДАКТИРОВАТЬ:

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

3 голосов
/ 15 октября 2010

Существует 3 возможных пути решения:

  1. Напишите обычное настольное приложение и опубликуйте его с помощью служб терминалов (служб удаленных рабочих столов) или Citrix XenApp (или сделайте его веб-базой)
  2. (Пере) разработка приложения для работы через (возможно медленное и / или ненадежное) WAN-соединение)
  3. Внедрить какую-либо репликацию базы данных и внедрить отдельную базу данных (сервер) в каждом офисе
1 голос
/ 15 октября 2010

Вы можете легко использовать DataSnap или RemObjects , чтобы обернуть и представить вашу существующую базу данных в качестве сервера среднего уровня, а затем написать на нее клиентов.Для подключения я бы настоятельно рекомендовал VPN-соединение между вашими пультами и вашим средним уровнем.Таким образом, вам не нужно больше беспокоиться о безопасности канала связи ... если только передаваемые вами данные не являются данными низкого риска (ничего не стоят).

Возможно, вы захотите очень хорошо ознакомиться с TClientDataset .Это дает вам возможность управлять вашими удаленными системами без доступа к базе данных master, а также сокращать объем трафика, передаваемого по проводам (вы можете фильтровать и сортировать локально).

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

1 голос
/ 15 октября 2010

Один из критериев выбора - скорость соединения, надежность и стоимость между удаленными офисами и центральным сервером. Если скорость адекватна, надежность в порядке, а затраты невелики. VPN - это путь. Это не потребует изменений в вашем приложении (если оно не написано для загрузки всей базы данных ...). Оно также будет обрабатывать аутентификацию и шифрование ваших данных. Если VPN не является выбором, вы можете использовать один из удаленных методов в ответе Runner, но они обычно требуют перепроектировать (и переписать) приложение, эта модель немного отличается от «классического» клиент / серверного приложения. Основанные на HTTP (S) обычно не имеют проблем с брандмауэрами, но обычно должны быть без сохранения состояния и не поддерживать обратные вызовы, для безопасности нужны генерация и развертывание сертификатов. Другая работа с другими протоколами (например, DCOM, dbExpress Datasnap) является более гибкой, но может быть более сложной для установки и / или правильной защиты. Если соединение недостаточно быстрое и надежное или слишком дорогое, может потребоваться правильная синхронизация локальных кэшей с удаленным сервером, что может быть непросто сделать в зависимости от потребностей приложения.

...