Труды КНЦ (Технические науки вып. 3/2024(15))
Взаимодействие компонентов Menu Supervisor обеспечивает информационно-управляющие потоки данных между компонентами через: — TCP/IP протоколы, что позволяет компонентам взаимодействовать даже при их размещении на удаленных машинах; — Sockets или Pyro4, которые могут использоваться для организации обмена данными между распределенными компонентами системы. Каждый визуальный компонент или компонент данных уведомляется о любых изменениях в данных через Menu Supervisor, который получает информацию об изменениях от компонента DataAccess. Это позволяет поддерживать актуальность данных во всех частях системы и автоматически обновлять интерфейсы. Гибкость и динамичность системы Одной из ключевых особенностей системы является возможность опционального добавления или исключения компонентов. На начальной стадии работы с проектом оператор может определить, какие компоненты необходимы, а какие можно исключить. Это позволяет легко адаптировать систему под текущие задачи, без необходимости вносить серьезные изменения в архитектуру программного комплекса. В отличие от технологий DCOM и OLE, подход, реализованный на Python с использованием TCP/IP, не требует дополнительной настройки клиентов и является кроссплатформенным. Это позволяет компонентам взаимодействовать через Интернет или локальные сети с высокой степенью надежности передачи данных. Пример использования сокетов для взаимодействия компонентов Для организации информационно-управляющих потоков данных между компонентами можно использовать Python-библиотеку socket. Например: Листинг 1 Сервер для Menu Supervisor im p o r t s o c k e t d e f s t a r t _ s e r v e r ( ) : s e r v e r _ s o c k e t = s o c k e t . s o c k e t( s o c k e t.A F _ IN E T , socket.SOCK_STREAM) s e r v e r _ s o c k e t . b i n d ( ( ' l o c a l h o s t ' , 8 0 8 0 )) s e r v e r _ s o c k e t . l i s t e n ( 5 ) p r in t ( " M e n u S u p e r v is o r запущен и ожидает с о е д и н е н и й . . . " ) w h il e T ru e : c l i e n t _ s o c k e t , a d d r = s e r v e r _ s o c k e t . a c c e p t ( ) p r i n t ( f ' 'Соединение у с т а н о в л е н о с { a d d r } " ) d a ta = c l i e n t _ s o c k e t . r e c v ( 1 0 2 4 ) . d e c o d e ( ) p r i n t ( f ,,Получены данные: { d a t a } " ) c l i e n t _ s o c k e t . s e n d ( " Данные п о л у ч е н ы " .e n c o d e ( )) c l i e n t _ s o c k e t . c l o s e ( ) i f_name__== "__main__": start_server() Труды Кольского научного центра РАН. Серия: Технические науки. 2024. Т. 15, № 3. С. 97-104. Transactions of the Kola Science Centre of RAS. Series: Engineering Sciences. 2024. Vol. 15, No. 3. P. 97-104. © Руденко Н. Н., Вдовиченко Н. А., 2024 101
Made with FlippingBook
RkJQdWJsaXNoZXIy MTUzNzYz