powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как использовать асинхронные методы DCOM-сервера из Foxpro 9
14 сообщений из 14, страница 1 из 1
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170065
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Асинхронность достигается простым приёмом. "Асинхроный" метод сервера сохраняет параметры вызова в свойствах сервера, запускает Timer и даёт return в вызвавший его клиент. А Timer через секунду запускает исполняющий внутренний метод и самоликвидируется. Теперь Фоксовский клиент может следить и управлять ходом асинхронного метода, периодически опрашивая текущие свойства сервера и устанавливая в сервере "флаги", также периодически проверяемые асинхронным методом.
А нельзя ли получать из сервера какие-то обратные вызовы?
Только учтите, сервер удалённый и доступ к нему из клиента через CREATEOBJECTEX().
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170108
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. Kudryashov, уточню. DCOM-сервер - изготовлен в Фоксе как exe-файл.
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170141
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. KudryashovRostislav D. Kudryashov, уточню. DCOM-сервер - изготовлен в Фоксе как exe-файл.
Тогда Вы что-то не договариваете.

Сам по себе FoxPro - однопоточное приложение. Поэтому "Timer (...) запускает (...) метод и самоликвидируется" - не выполнимо в среде FoxPro. Timer будет висеть до тех пор, пока будет выполняться запущенный им метод. А это значит, что Timer не сможет "самоликвидироваться".

Если требуется выполнение какого-то процесса "паралельно" основному приложению FoxPro, то просто запускается через через RUN или ShellExecute отдельный EXE. Получим независимый процесс. Но, разумеется, прямой связи основного приложения с этим процессом уже не будет. Только через внешние объекты (файлы или объекты-семафоры вроде Mutex)
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170146
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описанный сценарий не приводит к асинхронности. Он всего-лишь меняет последовательность выполнения методов. Основное приложение будет ожидать завершение работы метода не в момент его вызова, а в тот момент, когда начнет выполняться событие таймера.
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170150
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, как это тебя угораздило не заметить, что прямая связь из клиента с DCOM-сервером, в котором клиент запустил "асинхронный" метод у меня уже есть!
Меня интересуют способы обратной связи - обратные вызовы из "асинхронного" метода в запустивший его клиентю
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170158
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, э--э-э-х, Владимир. Ну ты же должен понимать, что такое DCOM-сервер, который выполняется не то что в другом потоке, а на другом компьютере, нежели клиент? При том, что клиент, вызвавший "асинхронный" метод, получает возврат из сервера практически немедленно и у него развязаны руки для любых дел, в том числе и для управления ходом выполнения асинхронного метода путем чтения-установки флагов в сервере. А метод, запущенный из Таймера на сервере, ещё будет долго пилить, и хорошо б от него получать обратные вызовы.
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170173
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. Kudryashov, ладно, ребята. Меня здесь не поняли всякие Владимиры. Для них кидаю код сервера. Может, есть кто кроме Владимиров, чего понимающий?

DEFINE CLASS ServerTimerClass as Custom OLEPUBLIC
CurDial = NULL
IdleTimer = NULL

PROCEDURE Init
THIS.CurDial = CREATEOBJECT ('Dial')
THIS.IdleTimer = CREATEOBJECT ('MyTimer', 1000, .T., THIS.CurDial)
ENDPROC && Init

ENDDEFINE && ServerTimerClass

DEFINE CLASS Dial AS Custom
Face = 'NoValue'
ENDDEFINE && Dial

DEFINE CLASS MyTimer AS Timer
Dial = NULL

PROCEDURE Init (m.tnInterval, m.tlEnabled, m.toDial)
THIS.Interval = m.tnInterval
THIS.Enabled = m.tlEnabled
THIS.Dial = m.toDial
ENDPROC && Init

PROCEDURE Timer
THIS.Dial.Face = TIME()
ENDPROC && Timer

ENDDEFINE && MyTimer
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170198
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. Kudryashov, ага, в хэлпе есть раздел "Visual FoxPro and Advanced COM" и в нём "Visual FoxPro Callback Design".
Надо сейчас попробовать
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170200
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. Kudryashov, Э,наверно не пойдёт. Этот пример из хэлпа для COM-DLL, а не для COM-EXE.
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170215
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. KudryashovRostislav D. Kudryashov, Э,наверно не пойдёт. Этот пример из хэлпа для COM-DLL, а не для COM-EXE.
Почему не пойдет? Хоть и DLL но outprocess COM сервер. inprocess фокс не может делать. поэтому без разницы EXE или DLL.
А COM или DCOM это забота виндовса, для приложения они идентичны.
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170224
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DCOM достаточно ресурсоемкая технология. Не проще сделать TCP соединение и по нему обращаться?
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170237
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Dima T, мне хочется обойтись без сериализации данных по TCP. Если проще - то всё писать под .NET, на WCF
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170238
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, а пока что это решение - замена прямому файловому доступу с рабочих станций к таблицам в сетевом каталоге.
Надеюсь, что DCOM-сервер будет не "тяжелее". По крайней мере, на сетевом трафике будет выигрыш
...
Рейтинг: 0 / 0
Как использовать асинхронные методы DCOM-сервера из Foxpro 9
    #38170253
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rostislav D. KudryashovDima T, а пока что это решение - замена прямому файловому доступу с рабочих станций к таблицам в сетевом каталоге.
Надеюсь, что DCOM-сервер будет не "тяжелее". По крайней мере, на сетевом трафике будет выигрыш
Пытаешься клиент-серверное приложение сделать? Может просто SQL сервер взять? Все равно с нуля писать.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как использовать асинхронные методы DCOM-сервера из Foxpro 9
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]