Push or Pull для сервера автоматизации почти в реальном времени?

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

Что считается идеальным с точки зрения производительности, масштабируемости и сетевой нагрузки метода передачи данных в среде, близкой к реальному времени?

Обновлять: Вот Связь, который дает пищу для размышлений относительно обновлений пользовательского интерфейса.

За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
4
0
726
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Пока клиент инициирует соединение (чтобы избежать проблем с брандмауэром и NAT), все в порядке.

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

Было бы меньше сетевого трафика, если бы сервер отправлял обновления без того, чтобы клиент постоянно запрашивал обновления.

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

У нас есть собственное клиентское программное обеспечение, и на данном этапе мы не работаем через Интернет.

Darren 12.09.2008 16:19
Ответ принят как подходящий

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

Отраслевые стандарты, такие как OPC, GID, поддерживают оба. Сервер отправляет обновления подписанным клиентам, но клиент может извлекать некоторые редко используемые данные, не беспокоясь о подписке.

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