Создание сервера сообщений
От: sinnus  
Дата: 05.07.04 05:18
Оценка:
Пишу сервер сообщений.
Предполагаемая схема работы следующая:
1. Сервис создает COM+ объект (синглетон) с дефалтовым интерфейсом IMessServer.
2. Клиент создает у себя COM+ объект с дефалтовым интерфейсом IClientServer,
вызывает метод IMessServer.AddConnect(IClientServer) у созданного на сервере
объекта (синглетона), который в свою очередь регистрирует в списке клиентов
этот интерфейс.
3. Клиент посылает сообщение используя метод IMessServer.SendNotice(UserName, ...).
4. Сервер находит в списке клиентских интерфейсов тот, которому было послано
сообщение и вызывает у него метод IClientServer.Callback(...);
Оцените схему.
Как быть, если в спиcке оказался "мертвый интерфейс"
Спасибо.
... << RSDN@Home 1.1.3 stable >>
Re: Создание сервера сообщений
От: Аноним  
Дата: 05.07.04 12:49
Оценка:
Здравствуйте, sinnus, Вы писали:

S>Пишу сервер сообщений.

S>Предполагаемая схема работы следующая:
S>1. Сервис создает COM+ объект (синглетон) с дефалтовым интерфейсом IMessServer.
S>2. Клиент создает у себя COM+ объект с дефалтовым интерфейсом IClientServer,
S>вызывает метод IMessServer.AddConnect(IClientServer) у созданного на сервере
S>объекта (синглетона), который в свою очередь регистрирует в списке клиентов
S>этот интерфейс.
S>3. Клиент посылает сообщение используя метод IMessServer.SendNotice(UserName, ...).
S>4. Сервер находит в списке клиентских интерфейсов тот, которому было послано
S>сообщение и вызывает у него метод IClientServer.Callback(...);
S>Оцените схему.
S>Как быть, если в спиcке оказался "мертвый интерфейс"
S>Спасибо.

Самому было интересно, что скажут гуру по такой схеме... Но все молчат, от себя могу сказать следующее: использую практически такую схему, всё работает как часы... По поводу мёртвых интерфейсов — вызываю их методы через try except, в случае except выкидываю из списка клиентов (можно дополнительно вызывать какой ниб метод, для проверки).
Re[2]: Создание сервера сообщений
От: sinnus  
Дата: 06.07.04 02:18
Оценка:
Здравствуйте, <Аноним>, Вы писали:

[skip]
А>Самому было интересно, что скажут гуру по такой схеме... Но все молчат, от себя могу сказать следующее: использую практически такую схему, всё работает как часы... По поводу мёртвых интерфейсов — вызываю их методы через try except, в случае except выкидываю из списка клиентов (можно дополнительно вызывать какой ниб метод, для проверки).
Спасибо. Хоть кто-то ответил
... << RSDN@Home 1.1.3 stable >>
Re: Создание сервера сообщений
От: Tom Россия http://www.RSDN.ru
Дата: 06.07.04 12:28
Оценка:
Здравствуйте, sinnus, Вы писали:

S>Пишу сервер сообщений.

S>Предполагаемая схема работы следующая:
S>1. Сервис создает COM+ объект (синглетон) с дефалтовым интерфейсом IMessServer.
S>2. Клиент создает у себя COM+ объект с дефалтовым интерфейсом IClientServer,
S>вызывает метод IMessServer.AddConnect(IClientServer) у созданного на сервере
S>объекта (синглетона), который в свою очередь регистрирует в списке клиентов
S>этот интерфейс.
S>3. Клиент посылает сообщение используя метод IMessServer.SendNotice(UserName, ...).
S>4. Сервер находит в списке клиентских интерфейсов тот, которому было послано
S>сообщение и вызывает у него метод IClientServer.Callback(...);
S>Оцените схему.
S>Как быть, если в спиcке оказался "мертвый интерфейс"
S>Спасибо.

Если это возможно, то лучше всего использовать COM+ события. Если нет — то делай как делаешь. Мёртвых клиентов можно просто выбросить из списка и продолжить вызывать других клиентов. Вот только будет проблемма в том, что клиенты вызываются последовательно, по этому, если один тормозит — все ждут, по сему вызов клиентов можно реализовать на пуле потоков.
Народная мудрось
всем все никому ничего(с).
Re[2]: Создание сервера сообщений
От: sinnus  
Дата: 07.07.04 11:03
Оценка:
Здравствуйте, Tom, Вы писали:

[skip]
Tom>Если это возможно, то лучше всего использовать COM+ события. Если нет — то делай как делаешь. Мёртвых клиентов можно просто выбросить из списка и продолжить вызывать других клиентов. Вот только будет проблемма в том, что клиенты вызываются последовательно, по этому, если один тормозит — все ждут, по сему вызов клиентов можно реализовать на пуле потоков.
COM+ события использовать не получится.
И как определить, что клиенты "мертвые". По exception?
... << RSDN@Home 1.1.3 stable >>
Re[3]: Создание сервера сообщений
От: Tom Россия http://www.RSDN.ru
Дата: 07.07.04 11:41
Оценка:
S>По exception?
Да. Только так
Народная мудрось
всем все никому ничего(с).
Re[4]: Создание сервера сообщений
От: sinnus  
Дата: 09.07.04 02:23
Оценка:
Здравствуйте, Tom, Вы писали:

S>>По exception?

Tom>Да. Только так
Жалко, т.к. много времени будет уходить на это
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.