У меня есть чат-служба WCF, которая принимает дуплексные соединения tcp. Одноточечное соединение tcp можно использовать для отправки и получения сообщений для нескольких пользователей (поэтому я могу иметь несколько чат-серверов, которые все подключаются друг к другу).Подключение службы чата ASP.Net к Wcf/Tcp
Теперь я хочу добавить веб-пользователей в микс, чтобы они общались с пользователями на рабочем столе. Это для типа «живая поддержка». В основном я пытаюсь найти лучший способ сделать «вне диапазона» связь с ASP.Net для этого чата.
Я думал, что у меня может быть статическое/глобальное дуплексное соединение с одним из чат-серверов, и я мог бы использовать его для всех запросов на этот сервер ASP.Net. Будет ли это работать? Дуплексное соединение - это ВСЕ односторонние вызовы, могу ли я использовать этот канал WCF без блокировки доступа к нему?
ОБНОВЛЕНИЕ: Спасибо за ваши предложения. Я должен был отметить: мой чат-сервис сам по себе, он не работает в IIS. Итак, я в основном обеспокоен тем, как я могу заставить IIS открыть соединение до тех пор, пока приложение не выгрузится. Соединение от веб-браузера к IIS будет silverlight, flash, ajax, iframes, что угодно.
Вы правы. Мне нужно будет сделать двунаправленную очередь сообщений или две отдельные очереди сообщений на одно соединение с дуплексной службой. Я также думал об использовании ReaderWriterLockSlim для защиты POOL от wcfDuplexClients, которые растут и сжимаются и хранятся в статической/глобальной коллекции. –
Каждый wcfDuplexClient в пуле может иметь свою собственную очередь ввода/вывода. Таким образом, я мог бы читать LockWriterLockSlim, захватить wcfDuplexClient, lock (wcfDuplexClient.sendLock) {wcfDuplexClient.Send (myCommand); } и т. д. –
Все еще думает о выделенном канале за сеанс. Это может быть лучшим способом. –