2010-10-14 2 views
1

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

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

Управление с несколькими пользователями, работающими на окна настольного приложения

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

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

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

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

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

+0

Вопрос с тегом Delphi, но вы упомянули WinForm, который выглядит как .NET, возможно, вам следует пометить его delphi-призму или, возможно, это не связано с delphi. – jachguate

+0

какая база данных вы используете? – jachguate

+0

Когда я говорю о форме выигрыша, я имею в виду не веб-сайт. База данных, я надеюсь, что это не относится к удаленному соединению. – Jlouro

ответ

1

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

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

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

+0

Я давно хотел экспериментировать с DataSnap, это может быть подходящее время для этого. TClientDataSet Я уже использую его как в небольших инструментах, которые имеют XML-файл в качестве «таблиц данных» Мне это нравится. Какова скорость DataSnap через Интернет? VPN здесь не является вариантом. – Jlouro

+0

Скорость передачи данных через Интернет - это скорость вашего интернет-соединения. Если скорость важна для вас, вам нужно закодировать средний уровень с учетом этого, но если ваше соединение происходит медленно, с высокой задержкой или ненадежностью, и оно не соответствует вашим требованиям к производительности, вам нужен другой подход. Прежде чем решить, какой метод использовать, вы должны установить требования к производительности (в обоих направлениях) и посмотреть, может ли соединение соответствовать им. В противном случае вы можете закончить разработку идеального приложения, чтобы обнаружить, что соединение не справляется с этим. – 2010-10-16 13:07:50

+1

Существуют сетевые симуляторы, которые могут помочь вам протестировать приложение в среде, имитирующей реальную (скорость, надежность и т. Д.). Не кодируйте и не тестируйте его в чистой локальной сети Ethernet с 1 ГБ, а затем развертывайте его на переполненной линии ADSL и т. П. – 2010-10-16 13:09:36

6

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

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

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

EDIT:

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

1

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

3

Есть 3 возможных решений маршруты:

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

Хороший ответ, я забыл упомянуть пункт 3. Еще вам нужна связь между офисами для тиражирования. Таким образом, у вас все еще есть одна и та же проблема, но да, вы многое получаете в отделе скорости и надежности подключения. – Runner

+0

Если у вас нет опыта работы в 2 или 3, я действительно рекомендую 1, так как его легко реализовать. – Remko

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