Net.Sockets, WCF или ASP.NET для чата в реальном времени

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

Поэтому я буду разрабатывать с использованием C#, но вопрос в том, что я должен использовать? Я не знаю, какой метод будет лучше для этого чата. Мне нужно выбирать между Net.Sockets, WCF и ASP.NET. Поэтому я прошу вас помочь мне с выбором. Если я использую ASP.NET, мне придётся поиграть с вещами с собственным хостом, потому что я не хочу создавать сайт или что-то подобное для использования чата.

2 ответа

Решение

Во-первых, давайте начнем с ваших вариантов

  1. Net.Sockets слишком низкого уровня. Трудно сделать приемлемый протокол. Но вы можете использовать существующий протокол - WebSockets. Существует руководство по написанию сервера websocket на C#: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server

  2. Возможно, если вы выберете WCF, вы можете попытаться использовать постоянное дуплексное соединение WCF через netTcpBinding. Это легко сделать самостоятельно принимающий WCF-сервис. Но WCF сложен, и я думаю, что это накладные расходы для простых задач. Кроме того, как я знаю, дуплексное соединение работает с использованием длинного опроса, который тратит много ресурсов. Тщательно выбирайте этот вариант.

  3. ASP.NET. Если вы говорите о MVC или Web Api, вы должны использовать длинный опрос, который тратит много ресурсов и не в реальном времени

Есть еще один вариант - ASP.NET SignalR (который работает с использованием WebSockets)

  1. Здесь вы можете посмотреть, как написать клиент: https://github.com/SignalR/SignalR/wiki/SignalR-Client
  2. И здесь вы можете найти учебник по самостоятельному хостингу SignalR: http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host

Как уже упоминалось в @nsinreal, SignalR, вероятно, лучший путь для этого.

В сети множество примеров - вот вам пример:

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

Это для приложения чата, не меньше:)

Другие вопросы по тегам