Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить наличие Embedded версий баз?


Страницы:   1 2 3

Piter ©   (2004-08-10 15:23:00) 

Вот моя программа использует IB/FB базу. Компоненты IB в дельфе сами загружают необходимую gds32.dll - но она может быть как от сервера Ib/FB, так и локальная Embedded (Firebird Embedded, Yaffi embedded). Программе в общем все равно (обрщение идет к локальной базе).
Но дело в том, что у серверной gds32.dll есть аутентификация, а у локальной нету. Так вот вопрос - а как определить какая gds32.dll используется - серверный вариант или локальный? Это для того, чтобы выводить или не выводить окошко запроса логина/пароля


Piter   (2004-08-11 00:14:00) [21]

sniknik ©   (10.08.04 23:49) [25]
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием 'server %';о)), на то он и сервер


Да? А вот когда под сервер Interbae выделена машина - что, разве сама база не хранится на этой же машине? Или я чего не понимаю?

Или теперь модно каждому хранить локальную базу?

Вот запросил Vasya у сервереа данные. Сервер обратился к базе на ВАСИНОМ компьютере и вернул ему данные, так? А потом обратился к серверу Ivan и сервер прочитал базу теперь уже на компьютере ИВАНА и вернул тому данные из ЕГО базы. Значит, теперь так происходит работа серверов?

Ну что же.. учту

sniknik ©   (10.08.04 23:49) [25]
ты не только читай ответы, старайся еще и понять


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


sniknik   (2004-08-11 00:14:00) [22]

> По твоему это верно? :)
все наоборот. база лежит рядом на машине с сервером, а доступ организуется с клиента.
считай от этого(сервера) и все станет кристально ясным. VID тебе другого не предлагал.
есть сервер, подключаешся к нему где бы он не был и работаеш с той базой что на сервере. нету, работай с ембедед, кто тебе не дает? с той базой что лежит локально.


Piter   (2004-08-10 23:57:00) [23]

VID ©   (10.08.04 21:56) [24]
не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов


непонятно кто кого оскорбляет :)

VID, ладно, хватит, давай подумаем.
Значит, база хранится у тебя на компьютере, так? Но ты хочешь использовать удаленный сервер, так?
Значит, тебе придется как миниум расшарить для сервера папку Base с базой.

Далее, что произойдет при заросе. Клиент запрашивает данные из базы, отправляет запрос на сервер. Сервер в свою очередь ПО СЕТИ начнет обращаться к файлу на твоем компьютере! А потом обработва запрос опять же тебе пошлет результат. Тебе не кажется, что сервер тут несколько лишнее звено?
Ты посылаешь запросы на удаленный компьютер для работы с твоей ЛОКАЛЬНОЙ базой.

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

Потеря производительности тебе гарантирована, сервер выполняет тупую работу - гоняет по сети данные от твоего компьютера и возвращает тебе же их. По твоему это верно? :)


sniknik   (2004-08-10 23:53:00) [24]

VID ©   (10.08.04 21:56) [24]

VID ©   (09.08.04 22:55) [41]

sniknik ©   (09.08.04 22:12) [40]
Бывает период когда человек воспринимает только прямые ответы, он ещё не готов саморазвиваться, "видеть между строк" и тому подобное. Ему просто нужен код. Просто я сам прошёл через такой этап, и сколь сильно это бесит мастеров столь сильно это необходимо новичкам.

Лично мне в своё время в период активного изучения мною Interbase помогал один мой друг через интернет, и чаще всего методом "прямого ответа" - т.е. код давал. Это было на самом начальном этапе, и я бездумно использовал этот код говоря спасибо и развивая проект дальше.

А потом стали возникать вопросы: Почему это именно так работает, и что если.... Как правило эти вопросы возникли, когда полученный код после некоторого использования требовалось всё-таки немного модифицировать. Вот на этом этапе новичёк готов к анализу советов.

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

В конце-концов, ведь не зря в гостевой книге готовых решений для дельфи (UBPFD) столько благодарных отзывов.

ИМХО.


;о)))

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


sniknik   (2004-08-10 23:49:00) [25]

> По твоему сервер будет обращаться к базе на другом компьютере?!
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием 'server %';о)), на то он и сервер.

ты не только читай ответы, старайся еще и понять... (мой добрый совет тебе ;)

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


VID   (2004-08-10 21:56:00) [26]

Piter ©   (10.08.04 21:36) [23]
Слушай, приятель, не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов для полного понимания клиент-серверной технологии, и если ты думаешь что весь мир это лишь то что ты видишь своими глазами, то это твои проблемы.

Умерь свой пыл, и вообще научись разговаривать !


Piter   (2004-08-10 21:36:00) [27]

VID ©   (10.08.04 20:14) [22]
установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?


пользователь должен будет установить у себя сервер или локальную версию Embedded.

Ты сам представляешь что говоришь? По твоему сервер будет обращаться к базе на другом компьютере?! Ты в своем уме?


VID   (2004-08-10 20:14:00) [28]

>>ну это перебор. Это что, и базы данных BASE.GDB ты будешь >>хранить на удаленном сервере?

Блин, что значит перебор ??? твоя прога копирует свою базу в папку, ..\Base\ это правильно, но представь что САМ СЕРВЕР (я надеюсь ты отличаешь понятия GDS-Server и GDS-DataBase) установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?

ты будет это делать так: Remote_Server_addr:С:\program files\magic forum\base\...

а по-твоему, откуда программе знать remote_server_addr ? его пользователь должен указать.

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


Piter   (2004-08-10 19:51:00) [29]

Danilka ©   (10.08.04 18:56) [14]
ибо другим придется каждый раз при подключении ввобить имя и пароль.


ну так запросить пароль, если возникло исключение и сохранить его...


Piter   (2004-08-10 19:50:00) [30]

Vlad ©   (10.08.04 17:55) [10]
Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив


хех. Если я зашью в дистрибутив - то как раз каждый раз человек будет качать сервер ЗАНОВО

Vlad ©   (10.08.04 17:55) [10]
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб


Embedded версии это не только одна библиотека, как ошибочно многие думают, их там несколько.

VID ©   (10.08.04 18:25) [12]
Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.


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

VID ©   (10.08.04 18:25) [12]
А теперь внимание! Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине !


ну это перебор. Это что, и базы данных BASE.GDB ты будешь хранить на удаленном сервере?


offtop: ты Raize Components - 3 посмотрел ? Ну и как

нет, я сейчас на диалапе, а он весит 14 Mb с оф. сайта. Договорился с человеком - он мне скинет исходники 4 Mb - тогда посмотрю. Ок?

VID ©   (10.08.04 18:34) [13]
вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


ну это ID ветки блин. Вот смотри URL данного топика - http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092137014&n=1

Вот 1092137014 и есть ID этой ветки, на самом деле это просто время ее создания в Unix формате...


VID   (2004-08-10 19:42:00) [31]

gds32.dll

FB предоставляет свою gds32.dll - это "библиотека-заглушка", все вызовы через неё переадресуются уже на fbclient.dll.
Сделано это для того, что бы старые приложения написаные под интербейз могли бы беспроблемно работать. Конечно новые компоненты доступа к серверу, могут работать напрямую fbclient.dll (наверняка это так, лично я не знаю, до сих пор юзаю fibplus 4.8) и вполне может возникнуть ситуация, что будет заюзана библиотека fbclient.dll. Ну в таком случае можнно в списке подключённых библиотек для анализа искать gds32.dll либо fbclient.dll. Одна из двух точно будет. Впрочем, наш спор - это лишь сотрясание воздуха, так как, всё равно самый приоритетный вариант - третий, а вариант с явно указываемыми настройками подключения в проге тебе нравится потому что это твой вариант ;)


Danilka   (2004-08-10 19:27:00) [32]

VID ©   (10.08.04 19:17) [17]
gds32.dll
Кстати, в фиребирде она имеет другое название - fbclient.dll. При этом, в ИБ эксперте можно ее выбрать. :))
Впрочем, все равно, анализировать версию или размер файла, не думаю что самое правильное решение - это нигде не документированно, в любой момент времени разработчик захочет и что-нибудь изменит.
Все-таки, настройки мне больше нравяцца. :))


VID   (2004-08-10 19:17:00) [33]

Danilka ©   (10.08.04 19:13) [16]
Опять мыслим однобоко :)

Сначала приложение запускается. К нему подключаются нужные библиотеки. А потом ты уже получаешь список библиотек используемых приложением, и информацию о месторасположении каждой из них. Среди этого списка ищем gds32.dll и у нас в кармане путь к той, единственной и неповторимой gds32.dll.


Danilka   (2004-08-10 19:13:00) [34]

VID ©   (10.08.04 19:01) [15]
> Загрузчик приложений в Windows сам занимается поиском
> dll

Для того чтобы получить информацию о версии длл-ки, надо указать полный путь до него. К сожалению, не могу сейчас проверить и сказать точно, но по-моему именно так.


VID   (2004-08-10 19:01:00) [35]

Danilka ©   (10.08.04 18:56) [14]
Блин ну нельзя же всё так плоско воспринимать :)

ну естественно, что однажды указанные пароль и путь к серверу, будут запомнены в каких то настройках внутри фыайла настроек, а потом использованы по умолчанию, и это окно больше не появится, и так будет до следующего раза, пока снова не возникнет ошибка подключения (вдруг сервер переехал), и снова появится окно и снова введённые данные будут сохранены...  А Отдельная секция типа "настройки подключения" в настройках проги  совершенно не нужна.

>>Длл-ку еще найти надо
что значит надо найти ? Загрузчик приложений в Windows сам занимается поиском dll, запрашиваемых приложением.
Сначала ищет в каталоге программы, потом в системных путях... ты о чём ?


Danilka   (2004-08-10 18:56:00) [36]

VID ©   (10.08.04 18:25) [12]
1. Дык Длл-ку еще найти надо, а она может быть не только в каталоге с программой. :))
2. третий вариант - вполне нормальный... но только для тех, у кого эмбеддед версия, ибо другим придется каждый раз при подключении ввобить имя и пароль.
Все-таки я считаю что лучше все это хранить в настройках: сервер или эмбеддед, параметры подключения и т.д.


VID   (2004-08-10 18:34:00) [37]

А ещё я щас посмотрел внутрь твоей базы, вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


VID   (2004-08-10 18:25:00) [38]

to Piter: я посмотрел у себя, сравнил два варианта gds32.dll: обычную для клиентов серверов и Embedded.
Так вот при просмотре инфе о версии каждой из этих библиотек (совйства, вкладка "версия"), в последней строке Special Build Description , у
Embedded значение EM
Super Server значение SS
Classic Server значение CS.

Это всё имеет отношение к Yaffil. Я не знаю как там обстоят с этим дела у FireBird и собственно Interbase, но это может быть неплохой зацепкой.

Второй вариант: банально по размеру этой библиотеки. Если она больше метра то это точно Embedded. Метод это конечно халтурный, кривоватый.

Третий вариант: лишь при ошибке подключения выводить окно, где попросят ввести пароль (а в поле "Логин" должно быть уже написано слово SYSDBA и оно не должно подлежать редактирования ReadOnly = True). И кто сказал что это плохой вариант ? Это очень и очень естественное поведение программы: если она найдёт embedded-сервер в путях поиска, то быстренько подключится никто ничё и не заметит, если же этой библиотеки не будет, а будет обычная библиотека для клиентов сервера, то при неудачном коннекте (это кстати, тоже выяснится очень быстро, клиент долго ждать не будет) появится окошко где надо будет указать пароль.

А теперь внимание!Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине ! Соответственно, в окне где ты будешь просить ввести пароль, так же предусмотри поле, где юзер сможет указать сетевой адрем машины, где установлен gds-сервер.

Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.

offtop: ты Raize Components - 3 посмотрел ? Ну и как ?


Danilka   (2004-08-10 18:10:00) [39]

Vlad ©   (10.08.04 16:04) [7]

> А зачем себе морочить голову с определением версии
> установленного сервера.

Например, мне интересно самому в базе поковыряться, своими запросами, сиквелом найти то-что именно мне надо. Если будет версия embedded, то надо вырубать клиента, а если полноценный сервер, то можно параллельно запустить ИБЭксперт.


> с еще такая деталь. Если имеется установленный сервер,
> то в нем скорее всего будут логин/пароль отличные от
> sysdba masterkey

Дык, добавить в настройки клиента параметры подклучения - какие проблемы?


Vlad   (2004-08-10 17:55:00) [40]


> Piter ©   (10.08.04 16:39) [9]


> Тогда не придется качать из интернета embedded версию библиотек

Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив.
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб
Зато ты не будешь зависеть ни от чьего там сервера, у тебя будут 100% собственное средство доступа.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо