|
|
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
Необходимо обеспечить взаимодейсвие приложения с сервисом NT. И сервис и приложение пишуться одним разработчиком. Приложение должно иметь прямой доступ к области памяти сервиса, для получения данных и управления внутренними объектами сервиса. Например: Сервис содержит список указателей на Объекты. Приложение должно иметь возможность получить доступ к списку и непосредственно к самим объектам. Какие механизмы известны для подобного рода взаимодействия? Дмитрий Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 22:33 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
Вообще это не очень хорошо, получать доступ с самим объектам из другого места. Лучше говорить сервису о том, что нужно сделать с объектами, а он сам ими управляет. Раньше это модно было писать через COM, но там есть трудности, если сервис и приложение на разных компьютерах, а уж если компы в разных доменах ... Но всё преодолимо. MS даже предложил технологию отложенных вызовов, т.е. приложение может выполнять вызовы в случае отсутствия сервиса :). (забыл название - что-то вроде MS Queue) Сейчас это модно писать через web-сервисы. Вообще, как только всю работу по обработке объектов переложить на сервис (наз. сервер приложений), то остаётся выбрать только транспортный уровень. Если никак не отказаться от прямого управления чужой памятью, то надо посмотреть доступ к памяти другого процесса. Первый раз я об этом читал у Рихтера - Windows для профессионалов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 22:54 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
CreateFileMapping и так далее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 00:21 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
Взаимодействие Windows-процессов многократно обсуждалось в форуме. Это PIPES, Sockets, MemoryMappedFiles . Для уровня повыше - RPC . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 00:45 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
ounces, >Вообще это не очень хорошо, получать доступ с самим объектам из другого места. Лучше говорить >сервису о том, что нужно сделать с объектами, а он сам ими управляет. Раньше это модно было писать >через COM, но там есть трудности, если сервис и приложение на разных компьютерах, а уж если >компы в разных доменах ... Да проблема собственно говоря в том что админская панель сервиса, должна быть доступна по клику в иконке систрея.У меня никак не получается заставить сервис показывать эту иконку автоматически после логина в NT сессию. Так же и из сессии NT не выйти если сервис активно взаимодействует с иконкой. Остается только писать программку типа Service Manger MS SQL, через которую можно обращаться к сервису, запускать останавливать и вызывать админскую консоль. >Если никак не отказаться от прямого управления чужой памятью, то надо посмотреть доступ к памяти >другого процесса. Первый раз я об этом читал у Рихтера - Windows для профессионалов. Да. Но там я заметил пару тонкостей. Вопервых, Борландовский компилятор(а я на нем), компилит #pragma data_seg("Shared") volatile int g_a = 0; #pragma data_seg() #pragma comment(linker, "/Section:Shared,RWS") но эффекта по разделению памяти никакого не происходит. Потом, как я понял, разделять общую область памяти могут экземпляры одного и того же exe или dll, т.е нельзя обращаться из программы А в прорамму В, а только из А в А. Нада писать промежуточную dll, доступную обоим процессам. Наверное вариант COM больше подходит. Дмитрий Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:00 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
один процесс не может открыть свою память другому. адресное пространство защищено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:15 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbДа проблема собственно говоря в том что админская панель сервиса, должна быть доступна по клику в иконке систрея.У меня никак не получается заставить сервис показывать эту иконку В настройках сервисов есть "Разрешить взаимодействие с рабочим столом", может это поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:16 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
IcyCool, >В настройках сервисов есть "Разрешить взаимодействие с рабочим столом", может это поможет? Посмотрел сейчас. К сожалению нет. В SMC (панели управления сервисами NT) эта настройка проставлена и в самом коде проекта, в BCB свойство interactive == true. Наверное с сервисом вариант с иконкой в трее не прокатит. Нада писать отдельную взаимодействующую оконную програму и прописывать ее в реестр в автозагрузку, чтобы при логине подключалась к сервису. Как думаете? Дмитрий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:34 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbКак думаете?А как ты думаешь, почему все делают именно так ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:36 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас, >А как ты думаешь, почему все делают именно так ? Наверное потому что иначе никак. Я вас правильно понял? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:02 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
[quot rodb] > Наверное вариант COM больше подходит. COM можно представить как просто транспортный уровень. Т.е. тащить за собой COM, когда нужно просто обмениваться несколькими байтами информации, необязательно. Можно, например, передавать блоки информации по IP - сервис будет сервером, а приложение - клиентом. Можно усложнить и гонять по IP XML для универсальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:27 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbНаверное потому что иначе никак. Я вас правильно понял?мы думаем, что так - правильно, а остальные способы - от лукавого :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 13:17 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
Карабас, А вам приходилось реализовывать COM интерфейсы в NT сервисах? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 14:46 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbА вам приходилось реализовывать COM интерфейсы в NT сервисах?таких задач не было Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 14:54 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbА вам приходилось реализовывать COM интерфейсы в NT сервисах? возможно не понял юмора - но COM то нахрена ? Маршалинг заюзать - да прокатывает. в сервисах приходилось дышать и на сях и на шарпе. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 15:30 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
kolobok0, >возможно не понял юмора - но COM то нахрена ? Маршалинг заюзать - да прокатывает. в сервисах >приходилось дышать и на сях и на шарпе. под COM понимается DCOM сервер реализованный в exe. Существует проблема вживления COM объекта в сервис. Среда будет пытаться инстанциировать новую копию сервиса, если просто реализацию COM интерфейса перенести в сервис. Для этого необходимо в реестр внести кое какие изменения. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomg/html /localserv.asp я попробовал - все работает. Но вот появилась следующая проблема. Два COM интерфейса не хотят нормально жить в одном сервисе. А мен нужен один интерфейс для взаимодействия клиентов с сервером, второй для управления сервером из админской консоли. >Маршалинг заюзать это как? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 17:00 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
авторПриложение должно иметь прямой доступ к области памяти сервиса, для получения данных и управления внутренними объектами сервиса. Например: Сервис содержит список указателей на Объекты. Приложение должно иметь возможность получить доступ к списку и непосредственно к самим объектам. сильно сомневаюсь, что это правильная постановка задачи. Разные процессы, в том числе - удалённые. И, следовательно, объекты для управления должны управляться через события COM, либо самим сервисом. Либо сервис должен выдавать элементы списка в виде COM-списка, да ещё OLE - совместимыми типами. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 17:58 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodb...под COM понимается DCOM сервер реализованный в exe. Существует проблема вживления COM объекта в сервис. Среда будет пытаться инстанциировать новую копию сервиса, если просто реализацию COM интерфейса перенести в сервис. Для этого необходимо в реестр внести кое какие изменения. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomg/html /localserv.asp я попробовал - все работает. Но вот появилась следующая проблема. Два COM интерфейса не хотят нормально жить в одном сервисе. А мен нужен один интерфейс для взаимодействия клиентов с сервером, второй для управления сервером из админской консоли. >Маршалинг заюзать это как? Вам нужен, насколько я вьезжаю - аутпроксервер реализованый в сервисе. В сервисах, есть опыт, юзанья си шарпа. Делали связь с ентим зверем через HTTP & WMI. Сами аутпроксевраки приходилось так же - в обычных EXE. Если у Вас не работает два в одном стакане - значит то, что я глаголю - это Вы всё уже прошли. А Ваши проблемы очень смахивают на сингл апартмен. Вам же нужен малти...насколько я вьезжаю. Да, и ышо... На дев-студию не пологайтесь. Там есть тонкие моменты, она не правильно генерит проекты в данной области. Рулит МСДН и шаловливые ручки. Моё мнение - Ваша связка должна дышать. по поводу маршалинга - да, что то я зациклился на межпроцессорной передачи данных. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 19:27 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
kolobok0, >Если у Вас не работает два в одном стакане - значит то, что я глаголю - это Вы всё уже прошли. А >Ваши проблемы очень смахивают на сингл апартмен. Вам же нужен малти...насколько я вьезжаю. otSingle, otApartment, otFree, otBoth, otNeutral, otAmbientThreadModel А какой из них сингл , какой малти? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 20:28 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodbotSingle, otApartment, otFree, otBoth, otNeutral, otAmbientThreadModel А какой из них сингл , какой малти? опс... тут я и поплыл... заглянул в код...наткнулся на такое вот... Код: plaintext 1. 2. это комовский аутпроксервак. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 17:08 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
kolobok0, вот тут некто JibSkeart, предлагает поставить макрос, DECLARE_CLASSFACTORY_SINGLETON(TTCOMyServerImpl) я пока эффекта не ощутил в своей проблеме. Если знаете , скажите, что это такое SINGLETON. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 19:05 |
|
||
|
Взаимодействие приложения с сервисом NT
|
|||
|---|---|---|---|
|
#18+
rodb kolobok0, вот тут некто JibSkeart, предлагает поставить макрос, DECLARE_CLASSFACTORY_SINGLETON(TTCOMyServerImpl) я пока эффекта не ощутил в своей проблеме. Если знаете , скажите, что это такое SINGLETON. Posted via ActualForum NNTP Server 1.3 помойму синглетон , неработает если СОМ outproс(exe) , в моем случае inproc(dll) , это работало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 20:45 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2032025]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 532ms |

| 0 / 0 |
