-
>Лучше посоветуй автору отказаться от COM/DCOM и регистрируемых в реестре серверов в пользу собственноручно выбранного транспорта (сокеты, пайпы - это уж на вкус выбирать), контролируемого маршаллинга (а-ля sconnect) и нерегистрируемых internal-серверов.
Не, эт я советовать не буду, потому как несогласный я:))
-
> откуда они возьмутся?
А мы работы не боимся - мы сами напишем и прокси и стаб)
К тому же, плясать под дудку стандартного олей-маршаллинга не всегда удобно и возможно - приходится действовать с постоянной оглядкой на допустимые в олей-автоматизации типы данных, что порой добавляет не меньшую головную боль, чем написание специфичного для конкр.задачи маршаллера.
-
> несогласный я
Ну что ж) Насиловать тебя мы тож не вправе) Несогласный знач несогласный)
А по мне так оч даже приятственно не зависеть ни от каких реестров, стандартных проксей-заглушек и прочей шняги)
-
-
> > В помощь тебе: > > http://megalib.com/books/923/77715.htm
Спасибо конечно, но 1. У меня дома бумажный вариант этого дела 2. Читаем в конце (у меня в бумаге также): Нам остается лишь написать реализацию метода:
function TTest1.ShowIt(const S: WideString): HResult;
begin
MessageBoxW(0, PWideChar(S), NIL, 0)
Result := S_OK; end;
Для регистрации сервера достаточно один раз запустить его на компьютере клиента. Как показала практика не работает. Ну и собственно ни в моем бумажном варианте, ни в инете я пока так и не отыскал простого примера по передаче ссылки на объект в другой процесс.
-
>А мы работы не боимся - мы сами напишем и прокси и стаб)
Кто, автор вопроса? Который тока-тока начал ком осваивать? Не смешите мои тапочки. А нафига оно ему надо, когда стандартного за глаза?
>Не придирайся. Понятно же, что на COM-интерфейсные.
Да не придираюсь я ни разу, ей-ей. Он же книгу читает, че, там не написано, как интерфейсы передавать.
>_Z_ (02.04.08 14:46) [44] Упрямый ты. Ты пост [31] читал? Какие ты ссылки на объекты ты собрался передавать из одного процесса в другой, и че ты там собираешься делать. Либо отвечаешь на эти вопросы, либо дальше без меня.
>ни в моем бумажном варианте, ни в инете я пока так и не отыскал простого примера по передаче ссылки на объект в другой процесс.
Еще бы.
-
> _Z_ (02.04.08 14:46) [44] > >
> Как показала практика не работает
Что, и с ключем /regserver регистрация тоже не осуществляется ? А попытка-то хоть при этом есть, если наблюдать под монитором ?
> не отыскал простого примера по передаче ссылки на объект > в другой процесс
На какой такой "другой" ?
-
> че, там не написано, как интерфейсы передавать
Ну это был типа риторичесуий вопрос:))
> Какие ты ссылки на объекты ты собрался передавать из одного > процесса в другой, и че ты там собираешься делать.
А эт тож вопрос, тока не риторический.
-
> Кто, автор вопроса? Который тока-тока начал ком осваивать?
Именно поэтому я и предложил изучить механизм маршаллинга на примере sconnect.
-
Да нафига оно надо-то?!! Поставил флажок, рзарегил библиотеку типов - готово, имеешь маршалер. Свой городить имеет смысл, когда типы нестандартные, а тут-то нафига? Я вручную прокси-стаб делал, занетие - не для начинающих, однозначно. Лучше студию запустить и там сгенерить.
Но здесь-то, в этой ветки оно нафига???
> изучить механизм маршаллинга на примере sconnect
Да не маршалинг там, в sconnect:(( Так, бледная тень. Куча ограничений, недоделок, плюс глюки.
-
> рзарегил библиотеку типов
Да нафига оно надо-то, что-то там "регить" для узкоспецифической задачи ?)
Реестр и так переполнен хламом по самое нехочу, еще и свой хлам ради непонятной блажи ?)
-
> Свой городить имеет смысл, когда типы нестандартные
А вот с этого и надо было автору начинать)
Мож он какой-нить TMyComponent в оригинальноq его ипостаси собрался туда-сюда гонять)
-
> Куча ограничений, недоделок, плюс глюки
Все это легко снимается, дорабатывается и устраняется. Взамен получаем маршаллер, заточенный под любой свой каприз)
-
> здесь-то, в этой ветки оно нафига?
В вопросе, вообще-то, ни СОМ ни OLE не фигурировал.
Речь шла просто о некоем маршаллинге.
-
2 Сергей М
Лана, с этим, считаем, разобрались. Вертаемся к вопросу:)
2 _Z_
> Ищется пример передачи ссылки на созданный объект (интерфейс) > в другой процесс. Что то сам не осилил пока.
Дык всеж-таки - объект или интерфейс? Разницу асися? И че, в книге нет примера передачи интерфейса?! Я ее канечна не читал, но чет не верится. Хотя мож и нет, вещь-то самоочевидная. добавь в метод сервера out или var параметр типа интерфейс и возвращай на здоровье. Но - интерфейс!, не объект!
-
> Дык всеж-таки - объект или интерфейс? Разницу асися? И че, > в книге нет примера передачи интерфейса?! Я ее канечна > не читал, но чет не верится. > Хотя мож и нет, вещь-то самоочевидная. добавь в метод сервера > out или var параметр типа интерфейс и возвращай на здоровье. > Но - интерфейс!, не объект!
Не интерфейс, объект. Создаем на сервере:
Obj:=IComObj.Create
А в клиенте хочу не создавать свой, а использовать созданный на сервере.
Можно ли так сделать?
Идея - организовать вывод на форму приложения фрейм (или даже всю форму) из службы. Может конечно я не с того конца подступился... Может и не надо так делать. Может правильнее создавать объект из клиента, а уже при создании запуститься служба и через этот объект мы сможем вытягивать необходимые данные от службы?
-
> Может правильнее создавать объект из клиента, а уже при > создании запуститься служба и через этот объект мы сможем > вытягивать необходимые данные от службы?
Именно так.
-
> Можно ли так сделать?
Нет, нельзя. Опять возвращаемся к тому-же - к организации памяти в Windows. И к понятию "виртуальное адресное пространство процесса"
> Obj:=IComObj.Create
Это ваще че такое? Кто такой IComObj? Класс? Кокласс? Create - это что? Конструктор? Функция? Если функция, какой тип возвращает?
Послушай совета - нэ делай сервиса, нэ нада:(
-
> > Может правильнее создавать объект из клиента, а уже при > > > создании запуститься служба и через этот объект мы сможем > > > вытягивать необходимые данные от службы? > > > Именно так.
Ладно, с этим выяснил. Создаю в службе COM сервер, который запустится при запросе клиентом. По сколько ком сервер выполняется в адресном пространстве службы, то он имеет полный доступ к данным этой службы и значит через методы ком сервера можно вытягивать простые типы данных, совместимые с моделью ком? А можно ли тянуть "сложные" данные? Ну к примеру, хочу вытягивать структуры.
-
> хочу вытягивать структуры
Без проблем. Опиши структура в библилтеке типов и создай метод, возвращающий параметр типа этой структуры. Не пройдет для массива структур.
|