Delphi: Интернет-источник данных - PullRequest
2 голосов
/ 15 марта 2011

У меня есть клиентское приложение базы данных, которое работает в локальной сети, подключенной к базе данных SQL Server в сети.Теперь я хочу перевести базу данных в режиме онлайн на размещенный в сети Интернет-сервер, однако продолжение нормального подключения SQL ADO к ней через Интернет сопряжено с проблемами.

Что вы, ребята, используете для предоставления данных через Интернет?и желательно все же иметь возможность использовать средства управления базами данных на стороне клиента?

Ответы [ 5 ]

4 голосов
/ 15 марта 2011

Веб-сервисы (SOAP и WSDL). Последние версии Delphi способны создавать и использовать веб-службы.

DataSnap также полезен, но я думаю, что он является «средним уровнем» в вашей архитектуре базы данных, и ваш средний уровень, вероятно, общается с вашими веб-клиентами и клиентами настольных компьютеров через мыло, хотя вы можете перейти непосредственно к datasnap, и есть выгоды для любого из них. Реализация Direct Custom Soap (в отличие от использования архитектуры DataSnap поверх SOAP) предпочитается многими из-за огромного количества языков и платформ, которые взаимодействуют с ее использованием. Хотя он способен работать «через Интернет», среди некоторых есть обоснованная жалоба на то, что он не поддерживает SSL, по крайней мере, не очень хорошо (вам нужно проделать большую работу, чтобы добавить SSL). Существуют также конкурирующие сторонние фреймворки от RemObjects, которые многие считают полезными, которые являются коммерческими и, хотя и недешевыми, являются хорошей сделкой.

Обновление: Было бы глупо напрямую подключать базу данных SQL напрямую к Интернету. Но это почти то, что вы просите. Вы либо создаете средний уровень и выставляете только то, что хотите выставить, через интерфейс, который позволяет только то, что вы хотите в вашу базу данных, из тех, которые вы хотите разрешить, или вы отступаете на 100%, «атакуйте мою базу данных напрямую» Дружелюбный интернет, ты ". Я действительно сомневаюсь, что даже сами Microsoft порекомендовали бы вам напрямую предоставлять доступ к SQL через Интернет. Так что это средний уровень, или прямой, ваш выбор. Если вы хотите использовать в своем решении средства управления данными, вы можете это сделать, и я бы порекомендовал DATASnap с использованием SOAP.

2 голосов
/ 15 марта 2011

Вы можете настроить VPN между сервером и клиентами, и вы сможете использовать одно и то же приложение для подключения к облачному SQL-серверу по безопасному каналу.

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

Сервер Windows поставляется с компонентами VPN, у вас также есть варианты с бесплатным / открытым исходным кодомвроде OpenVPN .

2 голосов
/ 15 марта 2011

Если вам нужно / вы хотите использовать стандартные элементы управления с поддержкой БД, вам нужно использовать инфраструктуру, которая способна отображать данные на стороне клиента-потомка TCustomDataset. Эта структура в Delphi - Datasnap, хотя есть и другие (то есть RemObjects). Чистые веб-сервисы через SOAP позволяют запрашивать данные с сервера, но весь интерфейс зависит от вас, SOAP позволяет вызывать удаленные функции, и ничего более, он не поддерживает «интерфейс, ориентированный на БД» (отправка запросов и возврат наборов результатов). ), в то время как Datasnap & C. делают.

Единственная проблема - Datasnap в Delphi 2007, использующий старые технологии, которые были заменены новой реализацией, начиная с 2009 года. В Delphi 2007 Datasnap поддерживает HTTP-прокси для своей реализации DCOM (через dll ISAPI, но у IIRC могут возникнуть проблемы с последними версиями IIS) и реализацию SOAP (с использованием TSOAPConnection). Они оба позаботятся о том, чтобы инкапсулировать запрос и ответ в специальном формате, чтобы обеспечить стандартный доступ к данным delphi db. С 2009 года появилась новая реализация, которая может использовать различные транспорты (включая HTTP), но IMHO стала несколько полезной только начиная с XE (особенно из-за проблем безопасности и прокси). Вам придется изменить все компоненты доступа к данным и проверить дизайн приложения.

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

2 голосов
/ 15 марта 2011
1 голос
/ 15 марта 2011

Поскольку вы используете SQL Server, вам следует рассмотреть платформу Azure, поскольку она содержит облачные базы платформы SQL Server.

Самостоятельно размещенный сервер Windows + SQL требует лицензий как для вашей, так и для вашей собственной администрации.

Azure поддерживается через библиотеки клиента MS, а веб-службы Azure находятся в стандартном наборе управления более новых версий Delphi.

...