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, который выполняет их в отдельном | + | |
| - | процессе. Результат запроса возвращается клиентам. | + | |
| - | + | ||
| - | 
