![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить наличие Embedded версий баз?
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% собственное средство доступа.