Форум: "Corba";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Вниз"Логика работы" СОМ-сервера Найти похожие ветки
← →
GanibalLector © (2005-12-22 00:18) [0]2 Набережных С.
> То есть сначала нужно определиться, как должен вести себя процесс сервера в различных обстоятельствах - при ручном запуске, при запуске в режиме COM-сервера, при отключении последнего клиента, при попытке закрытия его, когда еще есть подключенные клиенты и т.д.
Действительно,КАК??? Литературы по сабжу не нашел.Рекомендации,примеры???
← →
k2 © (2005-12-22 12:04) [1]не ко мне конешно вопрос, но по-моему какая тут литература, надо исходить из вашей задачи :)
например попытка закрытия сервера при подключенных клиентах:
-закрыть, клиентам выслать уведомления и отключить
-не закрывать пока есть подключенные клиенты..
← →
Набережных С. © (2005-12-22 12:35) [2]
> k2 © (22.12.05 12:04) [1]
> не ко мне конешно вопрос,
Ну и что? Форум - место общественное, для личного общения не предназначенное, так что не стоит, ИМХО, обращать на это внимания.
> GanibalLector © (22.12.05 00:18)
k2 © прав. Ну откуда же кто-то может знать, как должен вести себя твой сервер?:)) Примеры...Ну вот MS Office - пример, AutoCAD опять же. Можно за ними понаблюдать в различных ситуациях.
Ну давай, опиши подробно, что из себя представляет твой сервер, что и как делает, может ли использоваться в интерактивном режиме и т.д. Попробуем вместе разобраться. Кода не нужно, своими словами, но чем подробней, тем лучше.
← →
k2 © (2005-12-22 12:49) [3]Набережных С. © (22.12.05 12:35) [2]
"права" :о)
← →
Набережных С. © (2005-12-22 12:54) [4]
> k2 © (22.12.05 12:49) [3]
Прошу простить мою оплошность, это трудно определить по нику:)
← →
k2 © (2005-12-22 13:26) [5]<offtopic>
в качестве расплаты за вашу ужасную ошибку, нанесшую колоссальный моральный ущерб, может существует ваш проксистабпримерчик под пятерку? :) а то шестерки-семерки поблизости нема, а хочется насладиться :)
</offtopic>
← →
Набережных С. © (2005-12-22 17:36) [6]
> k2 © (22.12.05 13:26) [5]
Мое преступление столь ужасно, а Вы так снисходительны, что готовы простить меня в обмен на такую мелочь! Посему, хоть версии для D5 сейчас не существует, но она БУДЕТ существовать - специально для Вас! Но, умоляю, дайте мне немного времени, и я положу ее к Вашим ногам! Ну хотя бы до вечера будущего воскресенья:))
← →
GanibalLector © (2005-12-23 01:52) [7]>Ну давай, опиши подробно, что из себя представляет твой сервер, что и как делает, может ли использоваться в интерактивном режиме и т.д. Попробуем вместе разобраться.
Значит... предназначен он для работы с кассовыми аппаратами(разрабатывался по заказу франчайзеров).В виду того,что действия чтения\записи в аппарат длительны - сервер не имеет св-ва Visible, более того на форме присутствует ProgressBar для отображения % чтения\записи.
Теперь о проблемах:
1) как Вы понимаете,в ручном режиме он не работает.Посему хотелось бы,чтобы после ручного запуска он сразу же "помер". В принципе,у меня есть "свой взгляд" на решение этой проблемы,но я не знаю насколько это правильно.
2) предположим франчайзер ошибся в вызове некоторого метода моего сервера... и форма сервера осталась висеть в панели задач. Насколько я понимаю,мне не хватает метода,который бы "убивал" сервер в случаи ошибки.
3) франчайзер вызывает некоторый метод,а пользователь случайно(или специально) нажимает "закрыть" на форме сервера. Как тут быть?
З.Ы. Пока все. Всегда Ваш GanibalLector ;)
← →
k2 © (2005-12-23 06:23) [8]Набережных С. © (22.12.05 17:36) [6]
Вы так милы и Ваше раскаяние так искренне, што прощаю Вас безусловно и категорически, готова ждать и гораздо дольше :)
серьезное человеческое спасибо :)
GanibalLector © (23.12.05 01:52) [7]
не приходилось писать под кассовые аппараты, но видела (один раз :) аппарат звался феликс) как это сделано, может наведет на какие мысли:
-сервер реализован в виде длл-ки (помоему отпадает проблема с ручным запуском), библиотека типов;
-приложение с формой, на которой были отображены все возможные настройки сервера, и всяческие кнопочки для вызова методов;
-приложение для налоговиков, штобы фискализировать аппарат и всяческие фискальные отчеты.
предприятия разные, у нас например кассиру не нужно делать все те операции, которые умеет аппарат, поэтому просто написала маленького клиента, который из нашей финансовой системы отправлял данные пко серверу, и если все проходило по кассе, то пко исполнялся
очень благодарна разработчикам, предусмотрели все, библиотека типов удобная, справочная система замечательная
насчет 2) метод же может возвращать признак успешности/неуспешности, обрабатывать этот признак и в зависимости поступать
3) тоже наверное от метода зависит, если допустим вызван метод формирования суточного отчета, то подождать пока отчет распечатается, только после этого закрываться
← →
msguns © (2005-12-23 15:07) [9]>k2 ©
>Набережных С. ©
Шекспир отдыхает, я же просто рыдаю ;)))
← →
Набережных С. © (2005-12-23 16:56) [10]
> k2 © (23.12.05 06:23) [8]
Вы просто прелесть! Сказать большее я не решаюсь из опасения, что Вы сочтете мои слова слишком смелыми:) Но мне весьма приятен Ваш снисходительный интерес к теме, которую женщины обычно считают недостойной свое внимания:)
> GanibalLector © (23.12.05 01:52) [7]
1) Я тоже думаю, что более подходящим был бы внеутрипроцессный сервер. Но если все-таки необходим в виде EXE, то при запуске можно проверить свойство ComServer.StartMode и завершиться, выдав, например, предупреждение пользователю.
2) Я бы вообще передал обязанность показывать прогресс клиенту, а в сервере можно предусмотреть интерфейс обратного вызова, через который бы оповещал клиента о ходе выполнения команды. Причем принимал бы этот интерфейс как параметр метода, запускающего этот длительный процесс. Или можно добавить метод, через который клиент сможет по своей инициативе получать инфу о текущем состоянии процесса. Но даже если показывать форму из сервера, то делать это лучше только на время выполнения длительной операции, после чего сразу прятать.
По поводу неправильных действий - не уверен, что нужен дополнительный метод. Если они привели к неосвобождению интерфейсной ссылки, то это в чистом виде проблема автора клиента. Есть правила работы с интерфейсными ссылками, и нефиг их нарушать, пусть правит свой код. Не думаю, что стоит прятать такие ошибки. Ну а если просто неправильный вызов метода, то это никак не скажется на самоуничтожении сервера. Другое дело, что сервер должен адекватно реагировать на неправильные действия пользователя или клиентской программы, возвращая осмысленный код ошибки или, при SafeCall, поднимая осмысленное исключение
> франчайзер вызывает некоторый метод,а пользователь случайно(или
> специально) нажимает "закрыть" на форме сервера. Как тут
> быть?
Лучше вообще не давать пользователю такой возможности. Если логика работы с оборудованием позволяет, то предусмотреть метод, отменяющий текущую операцию, И пусть уже автор клиента решает, как ему быть - давать пользователю возможность отмены или не давать. Имхо, там такой выбор будет более очевиден, дело сервера - выполнять команды клиентского приложения. А то получится, что ты отменил операцию по приказу пользователя, а код клиента к такому повороту не готов.
И перестань, пожалуйста, пугать меня этим жутким словом - "франчайзер":)))
> msguns © (23.12.05 15:07) [9]
А то! :)))
← →
Набережных С. © (2005-12-25 08:57) [11]
> k2 ©
Специально для Вас:
http://kladovka.net.ru/index.cgi?pid=board&rid=302
← →
k2 © (2005-12-26 04:10) [12]to Набережных С. © (25.12.05 08:57) [11]
и вовсе не снисходительный :) спасибо :)))) поймаю - зацелую :о)
← →
Набережных С. © (2005-12-26 16:06) [13]
> k2 © (26.12.05 04:10) [12]
Ловлю на слове:) Как бы это мне теперь побыстрее пойматься:)))
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.067 c