Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Привет! Подскажите, как мне СOM EXE VFP превратить в DCOM, что нужно настраивать на машине на которой будет выполнятся компонента ? И как мне создавать объект из этого контрола в клиенте если он выполняется на другой машине ? Это вообще можно сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 13:36 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Можно, регистрируеш как DCOM, там есть утилита DCOMCNFG.exe в доках много описано. DCOM это тотже COM только в "ссылке" на него стоит адрес другой машины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 14:17 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Только не понятно мне одно. Установил я coмпоненту на свою машину. И поставил эту же компоненту на другую машину. Исчерпал объект локальной версии свой ресурс(критерии я сам устанавливаю) нужно запустить еще один, но тот который на другой машине. Как я его на своей машине должен зарегестрировать ? С помщью DCOMCFG ? А дергать как ? Объясните, плиз, если не трудно. Очень надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2004, 14:29 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
есть сервер - Srv.exe и Клиент - Cli.exe И два компьютера - локальный и удаленный Сначала на локальном и удаленном - srv.exe /regserver Клиент, которому нужен локальный объект вызывает: CREATEOBJECT('Srv.Class') Клиент, которому нужен удаленный объект вызывает: CREATEOBJECT EX ('Srv.Class', 'имя удаленного компьютера') Вроде все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 09:20 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Да, забыл, что все это нужно сконфигурировать с помощью DCOMCNFG (разрешить DCOM, раздать права) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 09:24 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
То oleg_km : Спасибо! Вопрос насчет настройки DCOMCNFG. Свой сервер я там вижу. Но там настраивается запуск : 1 . На локальном компе (?) 2. На компе где находятся данные (?) 3. На выбранном компе (?). Мне нужно будет запускать этот сервер на 4 разных компах. 1 запуск на моем локальном. Какие настройки ставить чтобы сервер стартовал: obj1= CREATEOBJECTEX('Srv.Class', 'имя удаленного компьютера1') obj2= CREATEOBJECTEX('Srv.Class', 'имя удаленного компьютера2') obj3= CREATEOBJECTEX('Srv.Class', 'имя удаленного компьютера3') obj4= CREATEOBJECTEX('Srv.Class', 'мой комп') Буду признателен за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 12:25 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуста, а из RTL что нужно для работы сервера и где это добро должно лежать на удаленной машине ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 12:27 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Из RTL нужно всё, кроме ресурсов (vfpNrrus.dll) - если Ваш COM-сервер создан не на основе визуального класса и не пользует разные окна. Обязательно включите в проекте в узел Other->TextFiles файл config.fpw с определением кодовой страницы. CREATEOBJECTEX для вызова на удалённых машинах не пользовался. Делал только под ASP в IIS - но это немного другое. Достаточно было зарегистрировать EXE COM на сервере, вызвав его с ключем regserver . Вообще-то сложная какая-то у Вас архитектура (и непонятная). Успехов!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 13:09 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Архитектура..хммм.. возможно. Посоветуйте , буду только рад за конструктивные предложения. Задача: Система представляет из себя некоторую станцию коммутации каналов, работающую с оборудованием по COM портам. Каждый порт обслуживает 4 устройсва. COM сервер в своем функционале содержит функции , в соответсвии с протоколом (запись , чтение, инициализаци, режимы) управления. Нужно добится максимального уменьшения времени на обработку данных которые приходят из потов. Соответсвенно портов на каждой машине можно повтыкать 255, но тогда как бы асихронно не выполялись методы COM -объектов, все равно машина начинает притормаживать, что недопустимо(!). Вот и приходится разносить сервера по отдельным машинам чтобы добиться максимальной эффективности обработки потока данных из портов, А клиенту передавать только события о смене состояний устройств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 13:21 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Если честно, никогда CREATEOBJECTEX не пользовался, т.к. у меня серверный компонент стоит только на одном компьютере, поэтому на клиентах запускаю clireg и по CREATEOBJECTи все работает. Я думаю, нужно попробовать на клиенте запустить clireg с указанием одного из серверов, а потом вызывая ч/з CREATEOBJECTEX нужный компьютер будет запускаться нужный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 13:32 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Олег,не совсем понял тебя насчет clireg, можно подробней что и где запускать чтобы я точно запускал свой компонент именно на той машине на которой хочу ? Или не запускал, есть еще и резерв который стартовать должен при сбое в работе основного ядра серверов обслуживающих в общей совокупности некоторое количество портов или при превышении нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 13:35 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Делаю все так как вы говорите. Пытаюсь создать екземпляр объекта ostock=CREATEOBJECTEX("comdll.test","Oper") Мне выскакивает сообщение : Отказано в доступе. Что делать? На машине клиента зарегестрировал на машине сервера зарегестрировал На машине сервера настроил DCOM - запускать на локальной машине Выполнил CLIREG comdllex.vbr -s 192.168.0.1 на клиенте В чем трабл? Подозоеваю что с правами перемудрил или недомудрил. Как настроить права ? Помогите пожалуйста ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 16:05 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
на всех клиентах: clireg32 <твоя программа-сервер>.vbr -s <какой-нибудь сервер> -d -p ncacn_ip_tcp -l А в программе вызывай CREATEOBJECTEX('srv.class', 'Нужный тебе сервер') я так думаю, что указание в CREATEOBJECTEX сервера, отличного от указанного в clireg32 в нужном тебе случае "переназначит" на нужный компьютер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 16:07 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Клиент 1. Серверов, пока тож 1. делаю: clireg32 <программа-сервер>.vbr -s <сервер> , -d -p ncacn_ip_tcp -l - это не делал, но думаю что не суть важно. Что настраивать в DCOM на строне клиента для компоненты и на строне сервера для компоненты или вообще ни трогать ? И что с правами делать ? Или ничего ни делать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 16:14 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Вру. Я делаю clireg, clireg32 я вообще найти не могу. Если это принципиально, то где это добро валяется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 16:17 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Привожу выдержку из MSDN VS 6. Может, поможет. To configure DCOM on the server for remote debugging 1. From the Windows® Start menu on the server, choose Run, and then in the Open box type Dcomcnfg.exe at the prompt. 2. In the Distributed COM Configuration Properties window, select Machine Debug Manager, and then choose Properties to display the Machine Debug Manager Properties dialog box. 3. In the Security tab, choose Use custom access permissions, and then choose Edit. 4. In the Registry Value Permissions dialog box, verify that Allow Access is selected in the Type of Access list, and then choose Add. 5. In the Add Users and Groups dialog box, select the server's name from the List Names From list. The server name typically is in the form \\server and appears at the top of the list. 6. Under Names, choose Administrators, choose Add, and then choose OK. 7. Return to the Security tab, choose Use custom launch permissions, and then choose Edit. Verify that Allow Launch is selected in the Type of Access list, choose Add, and then add administrators as you did in Steps 4 through 6. 8. Return to the Distributed COM Configuration Properties window, select MTS Client Export, and then choose Properties. Repeat Steps 4 through 7. 9. Return to the Distributed COM Configuration Properties window, select Catalog Class, and then choose Properties. Repeat Steps 4 through 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 17:04 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Ясное дело поможет. "Потрахаюсь" недельки 2 и методом научного тыка все получится, как обычно. Хотелось бы обсуждения. Кто что делал, как делал. Не в жизни ни поверю что никто не делал. Проблема-то просто свелась к вопросу : как настроить DCOM чтобы запустить на другой машине написанный на VFP компонент. Увы, в английском не силен, немецкий учил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 17:11 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Вобщем-то, там все просто. Для начала - какая ОС не клиенте и на сервере Далее на сервере - запускаем DCOMCNFG, ищем в ListBox свой класс, открываем Property, открываем вкладку Доступы, везде отменяем по умолчанию, заходим в ACL и добавляем кого нужно. Если на сервере ОС - Win9x - обязательно нужно включить в настройках сети - управление доступо "На уровне пользователей", по крайней мере у меня по другому не работало. Вроде все, пробуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 17:49 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
ХР и на клиенте и на сервере. А вот такой вопрос, а я должен на сервер тож прописаться с таким же именем и паролем и войти в сеанс именно под ними как и на клиенте авторизуюсь ? Или это не важно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 17:56 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
На сервере: Смотря что выбрано на сервере на вкладке Identity Если The interactive user (у меня так) - то сервер запускается от залогиненного НА СЕРВЕРЕ пользователя (если никто не залогинен будет облом) Если The launching user - то от имени пользователя НА КЛИЕНТЕ (стоит по умолчанию) - самый плохой вариант, т.к. права клиентов часто для сервера ущербные, если нужно чтобы сервер в нужных местах проверял права пользователя на клиенте - используй имперсонацию Если This user - явно указываешь пользователя - как в SQL. Наверное, самый лучший вариант, т.к. серверный компонент будет работать даже если никто не залогинился на сервере, но нужно учитывать, что процесс будет запущен в невидимой тебе Desktop'е, поэтому если он выводит сообщения об ошибке, ты их никогда не увидишь. Поэтому я не использую этот вариант - иногда что-то где-то вылазит. На клиенте: обязательно кто-то должен быть залогинен. Без входа в сеть ничего не рабоает, я и Гостя включал - ничего не помогает. Если кто знает - как вызвать DCOM не входя в сеть - очень будет интересно услышать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 18:22 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Очень меня это заитересовало. Решение. Два компа, XP Prof На моём фокс установлен, на втором - нет. Что сделал: 1. Написал простой EXE COM-сервер 2. Создал SETUP-проект при помощи Install Shield For VFP, в который включил необходимые RTL Дальнейшие действия на втором компе (где будет COM-сервер) 3. Запустил SETUP (выполняется установка проги и RTL) 4. Зарегистрировал COM-сервер (ключ regserver ) 5. Вызвал DCOMCNFG : - Открыл узел "Службы компонентов" -> "Компьютеры" -> "Мой компьютер" -> "Настройка DCOM" - Нашёл свой COM-сервер и щёлкнул по нему правой кнопкой; в меню выбрал "Свойства" - На вкладке "Безопасность" в блоке "Разрешение на запуск" выбрал "Настроить" и нажал кнопку "Изменить" - Далее в последовательно появляющихся окнах: "Добавить", "Дополнительно", "Поиск" - Здесь можно выбрать себя или "Authenticated Users" (Прошедшие проверку) - т.е. Вы зарегистрированы на Вашем сервере. И всё. В своей проге: oSVR = CREATEOBJECTEX('мой_COM-сервер','чужой_комп') И всё заработало! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 10:39 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Да все именно так. Но иногда нужно еще изменить Identity По умолчанию оно стоит The launching user, но этих прав на сервере может не хватить (запрещена работа на сервере не-Администраторам или др.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 11:28 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
to Гость_xxx - если ещё заглянете в этот топик Вы пишите: А клиенту передавать только события о смене состояний устройств Вы используете EVENTHANDLER() ? Если можно, расскажите поподробнее, как Ваш COM-сервер генерит события и как они отлавливаются и обрабатываются на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 13:07 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
Помучался я с этим EVENTHANDLER(). Не работает он. А вот ранее связываение прописанное ручками и создание CALLBACK функций работает прекрасно. По краней мере на локальной машине работает. На клиенте пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. Код: plaintext 1. 2. 3. 4. А вот с DCOM не пробовал, не знаю сумеет ли DCOM смаршалить данные и указатель IDispatch за граница процесса. Тут Кстати много вопросов, по завлению микрософта в 2000 виндах есть возможность дернуть метод интерфейса асинхронно, но для этого в IDL компоненты для интерфеса должно быть объявление что это можно делать. Так вот typelib фокса из которого получается IDL компилятором MIDL не содержит такого объявления. (Должно быть объявление интерфеса с префиксом async_) Пришлось ручками писать на C++ обертку для асинхронно выполнения метода COM сервера. Что это добро работает на локальной машине это точно, на удаленной не пробовал. Сомневаюсь я что заработает, тогда что делать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2004, 14:04 |
|
||
|
СOM EXE VFP -> DCOM ?
|
|||
|---|---|---|---|
|
#18+
to Гость_ххх Спасибо за ответ и код. Но помочь уже ничем не могу. Сам сейчас читаю книжку Трельсена "Модель COM..." - хочу достичь понимания того, как всё это работает. Есть тут задумка сделать распределённое приложение. Начальству один хрен - лишь бы работало, но хочется, чтобы красиво было... Может, Вам стоит попробовать спросить у Михаила Дроздова? Он вроде занимался этой проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2004, 14:47 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32546155&tid=1596427]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 398ms |

| 0 / 0 |
