Как структурировать чат / систему поддержки клиентов - PullRequest
3 голосов
/ 03 декабря 2010

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

Сценарий таков.Мы хотели бы, чтобы пользователи нашего сайта могли нажимать кнопку «Поддержка интерактивного чата», после чего у них появляется всплывающее окно, которое пытается соединить их с одним из наших сотрудников службы поддержки.

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

Учитывая, что наш клиент для настольного компьютера будет создан с использованием WPF в C # .NET и нашисайт ASP.NET MVC 2 - что было бы лучшим способом установить связь между ними?

Сначала я хотел, чтобы веб-сторона сохраняла чат в базе данных SQL и каким-то образом "пинговала" подходящую часть.настольный клиент говорит ему обновить журнал чата.Аналогично для рабочего стола в Интернете.Но я не уверен, как реализовать это между двумя разными платформами.Если бы это был настольный клиент или настольный клиент, я думаю, это было бы намного проще, но это не так.

Также, пожалуйста, помните, что я понимаю, что уже есть коммерческие приложения, которые делают это.Тем не менее, нам нужна определенная функциональность, выходящая за рамки простого чата - не стоит вдаваться в подробности, но в основном мы должны реализовать собственное решение.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 03 декабря 2010

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

Если вы все еще хотите добиться успеха самостоятельно, главное препятствиеВам придется преодолеть то, как отправлять сообщения в браузер.«Пинговать» браузер с сервера невозможно, используя чистые веб-технологии, потому что HTTP построен на модели «запрос / ответ» только для извлечения.Постоянное соединение между клиентом на сервере не поддерживается.После того как сервер завершит отправку страницы в броузер, соединение разорвано.

Вы можете опрашивать веб-сервер на наличие новых сообщений, но это не масштабируемое решение.Если вы имеете дело только с очень небольшим (скажем, однозначным) числом пользователей, то это может сработать, но ваша отзывчивость будет ограничена скоростью, с которой вы проводите опрос, и чем быстрее вы будете опрашивать, тем менее масштабируемым будет это решение.be.

Лучшим решением было бы использование Silverlight, Flash или другой технологии толстого клиента, работающей в браузере.Тогда вы могли бы реализовать сервис, который обрабатывает маршрутизацию сообщений между клиентами. Эта статья о CodeProject может быть хорошим местом для начала.

...