Я работаю над приложением, похожим на чат, где я использую Silverlight на стороне клиента и wpf на стороне сервера. Сейчас связь основана на сокетах: у меня есть разные классы сообщений, которые я сериализую и отправляю по TCP.
Я начинаю понимать, что создание отдельного класса сообщений для каждого возможного сценария связи - это непростая задача, и я думаю о переходе на WCF.
Поэтому мне нужно знать следующее:
Кажется, что вся связь, использующая WCF, основана на методах, открытых клиентским callind из моей службы WCF. Есть ли способ узнать, какой клиент вызывает определенный метод? Это очень важно для моего приложения.
Уведомляет ли WCF мое приложение, когда клиент отключается (например, закрывает окно браузера, в котором работает клиент Silverlight) от сервера? Это тоже очень важно.
Являются ли вызовы методов полностью асинхронными? Если да, нужно ли перенаправлять каждый вызов метода в основной поток серверного приложения?
У каждого клиентского соединения есть свой собственный поток? Сколько одновременных подключений может обработать сервер (работающий на ПК с разумной мощностью), если клиенты вызывают методы каждые 2 секунды? Мне просто нужна оценка (10, 100, 1000 или даже больше). «Больше» было бы здорово;)
Возможно, я совершенно не прав, и WCF вообще не работает на основе соединений. Тогда мне нужно будет найти обходной путь для управления списком активных соединений.
Спасибо за вашу помощь!
Андрей