Вопросы по программированию баз данных с помощью Delphi XE2

Я знаю и слышал о том, что существует множество способов подключения к серверу dabatase в Delphi (XE2): сокеты, привязка данных, веб-службы, модуль удаленных данных (¿?), DbExpress и другие сторонние серверы, такие как UniDAC. Обычно я использую UniDAC, но мне хотелось бы знать, когда и как их правильно использовать. Судя по всему, DataSnap - флагман в Delphi. Я не нашел полезных руководств, отвечающих на эти вопросы. Итак, для приложения Win32, какой вариант рекомендуется для разработки клиентского приложения, учитывая: безопасность, гибкость и масштабируемость?

Есть ли способ сделать прозрачным для клиентских приложений Win32 изменение доступа к базе данных? То есть, если бы у меня было распределено 100 клиентских приложений, и я хочу изменить пароль для доступа к базе данных, было бы проблемой обновлять каждое клиентское приложение.

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

Я пытался протестировать DBExpress (в комплекте с Delphi XE2) и AnyDAC для подключения к моей удаленной базе данных MySQL, но у меня проблемы с VendorLibs. Есть ли удобный способ решить эту проблему без необходимости устанавливать все СУБД, которые я хочу протестировать?

DBExpress бесплатный, или я должен платить за дополнительные функции?

Кто-нибудь может порекомендовать очень хорошие книги, чтобы узнать о DataSnap, приложениях промежуточного слоя и т. Д.?

Заранее спасибо.


person Ουιλιαμ Αρκευα    schedule 15.10.2011    source источник
comment
Вы хотите сказать, что храните пароль базы данных на клиентах? : -O С точки зрения безопасности это большой риск.   -  person Mad Hatter    schedule 22.12.2011


Ответы (2)


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

DataSnap предоставляет несколько различных решений для подключения клиент / сервер: Socketed, REST и т. Д., Поэтому вам решать, что лучше всего для вашей системы (систем).

DataAbstract представляется одним из (если не САМОМ) самых популярных многоуровневых приложений для обработки данных на рынке, и я знаю, что многие разработчики доверяют ему по разным причинам (одна из них - безопасность, другая - простота использования).

Я всегда утверждал, что если ваше клиентское приложение требует прямого подключения к базе данных, вы делаете это неправильно!

Если вам нужна дополнительная информация о DataSnap, на недавнем мероприятии CodeRage было несколько интересных сессий. Вы можете загрузить / посмотреть любой из этих сеансов (бесплатно) на дочернем сайте Embarcadero CodeCentral.

Что касается книг, то лучшим выбором всегда будут Справочники Marco Cantú по Delphi (в частности, книга XE, которая по-прежнему в значительной степени применима с точки зрения DataSnap для XE2).

Важно помнить, что DataSnap поставляется только с выпусками Delphi Enterprise, Ultimate и Architect ... он недоступен в Pro или Starter!

Тем не менее, вы всегда можете использовать ODBC на своем собственном уровне сервера для подключения к любой базе данных ODBC (которая включает MySQL, MSSQL, Oracle ... даже MS Access, если вам хочется получить удовольствие от «взрыва из прошлого»), а затем использовать любую сетевую решение для сокетов, которое вам нравится (например, Indy, которое поставляется с Delphi [все редакции] в стандартной комплектации), чтобы связать ваши клиентские приложения с уровнем сервера! Посмотрите на TADOConnection, TADOQuery и т. Д.

Надеюсь, эта информация окажется для вас полезной!

person LaKraven    schedule 25.10.2011
comment
Кстати, аватар, который вы используете ... Я сделал это для @RRUZ;) - person LaKraven; 06.11.2011

В зависимости от реальных потребностей приложений вы должны выбирать между двухуровневым (база данных и толстый клиент) или многоуровневым (база данных, сервер приложений, тонкий клиент) решением. Двухуровневое решение проще разработать, а двухуровневое сложнее.

dbExpress, UniDAC и т. д. являются библиотеками доступа к БД. Datasnap, веб-сервисы и т. Д. Представляют собой фреймворки RPC (удаленного вызова процедур), которые можно также использовать для доступа к удаленным данным (с помощью библиотеки доступа к базе данных на стороне сервера). Сокеты - это просто устройства связи очень низкого уровня.

Таким образом, вы должны использовать стек этих компонентов для создания уровня доступа к базе данных. Например, вы можете использовать dbExpress для доступа к БД и Datasnap в качестве среднего уровня.

С точки зрения безопасности Datasnap очень небезопасен, но реализация DCOM из-за используемых алгоритмов и управления паролями / сертификатами. Если вы храните пароли к базе данных в своих клиентах, у вас все равно есть большая проблема с безопасностью. Существуют такие способы, как аутентификация операционной системы и т.п., которые позволяют подключаться к базе данных с использованием защиты учетной записи пользователя. Использование единственного «соединения» с базой данных может означать потерю некоторой (или большей) безопасности, потому что контроль доступа к базе данных будет ограничен разрешениями этого пользователя соединения. Также аудит может быть потерян.

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

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

person Community    schedule 22.12.2011