ru:websonix:py_channel_article
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
ru:websonix:py_channel_article [2023/04/26 15:39] – создано bl | ru:websonix:py_channel_article [2023/09/21 22:23] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Аннотация ====== | ||
- | # Table of Contents | + | Командный интерфейс Sonix+ позволяет передавать команды и сигналы только в пределах управляющего компьютера, |
- | 1. [Аннотация](# | + | Для |
- | 2. [Введение](# | + | |
- | 3. [PyChannel](# | + | |
- | 4. [WebSonix](# | + | |
- | 5. [Передача сообщений между | + | |
- | 6. [Хранилище пользовательских файлов](# | + | |
- | 7. [Заключение](# | + | |
- | 8. | + | |
+ | ====== Введение ====== | ||
+ | Одно из направлений развития программного комплекса Sonix+ - создание сервисов для организации удобной работы пользователей. | ||
- | <a id=" | + | В качестве таких сервисов были разработаны система удалённого наблюдения за ходом эксперимента WebSonix и хранилище пользовательских файлов. |
- | # Аннотация | + | Изначально взаимодействие WebSonix с устройствами Sonix+ обеспечивало устройство CChannel. К сожалению протокол, |
- | Командный | + | Для развития |
- | сигналы | + | |
- | приложениями и адаптирован исключительно | + | |
- | Windows, что значительно ограничивает возможности развития программного | + | |
- | комплекса. | + | |
- | Для обхода этих | + | Дальнейшее развитие хранилища пользовательских файлов потребовало дополнительных функций обмена данными с модулями Sonix+. |
- | позволяет передавать сообщения между приложениями и устройствами Sonix+, | + | |
- | работающими на разных архитектурах, | + | |
+ | В качестве решения данных задач был создан PyChannel, который должен обеспечивать связь модулей Sonix+ с разной архитектурой, | ||
- | <a id=" | + | ====== PyChannel ====== |
- | # Введение | + | Разработка PyChannel началась с задачи создания простого способа для обмена сообщениями между процессами, которые могут быть запущены на разных устройствах с разной операционной системой. |
- | Одно из направлений развития программного комплекса Sonix+<a href="# | + | В качестве базового механизма для |
- | создание сервисов | + | |
- | В качестве таких сервисов были разработаны система удалённого наблюдения за | + | За реализацию функций маршрутизации и трансформации сообщений при передаче их между устройствами будет отвечать брокер сообщений. В качестве возможностей для реализации больше всего выделяется ZeroMQ, который по сути является библиотекой для обмена сообщениями. ZeroMQ позволяет создать свою систему обмена сообщениями. |
- | ходом эксперимента WebSonix и хранилище пользовательских файлов. | + | |
- | + | ||
- | Изначально взаимодействие WebSonix< | + | |
- | обеспечивало устройство CChannel. К сожалению протокол, | + | |
- | а так же некоторые особенности устройства, | + | |
- | работы WebSonix. | + | |
- | + | ||
- | Для развития интерфейса Sonix+ тоже потребовалась дополнительная | + | |
- | функциональность, | + | |
- | битными модулями Sonix+. | + | |
- | + | ||
- | Дальнейшее развитие хранилища пользовательских файлов потребовало дополнительных | + | |
- | функций обмена данными с модулями Sonix+. | + | |
- | + | ||
- | В качестве решения данных задач был создан PyChannel, который должен | + | |
- | обеспечивать связь модулей Sonix+ с разной архитектурой, | + | |
- | разных ЭВМ, с разными операционными системами. | + | |
- | + | ||
- | + | ||
- | <a id=" | + | |
- | + | ||
- | # PyChannel | + | |
- | + | ||
- | Разработка PyChannel началась с задачи создания простого способа для обмена | + | |
- | сообщениями между процессами, | + | |
- | с разной операционной системой. | + | |
- | + | ||
- | В качестве базового механизма для проектирования PyChannel подошёл | + | |
- | Message-Oriented Middleware< | + | |
- | + | ||
- | За реализацию функций маршрутизации и трансформации сообщений при передаче их | + | |
- | между устройствами будет отвечать брокер сообщений. В качестве возможностей для | + | |
- | реализации больше всего выделяется ZeroMQ<a href="# | + | |
- | является библиотекой для обмена сообщениями. ZeroMQ позволяет создать свою | + | |
- | систему обмена сообщениями. | + | |
Для обмена данными потребуются следующие виды сообщений: | Для обмена данными потребуются следующие виды сообщений: | ||
- | - COMMAND - Запрос на выполнение определённых действий на уровне одного | + | |
- | | + | |
- | - REPLY - Сообщение с результатом выполнения процедуры (скорее всего данный тип | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | - ERROR - Сообщение с ошибкой, | + | |
- | | + | |
- | | + | |
- | - REGISTER - Данное сообщение необходимо прежде всего для составления таблицы | + | |
- | | + | |
- | | + | |
- | При этом необходимо отметить, | + | При этом необходимо отметить, |
- | асинхронных команд и добавляет большой слой абстракции, | + | |
- | увеличению времени передачи сообщений. | + | |
+ | ====== WebSonix ====== | ||
- | <a id=" | + | Первоначально PyChannel разрабатывался как замена CChannel. Данное устройство должно было значительно увеличить скорость обмена данными между модулями Sonix+ и Websonix. |
- | # WebSonix | + | Основным ограничением CChannel была возможность обработки единовременно только одного запроса от WebSonix. Так как WebSonix делает множество запросов к устройствам Sonix+ при этом некоторые запросы (создание гистограммы спектра с текущими измерениями) могут требовать большого времени (до нескольких минут). В итоге это приводило к длительной загрузке web страниц. |
- | Первоначально PyChannel | + | Данное ограничение обходится через создание приложения, |
- | должно было значительно увеличить скорость обмена данными между | + | |
- | и Websonix. | + | |
- | Основным ограничением CChannel была возможность обработки единовременно только | + | Кроме того WebSonix является многопользовательским сервисом, |
- | одного запроса от WebSonix. Так как WebSonix делает множество запросов к | + | |
- | устройствам Sonix+ при этом некоторые запросы (создание гистограммы спектра с | + | |
- | текущими измерениями) могут требовать большого времени (до нескольких | + | |
- | минут). В итоге это приводило к длительной загрузке web страниц. | + | |
- | + | ||
- | Данное ограничение обходится через создание приложения, | + | |
- | несколько запросов одновременно. Для предотвращения спама запросов с большим | + | |
- | временем выполнения необходимо ввести ограничения на команды с большим временем | + | |
- | выполнения. | + | |
- | + | ||
- | Кроме того WebSonix является многопользовательским сервисом, | + | |
- | ситуациям, | + | |
- | предотвращения повторяющихся идентичных запросов за короткий промежуток времени | + | |
- | (менее секунды), | + | |
на стороне сервера. | на стороне сервера. | ||
- | Таким образом получается следующая структура. На стороне WebSonix есть | + | Таким образом получается следующая структура. На стороне WebSonix есть множество клиентов с разных научных установок, |
- | множество клиентов с разных научных установок, | + | |
- | запросы проходят через приложение, | + | |
- | кешированием и направлением запросов на указанные научные установки. Далее | + | |
- | запросы поступают на PyChannel, который выполняет их в отдельном | + | |
- | процессе. Результат запроса возвращается клиентам. | + | |
- | + | ||
- | 