Как я могу реализовать доступную через Интернет систему с Delphi? - PullRequest
4 голосов
/ 29 октября 2010

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

Система будет win32, а не веб-базой, база данных будет просто в офисе и доступна где угодно. Я не уверен, что это опасный подход с точки зрения безопасности, я открыт для предложений

База данных будет SQL Server, а система будет внедрена в Delphi 6

Кто-нибудь знает, как мне начать это? Мне нужно будет учесть и блокировку записей.

Если бы кто-нибудь мог предоставить ссылки на хорошие статьи, которые были бы оценены.

Приветствия

Пол

Ответы [ 4 ]

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

ИМХО, самый простой способ для вас - создать VPN, защищающую вашу базу данных через Интернет.

Безопасность будет очень хорошей, поскольку доступ к базе данных будет доступен только через доверенное VPN-соединение.

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

Таким образом, ваш код Delphi будет подключаться к базе данных как обычно, используя TCP /IP-соединение через защищенный туннель VPN.

Нет необходимости добавлять дополнительные артефакты только для Delphi, такие как компоненты Indy и подобные.И вы сможете подключиться к своей базе данных для не-Delphi-клиента, что может быть хорошей идеей для использования какого-либо инструмента просмотра баз данных.

2 голосов
/ 29 октября 2010

Предоставление базы данных в Интернете - это угроза безопасности. Недостатки безопасности могут быть легко использованы удаленно.

Решения:

  1. VPN, как сказано в других ответах. Простой и безопасный, но требует некоторой настройки на обоих конечных точках (клиентах и ​​VPN-серверах) и может потребовать соответствующего программного обеспечения на сервере - или VPN-маршрутизаторе / устройстве - и на клиенте, а также, если вы не используете стандартную VPN протоколы).
  2. Многоуровневое приложение, в котором только сервер приложений подключен к Интернету. Вам все равно нужно правильно защитить сервер приложений и канал передачи. Может потребовать меньше настроек на стороне клиента. Delphi 6 предлагает Datasnap в качестве n-уровневой библиотеки (она также все еще поддерживает CORBA, но она была отброшена начиная с D7). DCOM не очень дружествен к брандмауэрам (но может быть настроен для работы через них), но может защитить канал самостоятельно, другие два параметра (сокет и HTTP) проще в настройке, но немного менее безопасны (они работают с использованием прокси DCOM, таким образом, идентификация клиента теряется, и для защиты канала требуется собственный код или сертификаты.)
  3. Третье решение может состоять в том, чтобы позволить пользователю подключаться удаленно через удаленный рабочий стол, но для этого требуются лицензии и машина, способная выдержать нагрузку удаленных сеансов.

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

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

На самом деле, существуют десятки возможных методов, в зависимости от вашего опыта, предпочтений и инструментов, которые у вас есть. Я бы посоветовал вам использовать ADO для подключения к базе данных, а не BDE. Для этого вы можете использовать компоненты ADO, которые являются частью Delphi, или импортировать библиотеку типов msado15.dll в ваш проект, чтобы использовать необработанные вызовы API ADO. Последнее потребует гораздо большего опыта!
SQL Server может просто выставить себя в Интернете, хотя это создает угрозу безопасности. Тем не менее, кому-то, кто хочет получить к нему доступ, понадобятся имя пользователя и пароль для подключения, и вам нужно будет открыть порты, которые использует SQL Server. Но с технической точки зрения, чтобы использовать ADO через Интернет, все, что вам нужно знать, - это IP-адрес работающего сервера, а также данные для входа. Однако это риск для безопасности. По этой причине большинство разработчиков не предоставляют SQL Server для базы данных, а просто пишут веб-службы, чтобы обернуть вокруг них определенные функции базы данных.
Блокировка записей - это то, что SQL Server сделает для вас, и если используя транзакции, вы можете сделать его еще более безопасным.

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

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

Вы, вероятно, имеете в виду систему клиент-сервер, которая взаимодействует через TCP / IP.

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

...