Вопросы по программированию баз данных с Delphi XE2 - PullRequest
1 голос
/ 15 октября 2011

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

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

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

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

Является ли DBExpress бесплатным или я должен платить за дополнительную функциональность?

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

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

Ответы [ 2 ]

1 голос
/ 25 октября 2011

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

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

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

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

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

Что касается Книг, то лучшим вариантом всегда будут Delphi Handbooks Марко Канту (в частности, книга XE, которая все еще в значительной степени применяется в терминах DataSnap для XE2).

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

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

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

0 голосов
/ 22 декабря 2011

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

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

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

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

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

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

...