Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Страницы: 123>>
Страница: 1 из 3
irbis64_client.dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 16, October, 2009 11:43

Скажите, пожалуйста, когда следует ожидать (и можно будет получить) irbis64_client.dll?

В версии ИРБИС64 2009.1 "для дилеров" и в демо-версии с [ftp.gpntb.ru] данная DLL не обнаружена. (Обнаружено только "Описание функций библиотеки IRBIS64_CLIENT.DLL".)

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 19, October, 2009 10:25

Пишите на alio@gpntb.ru - пришлю...

Re: irbis64_client.dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 19, October, 2009 10:58

Спасибо, только что отправил письмо на на alio@gpntb.ru.

Re: irbis64_client.dll
Пользователь: magnetto (IP-адрес скрыт)
Дата: 20, October, 2009 16:15

Добрый день, отправил вам письмо, пришлите пожалуйста DLL для тестирования разработок на c#

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 11, November, 2009 08:17

Добрый день! Существует ли 64-битная версия библиотеки?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 11, November, 2009 09:57

fedoroff написал(а):
-------------------------------------------------------
> Добрый день! Существует ли 64-битная версия
> библиотеки?
Что сие значит?

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 11, November, 2009 12:43

Данная версия библиотеки предназначена для 32-разрядных систем. При вызове из 64-разрядных (например, из 64-битного CRM) она, соответственно, не грузится, и при первом обращении валит ошибки. Подобных проблем можно избежать, скомпилировав консольное 32-битное приложение для вызова функций или настроив отдельный веб-сервис, опять же, на 32-разрядном сервере, но это все же не может считаться оптимальным решением. Вы планируете поддерживать 64-битную архитектуру x64 или всё-таки придется искать обходные пути?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 11, November, 2009 14:11

fedoroff написал(а):
-------------------------------------------------------
> Данная версия библиотеки предназначена для
> 32-разрядных систем. При вызове из 64-разрядных
> (например, из 64-битного CRM) она, соответственно,
> не грузится, и при первом обращении валит ошибки.
> Подобных проблем можно избежать, скомпилировав
> консольное 32-битное приложение для вызова функций
> или настроив отдельный веб-сервис, опять же, на
> 32-разрядном сервере, но это все же не может
> считаться оптимальным решением. Вы планируете
> поддерживать 64-битную архитектуру x64
Нет.

или
> всё-таки придется искать обходные пути?

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 24, November, 2009 12:08

Пытаемся активно использовать библиотеку, столкнулись с такой проблемой: периодически при попытке подключения к ирбису библиотека возвращает статус -2 (ожидание завершения предыдущей операции) и в дальнейшем с ирбисом не соединяется. Проблема возникает при подключении к библиотеке через веб-сервисы, при этом предыдущий запрос возвращает данные и успешно завершается. С чем это связано и как с этим бороться? В каких случаях возвращается такой статус?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 24, November, 2009 12:58

fedoroff написал(а):
-------------------------------------------------------
> Пытаемся активно использовать библиотеку,
> столкнулись с такой проблемой: периодически при
> попытке подключения к ирбису библиотека возвращает
> статус -2 (ожидание завершения предыдущей
> операции) и в дальнейшем с ирбисом не соединяется.
Это значит, что DLL "повисла" в ожидании ответа от сервера...
Ваше приложение, обращающееся к DLL, и сервер ИРБИС64 физически работают на одной машине? Если да - то это не очень хорошо. Попробуйте в irbis_server.ini установить параметр
TimeSleepOnClose=1

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 24, November, 2009 15:23

Нет, приложение и сервер ирбис находятся на разных машинах и даже в разных зданиях. Параметр поменял, но это, к сожалению, не помогло. Такое ощущение, что при вызове из веб-сервиса библиотека отрабатывает какое-то определенное количество раз, после чего перестает отвечать. Количество возвращаемых результатов во всех тестах примерно одинаковое — для теста я выбираю читателей с MFN от 1 до 20, вывожу ФИО, каждый раз выводится 7-8 читателей. Перед получением читателя устанавливается соединение с ирбисом, после получения — разрывается.

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 01, December, 2009 15:42

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

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 07, December, 2009 13:25

Проблема проявляется, если ИРБИС-у требуется какое-то время на обработку запроса. Господа разработчики, можете поправить? Курсор остается в виде песочных часов для всех приложений, а это пугает конечных пользователей. Пусть уж лучше не будет вообще песочных часов, чем такое...

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, December, 2009 14:31

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

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 07, December, 2009 20:04

Вот еще проблема, с которой столкнулись: при работе с библиотекой время от времени падает служба Irbis64_Service, причем так, что рестартовать её не удается и приходится перезагружать сервер. Сегодня во время тестирования сервер падал несколько раз в течение часа. В чем может быть проблема? Библиотека вызывалась из виндового приложения, физически расположенного на другом компьютере.
И вопрос: что будет, если приложение вызовет функцию библиотеки (приложение не на сервере), и во время выполнения функции другое приложение (не на сервере и не на рабочей станции с первым приложением) вызовет тоже какую-либо функцию?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 08, December, 2009 10:14

fedoroff написал(а):
-------------------------------------------------------
> Вот еще проблема, с которой столкнулись: при
> работе с библиотекой время от времени падает
> служба Irbis64_Service, причем так, что
> рестартовать её не удается и приходится
> перезагружать сервер. Сегодня во время
> тестирования сервер падал несколько раз в течение
> часа. В чем может быть проблема? Библиотека
> вызывалась из виндового приложения, физически
> расположенного на другом компьютере.
Версия сервера...
Пришлите на alio@gpntb.ru Ваш irbis_server.ini


> И вопрос: что будет, если приложение вызовет
> функцию библиотеки (приложение не на сервере), и
> во время выполнения функции другое приложение (не
> на сервере и не на рабочей станции с первым
> приложением) вызовет тоже какую-либо функцию?
Все будет нормально...

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 09, December, 2009 10:01

Версия сервера 9.1, выслал файл.

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 10, December, 2009 09:33

Скажите, можно ли как-то ограничить время ожидания ответа от сервера (время показа заставки)? В описании библиотеки такой функции не нашел, а заставка ожидания может, похоже, крутиться бесконечно. Дело в том, что вызывая функцию библиотеки из другого приложения, пользователь не всегда может увидеть заставку и прервать её — он просто может находиться совершенно в другом приложении на другом рабочем месте. В этом случае првильнее было бы предупредить как-то его о том, что Ирбис недоступен, но с точки зрения программы это сделать не получается, функция регистрации не возвращает ничего, если нет соединения, как бы зависает. Отслеживать выполнение соединения в отдельном потоке тоже не удается — мы разрабатываем на .net, а убить поток, выполняющий не-.net код довольно проблематично.

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 14, December, 2009 11:36

Ещё раз здравствуйте, господа разработчики. Большая просьба что-нибудь сделать с окном подключения, потому что при ожидании подключения к ирбису процессор забивается на 99%, что совсем нехорошо для серверных приложений. В идеале окно с бегущим ирбисом не должно вообще появляться, просто функция после определенного таймаута должна вернуть статус, сообщающий об ошибке подключения.

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 14, December, 2009 14:15

Объясните, пожалуйста, а как у Вас работают СОБСТВЕННО клиенты (АРМы) ИРБИСа? Как там дело обстоит с подкючением?

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 17, December, 2009 11:17

АРМы Ирбиса подключаются нормально, если серверная часть Ирбиса работает. Если серверная часть Ирбиса не отвечает, появляется окошко с бегищим ирбисом, сотрудник нажимает кнопку отменить, сообщает администратору.

С подключением библиотеки точно так же проблем нет, ровно до тех пор, пока серверная часть Ирбиса не упадет. В этом случае клиентское приложение (64-х разраядное) обращается к небольшому сервису (физически расположенному на другой машине, в 32-х разрядной среде), сервис вызывает функцию вашей библиотеки. Но в этом случае сотрудник библиотеки окошка с бегищим ирбисом не увидит, т.к. процесс, отвечающий за это окошко, запустится на другой машине. Пользователь попадет в ситуацию, когда программа ожидает ответа от этого сервиса, а сервис ей ничего сообщить не может, т.к. в этот момент он сам ожидает ответа от библиотеки irbis64_client.dll. Попросту он видит, что приложение зависло.

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

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

Вместе с тем, зависшее сервисное приложение (на 32-х разрядной машине) после перезапуска Ирбиса само не начнет работать. По прошествию определенного времени после появления окна с бегущим ирбисом появляется окно с вопросом, обращенным к пользователю, но пользователя-то не существует! Сервис остается зависшим вплоть да момента его перезапуска.

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

Поскольку 64-х рахрядной версии библиотеки не существует, без 32-х разрядных сервисов никак не обойтись. Соответственно, библиотека irbis64_client.dll должна уметь работать в среде, не подразумевающей наличия пользователя, готового ответить на появляющиеся на экране окна с вопросами, а позволить вызывающему её приложению самостоятельно решать, что делать в случае недоступности сервера.

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 17, December, 2009 11:49

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

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 17, December, 2009 15:32

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

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

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 17, December, 2009 16:39

С зависаниями вопрос, похоже, решен, дело в многопоточности.

Если кому-то из читающих придется обращаться к irbis64_client.dll из своих многопоточных программ, знайте, соединение с Ирбисом и все действия с ним должны выполняться из одного потока. У меня же соединение выполнялось при старте сервиса, а обработчик запросов работал в другом потоке — отсюда и зависания.

Re: irbis64_client.dll
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 21, December, 2009 09:25

Ситуация, как я ее понимаю.
Когда Вы вызываете LoadLibrary в первый раз - библиотека грузится в память, получает адресное пространство и т.д., когда в другом потоке (и даже процессе) вызываете ее второй раз - всего этого не происходит (лишь увеличивается счетчик ссылок на количество ее использований, библиотека выгружается из памяти только когда этот счетчик достигнет 0). Соответственно, библиотека в этом случае становится разделяемой и возможна ситуация когда одновременно исполняется 2 и более ее части, переменные изменяются из разных потоков. Библиотека на такую работу не рассчитана и результат в этом случае, естественно, не предсказуем. Если хочется ее использовать одновременно из разных потоков/процессов, то необходимо обеспечивать синхронизацию этих потоков/процессов по доступу к этой dll...

Оффтоп по самому серверу ИРБИС-64:
Сервер 64 вполне в состоянии обрабатывать параллельно несколько запросов от одного и того же клиента (про это говорю со 100% уверенностью, т.к. пользую в ИРБИС-128) - тут главное на клиенте не напортачить с номерами команд (см. заголовок пакета протокола ИРБИС-64).

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 23, December, 2009 18:21

Ну, в конечном счете так и сделал: все приходящие команды ставятся в очередь, и поток-обработчик постепенно достает их из этой очереди, периодически при отсутствии задач вызывая IC_nooperation.

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 10, March, 2010 09:25

После работы с библиотекой появились предложения по ее улучшению: требуется возможность задавать время ожидания ответа от сервера ИРБИС-а, после чего функция возвращает результат — какой-либо код неудачного выполнения запроса (а не выводит окно с вопросом). Окно с вопросом вообще не требуется, не хватает возможности вообще отключить его.

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 10, March, 2010 11:31

Посылаю Вам для тестирования вариант библиотеки с реализацией Вашего предложения на основе изменения смысла функции

function IC_set_show_waiting(Aopt: integer): integer;

Для Вас она означает установку интервала максимального ожидания ответа от сервера, после чего прерванная функция возвращает ERR_USER. По умолчанию этот интервал - 30 сек.

Сообщите о результатах тестирования.

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 10, March, 2010 12:23

Попробовал: при потере соединения с ИРБИС-ом выскакивает сообщение

Внимание!
---------------------------
Связь с сервером ИРБИС64 прервана. Повторить обращение к серверу?

Re: irbis64_client.dll
Пользователь: fedoroff (IP-адрес скрыт)
Дата: 10, March, 2010 15:19

Все работает, большое спасибо!

Страницы: 123>>
Страница: 1 из 3


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.