Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Interactive service   Найти похожие ветки 

 
Agt   (2006-02-09 14:49) [0]

Подскажите плз. как правильно организовать сервис с использованием MDI формы для его управления. Я вроде сделал, определяет вход пользователя, вешает икону, но проблема с передачей событий форме. Для работы MDI требуется установленное Application.MainForm, оно, ест-но отличается от App сервиса. При старте я принудительно иницирую App форм,  создаю форму, в обработчике событий сервиса вызываю ProcessMessages, но при нажатии на икону форма все-равно не получает событий. Старт/стоп работает нормально. Может я в чем-то в корне не прав ?


 
Digitman ©   (2006-02-09 14:54) [1]

Для интерактивного взаимодействия с сервисом создай отдельно либо обычное GUI-приложение либо CPL.


 
Leonid Troyanovsky ©   (2006-02-09 14:59) [2]


> Agt   (09.02.06 14:49)  

> работает нормально. Может я в чем-то в корне не прав ?


Конечно. MDI формы уже давно не модны.
Кроме того, для управления сервером пользуют обычную (отдельно
стоящую программу) , которая может стартовать, например, при логоне.
Т.е., интерактивность серверу вовсе не нужна.

--
Regards, LVT.


 
Agt   (2006-02-09 14:59) [3]

Обычное приложение будет присутствовать дополнительно в исполняемых процессах, чего нехотелось бы.


 
Digitman ©   (2006-02-09 15:02) [4]


> Agt   (09.02.06 14:59) [3]


Тогда откажись от MDI.

Я вообще не понимаю, на кой ляд для этого потребовался именно Multiple Document Interface .. Какие такие в сервисе "документы" - ума не приложу)


 
Leonid Troyanovsky ©   (2006-02-09 15:02) [5]


> Agt   (09.02.06 14:59) [3]
> Обычное приложение будет присутствовать дополнительно в
> исполняемых процессах, чего нехотелось бы.


Оное приложение може быть, вообще, на другом компьютере.

--
Regards, LVT.


 
Agt   (2006-02-09 15:06) [6]

Ясно. Почему MDI ? Есть уже написанное приложение, основанное на нем, нужно переложить его на сервис.


 
Digitman ©   (2006-02-09 15:21) [7]


> Agt   (09.02.06 15:06) [6]


> нужно переложить его на сервис


Зачем ?


 
Leonid Troyanovsky ©   (2006-02-09 15:22) [8]


> Agt   (09.02.06 15:06) [6]


Как из убыточного хозяйства сделать прибыльное,
ничего в оном не меняя.

--
Regards, LVT.


 
Agt   (2006-02-09 15:28) [9]

:) Блин, ну пусть будет так, раз задача такая... :)
Хорошо, может я не модный, тогда подскажите, что нынче в моде ? :)


 
Digitman ©   (2006-02-09 15:31) [10]


> что нынче в моде ?


Нынче в моде отвечать на вопрос, зачем тебе понадобилось переделывать свое приложение в сервис ..


 
Leonid Troyanovsky ©   (2006-02-09 15:34) [11]


> Agt   (09.02.06 15:28) [9]
> :) Блин, ну пусть будет так, раз задача такая... :)


Дык в чем задача? Засунуть интерактивное приложение в сервис? :)
Ну, а если хочется клиент- MDI приложение - ради Бога.
В свое время, скажем, IRC клиенты были сплошь такими.

Только, кажется мне, что проще не смешивать в одно приложение
клиента для обычной работы, и клиента для администрирования.

--
Regards, LVT.


 
Agt   (2006-02-09 15:37) [12]

Приложение является серверным. Используется много различных внутренних подструктур, управляемых MDI интерфейсом, т.к. не все обрабатываемые функции требуются в ее клиентской части. Нужно все ЭТО переложить на сервис.


 
Digitman ©   (2006-02-09 15:42) [13]


> Нужно все ЭТО переложить на сервис


Зачем ?!
Зачем понадобилось делать сервисом вполне работоспособное обычное приложение ?
Вразумительно можешь объяснить ?)


 
Leonid Troyanovsky ©   (2006-02-09 15:42) [14]


> Agt   (09.02.06 15:37) [12]
> Приложение является серверным. Используется много различных
> внутренних подструктур, управляемых MDI интерфейсом, т.к.
>  не все обрабатываемые функции требуются в ее клиентской
> части. Нужно все ЭТО переложить на сервис.


Ну и переложи.
Те функции, которые клиенту выполнять не с руки, т.е., удобней выполнять
серверу(сервису), передаются последнему.
А всякие показы и иное взаимодействия с пользователем - у клинта.

--
Regards, LVT.


 
Agt   (2006-02-09 15:49) [15]


> Зачем ?!
> Зачем понадобилось делать сервисом вполне работоспособное
> обычное приложение ?
> Вразумительно можешь объяснить ?)

Может вы и правы. Мне все-ж самому интересно, как формируются приложения типа Outpost-a


 
Agt   (2006-02-09 15:52) [16]

... хотя конечно же оно не MDI... :) но мне впринципе интересно, возможно это сделать или нет...


 
Digitman ©   (2006-02-09 15:55) [17]


> возможно это сделать или нет


MDI ? Возможно. Но не нужно и не при поддерже VCL.


 
Agt   (2006-02-09 15:59) [18]

само приложение лежит на http://keyout.ru/programm.htm, если интересно, что это такое


 
Agt   (2006-02-09 16:00) [19]

Тогда как ? (всмысле с помощью чего ?)


 
Digitman ©   (2006-02-09 16:06) [20]

Какое из приложений (см.  http://keyout.ru/programm.htm) могло бы стать, по твоему мнению, сервисом - клиентское или серверное ?


 
Agt   (2006-02-09 16:08) [21]

серверное


 
Digitman ©   (2006-02-09 16:14) [22]

Сервер мультипоточный ?


 
Agt   (2006-02-09 16:26) [23]

да


 
Agt   (2006-02-09 16:28) [24]

всмысле наверное я не так понял...
клиенты подсоединяются по сокету, их запросы обрабатываются и т.п.


 
Digitman ©   (2006-02-09 16:29) [25]

Что происходит в доп.потоках ?


 
Agt   (2006-02-09 16:33) [26]

о... там много чего происходит... но вся каша происходит с оборудованием....


 
Agt   (2006-02-09 16:35) [27]

но к управлению с клиентской стороны накладывается еще некоторое обслуживание со стороны самого серверного приложения через MDI интерфейс....


 
Agt   (2006-02-09 16:48) [28]

Я конечно изначально знал, что лучше полностью изолировать сервер от интерфейса, но слишком там много завязано между объектами, оборудованием... и написание приложения затянулось бы еще на неограниченный период... В дальнейшем, конечно может я и переделаю... Но пока приходится довольствоваться тем, что есть... и так мозги не резиновые...


 
Agt   (2006-02-09 16:50) [29]

И все же ... больной вопрос: это возможно ? Если да, то как ?


 
Digitman ©   (2006-02-09 17:07) [30]

В любом случае без основательной переделки приложения-сервера не обойтись.

У тебя не менее двух концептуальных путей :

1. Разделить серверное приложение на два:
- первое (сервис) обеспечивает ключевую функциональность (связь с оборудованием, БД и т.п.)
- второе (монитор сервиса - обычное MDI-приложение) обеспечивает интерактивное управление работой сервиса

Взаимодействие между сервисом и монитором осуществить посредством любого подходящего механизма/технологии - MMF, NamedPipes, TCP/IP.

2. Реализовать в коде серверного приложения две функциональности:
- функциональность сервиса (см. выше);
- функциональность монитора - обычного приложения

В псевдокоде:

IF ПриложениеСтартованоКакСервис THEN
  Старт_Как_Сервис
ELSE
  Старт_Как_Обычное_Приложение


 
Agt   (2006-02-09 17:14) [31]

Это я уже пробовал. Но тяжело организовать связь между оъектами сервиса и минитора. Пробовал через расшаринную память, все хорошо, за исключением того, что многие свойства объектов содержат обработчики, которые в свою очередь туда не запихнешь. А организовавать черезь TCP/IP муторно... сшишком много появляется различных дополнительных управляющих комманд... Через TInterface тоже муторно... Первые два перечисленных способа не пробовал.


 
Digitman ©   (2006-02-09 17:17) [32]


> все хорошо, за исключением того, что многие свойства объектов
> содержат обработчики, которые в свою очередь туда не запихнешь


Их и не надо туда "пихать". Что-то важное ты не понимаешь в MMF...


> Первые два перечисленных способа не пробовал


Какие имеются ввиду ?


 
Agt   (2006-02-09 17:19) [33]

В дальнейшем, конечно я это все-равно разделю, и скорее всего, как и клиентское приложение через socket, но все это дается немалой кровью, поэтому это еще не скоро... А жаль...


 
Agt   (2006-02-09 17:19) [34]

В дальнейшем, конечно я это все-равно разделю, и скорее всего, как и клиентское приложение через socket, но все это дается немалой кровью, поэтому это еще не скоро... А жаль...


 
Agt   (2006-02-09 17:20) [35]

Возможно.


 
Digitman ©   (2006-02-09 17:23) [36]


> А жаль


А ты думал нахалявку обойтись ?

Нет, брат) ... Сервис есть сервис, у него свои особенности .. А GUI это GUI ..


 
Agt   (2006-02-09 17:28) [37]

Мне тут во всем приходится разбираться самому, и конечно многого еще не знаю.... Не слишком много советчиков, а работы погорло....


 
Agt   (2006-02-09 17:43) [38]

Все-равно спасибо, было приятно пообщаться. На всякий случай оставлю аську: 9013066.



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.048 c
2-1140564145
Bogdan1024
2006-02-22 02:22
2006.03.12
Пощитать сумму.


2-1140537404
Михаил (Киров)
2006-02-21 18:56
2006.03.12
Нуль-модемное соединение


2-1140600957
iles
2006-02-22 12:35
2006.03.12
Не присваиваеться значение Элементу массива объектов Tedit


3-1136992175
мускул
2006-01-11 18:09
2006.03.12
Синхронизация таблиц


2-1138597593
maxim161
2006-01-30 08:06
2006.03.12
ClientSocket&ServerSocket