
Я задал этот вопрос на Staock Overflow, но мне бы хотелось узнать и ваше мнение, поскольку это касается как администрирования, так и кодирования.
У нас есть .net 2-уровневое приложение, где настольная программа общается с базой данных. Мы поддерживаем MS SQL Server 2000, 2005, 2008 и Oracle 9, 10 и 11.
Приложение продается не как упакованное, но довольно близкое. Для нас очень важно, чтобы установка и настройка были максимально простыми, поскольку инструкции по установке обычно предоставляются в письменном виде внутреннему ИТ-отделу заказчика. Наше приложение обычно не рассматривается как критически важное для ИТ-отдела, поэтому нам нужно свести их работу к минимуму.
Теперь мы начинаем получать пожелания по веб-приложению, построенному на тех же данных. Веб-приложение будет размещено нами и предоставлено как SaaS-приложение.
Теперь задача состоит в том, как перемещать данные между веб-приложением и внутренней базой данных клиента. Как я понимаю, у нас есть некоторые требования:
- Мы должны быть готовы справиться с ситуацией, когда база данных клиентов недоступна из DMZ. Я думаю, самое простое решение — инициировать все коммуникации изнутри локальной сети клиентов.
- Как можно меньше настроек брандмауэра. Лучше всего, если мы сможем работать без какой-либо специальной настройки, пока исходящий трафик из локальной сети клиента не блокируется. Если нам нужно что-то изменить в брандмауэре, мы должны иметь возможность документировать, что изменение безопасно.
- Это не обязательно должно быть в режиме реального времени. Перемещение данных партиями каждые десять минут или около того — это нормально.
- Данные перемещаются в обоих направлениях, но это не одни и те же таблицы, поэтому нам не нужно поддерживать слияния.
- Было бы неплохо, если бы нам не пришлось разрабатывать полностью собственный фреймворк.
С нетерпением ждем ваших предложений.
решение1
Я не уверен, почему этот вопрос просто всплыл на первой странице, учитывая его возраст, но если вы все еще ищете предложения... почему бы не установить VPN изнутри клиентской сети к вашим серверам? Используя что-то вроде OpenVPN, вы получаете инструмент, который:
- Для работы требуется только один порт;
- Не требует настройки брандмауэра, если исходящий трафик может быть инициирован с клиентского сайта;
- После подключения вы сможете легко перемещать данные туда и обратно.
Вы можете настроить их так, чтобы обеспечить высокий уровень изоляции между клиентами.
решение2
Если я правильно понял вашу проблему... решение, которое будет быстрым и стабильным для такого рода потребностей, - это создание полного решения на основе Adobe Flex...
Создайте настольный интернет-клиент AiR для ваших клиентов. Этому клиенту необходимо предоставить необходимые разрешения для данных на клиентской машине {в случае ограничений}, и этот клиент будет безопасно и периодически взаимодействовать с вашим веб-сервисом по вашему желанию.