powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF + подписки
5 сообщений из 5, страница 1 из 1
WCF + подписки
    #38025643
noob123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некий источник событий, в пике в секунду создается 4-6 новых событий которые нужно рассылать подписчикам. (примерно 500).
реализован сервис
InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple
события рассылаются следующим образом. просто проходим циклом по всем подписчикам и вызываем callback.
все работает отлично пока какой-нибудь клиент не отваливается. соответственно все ждут пока истечет таймаут.

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

решается ли как то эта проблема штатными средствами wcf?
...
Рейтинг: 0 / 0
WCF + подписки
    #38027543
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noob123,

Тоже было бы интересно решение... начал городить что-то подобное, но какое-скверное чувство что вс должно быть не так совсем - как то сама модель подписки ломается...
...
Рейтинг: 0 / 0
WCF + подписки
    #38028431
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noob123так как например если из 500 клиентов отпадет половина то можно весь пул забить задачами которые будут висеть по таймауту. (или в ситуации когда в пуле нет свободных потоков, расширять пул?)

решается ли как то эта проблема штатными средствами wcf?

решается, только к wcf это отношения не имеет,
можете вообще каждый callback отправлять в новом потоке
...
Рейтинг: 0 / 0
WCF + подписки
    #38035652
noob123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати уточнение, все что выше работает с учетом
<reliableSession enabled="true"/>
тоесть используются надежные сеансы.
если же их отключить. то при отключении клиента, например даже если физически отрубить от сети, вываливается событие
OperationContext.Current.Channel.Faulted += new EventHandler(Channel_Faulted);
причем почти моментально (причем даже если сообщения никакие не рассылать).
правда не очень понимаю как это происходит? тоесть получается какой то механизм типа пинга есть? (и не снизит ли это общую производительность при большом количестве клиентов?)
...
Рейтинг: 0 / 0
WCF + подписки
    #38037463
__Pavel__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно у меня соединения отваливаются моментально... создай в интерфейсе пустую процедуру
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Interface ICallback

    <OperationContract(IsOneWay:=True)> _
    Sub Ping()

End Interface



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

Вот как мой сервер время от времени проверяет отвалившиеся клиенты:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Private Sub Tim_Tick()
        For i As Integer = S.pub_AdministratorsLogin.Count - 1 To 0 Step -1
            Try
                DirectCast(S.pub_AdministratorsLogin.Keys(i), ICallback).Ping()
            Catch ex As Exception
                S.U_Exit(S.pub_AdministratorsLogin.Values(i).ToString)
            End Try
        Next
        For i As Integer = S.pub_ClientsLogin.Count - 1 To 0 Step -1
            Try
                DirectCast(S.pub_ClientsLogin.Keys(i), ICallback).Ping()
            Catch ex As Exception
                S.U_Exit(S.pub_ClientsLogin.Values(i).ToString)
            End Try
        Next
    End Sub
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF + подписки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]