Подтвердить что ты не робот

Перенаправить данные клиенту с помощью SignalR vs WCF?

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

SignalR лучше всего подходит для веб-приложений, я думаю, и у меня есть настольное приложение. С помощью службы WCF мы можем реализовать push-уведомление через Duplex-канал и обратный вызов. Можете ли вы, пожалуйста, направить меня, какие достоинства и недостатки в использовании служб SignalR или WCF?

Спасибо

4b9b3361

Ответ 1

Ниже приведены мои наблюдения из опыта:

Преимущества SignalR:

  • Простота запуска, более низкая кривая обучения. Вы можете легко запустить пример из веб-страницы
  • Обработка исключений (например, падение соединения, тайм-ауты) встроена в API

SignalR cons:

  • Поддерживать только протокол HTTP

Duplex pros:

  • Поддерживает TCP в дополнение к HTTP. Это может серьезно повысить производительность, если вы знаете свои типы клиентов, и ваша система работает в закрытой сети. Кроме того, работа над TCP добавляет больше стабильности соединения, чем HTTP

Дуплексные минусы:

  • Высшая кривая обучения - сложнее запускать и иметь стабильное решение. Хотите проверить? Загрузите дуплекс и образец SignalR из Интернета и посмотрите, сколько времени вы потратите, чтобы успешно запускать друг друга.
  • Вам необходимо обработать все исключительные случаи (сбой подключения, тайм-ауты и т.д.).
  • Я знаю, что я не единственный, кто столкнулся с серьезными проблемами с тайм-аутом, когда вы хотите использовать дуплекс-сервис в течение длительного времени. Мы должны периодически звонить службам, чтобы поддерживать клиентские подключения.

Кстати, существуют API-интерфейсы для проектов JavaScript, Desktop и Silverlight для использования служб SignalR.

Ответ 2

SignalR - это не только веб. Серверный код сервера SignalR не заботится о технологии своих клиентов, вам просто нужно иметь разработчиков на стороне клиента.

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

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

Кроме того, вы не можете использовать дуплекс (AFAIK) с javascript и objective-c.

Ответ 3

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

Вам не нужно беспокоиться о разработке/тестировании API и т.д. и можете сосредоточиться на собственной реализации проекта.

Надеюсь, что это поможет!

Ответ 4

SignalR можно легко использовать теперь с несколькими клиентами из javascript,.NET и WinForms и WPF, и может даже использоваться с клиентом С++; Использование автономного сервера .NET signalr (OWIN) - действительно хороший способ иметь автономный сервер, который подталкивает/принимает/передает несколько клиентов. Единственное, что может быть проще, - это ZeroMQ, используя свою методологию публикации подписки.

Ответ 5

Один момент, который никто не поднял до сих пор:

  • SignalR 1.0.1 требует .NET 4 на сервере и клиенте. В зависимости от версию вашего клиента и сервера, на которые вы нацеливаете может быть важным фактором для рассмотрения.

Если вы просто хотите периодически обновлять новые данные, вам может быть лучше просто использовать WCF и механизм опроса со стороны клиента, а не использовать дуплексный WCF или signalr.