Введение

На сегодняшний день отечественные компании все чаще предпочитают переходить на альтернативные операционные системы. Такая тенденция связана с тем, что многие корпорации, в том числе Microsoft, официально приостановили поддержку своих продуктов на территории России [9, 10, 11], а с сентября 2024 года планируют также приостановку и предоставления облачных сервисов. При этом на текущий момент отечественные разработки выгодно отличаются высоким уровнем безопасности и надежности систем, подтвержденным, в т.ч. сертификатами ФСТЭК. Наиболее популярны такие отечественные операционные системы (ОС) на базе ядра Linux, как: Astra Linux, ROSA Linux, ALT Linux и РЕД ОС.

Корпоративные пользователи чаще всего для решения задач выбирают крупные программные продукты (ПП) с длительной историей разработки и хорошо зарекомендовавшие себя на практике. Написание аналогичных ПП с нуля для новой системы значительно дороже, чем их адаптация. Существует множество программных продуктов с графическим интерфейсом, реализованных с помощью объектно-ориентированного языка C# на платформе .Net. Это связанно с распространённостью языка, универсальностью, обширным функционалом, а также относительной независимостью от аппаратного обеспечения и конкретной версии ОС.

В данной статье исследуется процесс обеспечения кроссплатформенности программных продуктов с графическим интерфейсом на платформе .Net для работы как в операционной системе Windows, так и в операционных системах семейства Linux. В качестве основы для исследования рассматривается программный продукт NGT SMART+ (Рисунок 1), который является удобным и современным инструментом для автоматизации процессов мониторинга и анализа разработки нефтегазовых месторождений.

Рисунок 1. Программный продукт NGT SMART+.
Рисунок 1. Программный продукт NGT SMART+.

Постановка задачи 

Программный продукт NGT SMART+ реализован с помощью объектно-ориентированного языка C# на платформе Microsoft .Net Framework 4.0. Самым надёжным способом запуска программного продукта на Unix-подобных системах является переход на кроссплатформенную разработку. Со стороны разработчика платформы .Net (Microsoft) не существует готового решения, которое бы позволило в сжатые сроки, с минимальными трудозатратами портировать программный продукт на Unix-подобные системы, с сохранением возможности компиляции кода для работы под ОС Windows.

В рамках проводимого исследования для ограничения сроков исполнения было принято решение отказаться от полного переписывания проекта. Также для ограничения трудозатрат сохраняется оригинальный язык программирования при минимальной переработке исходного кода, обеспечивается поддержка платформы .Net и графического интерфейса Windows Forms (десктоп-приложение).

Таким образом, Задача состоит в обеспечении кроссплатформенности программного продукта NGT SMART+ с графическим интерфейсом на платформе .Net для работы как в операционный системе Windows, так и в Unix-подобных системах. В рамках исследования рассматривалось применение таких решений как Wine, Mono, PlayOnLinux и CrossOver.

Для решения Задачи был предложен следующий алгоритм:

  • анализ существующих решений;

  • изучение программных обеспечений, позволяющих запускать приложения, созданные для Windows в Unix-подобных системах;

  • установка необходимых инструментов и подготовка среды выполнения на машинах с Unix-подобными операционными системами;

  • проведение тестирования и устранение возникающих конфликтов.

С целью снижения трудоемкости для тестирования были выбраны операционные системы Astra Linux и РЕД ОС на основе распространённости среди заказчиков и популярности на российском рынке.

Анализ существующих решений 

Анализ показал, что на базе платформы .Net возможна разработка кроссплатформенных консольных приложений и библиотек. Но при этом невозможна разработка программных продуктов с полноценным графическим интерфейсом [3]. Вследствие чего, многие авторы прибегают к альтернативным решениям проблемы посредством сторонних решений (Wine, Mono и CrossOver).

Наиболее популярным инструментом является программное обеспечение Wine. Это бесплатное программное обеспечение с открытым исходным кодом, которое не имеет особых требований к оборудованию [17]. ПО Wine корректно запускает большинство программных продуктов (кроме специальных программных продуктов) и нацелено в основном на эмуляцию ОС Windows для запуска компьютерных игр в ОС семейства Linux [5, 15]. Трудности могут возникнуть с чтением и записью файлов программы, а также c корректностью отображения интерфейса [7]. Кроме того, проводимые эксперименты по запуску вредоносного программного обеспечения выявили проблемы с безопасностью при использовании ПО Wine [8, 13, 16].

Следующей жизнеспособной альтернативой ПО является программная платформа Mono. Она менее востребована, но ее преимущество в возможности обеспечения работы приложения без какой-либо эмуляции как в ОС Windows, так и в ОС Linux [1]. Исследование производительности, основанное на замере времени, необходимом для запуска алгоритма, показало, что ПО Mono не редко эффективнее собственного кода [12].

Программное обеспечение CrossOver отличается удобным графическим интерфейсом и понятной документацией. Данная программа является коммерческой, но пробный период позволяет в полной мере оценить функционал и возможности продукта. Из недостатков пользователи отмечают нестабильность работы мультимедийных приложений [14].

Проведенный анализ выявил у существующих решений серьезные недочеты:

  • отсутствуют описания работы ПО на реальном примере;

  • не зафиксированы трудности, с которыми можно столкнутся в процессе работы и методы их решения;

не предусмотрена вариативность операционных систем, программных инструментов и их версий.

Решения поставленной задачи

Проведен анализ в формате оценки достоинств и недостатков ранее представленных инструментов портирования.

Программная платформа Mono выступает в качестве реализации платформы Microsoft .NET Framework. Важными достоинствами данного инструмента служит двоичная совместимость, наличие открытого исходного кода и бесплатный доступ к проекту. На момент написания статьи последняя стабильная версия 6.12.0.

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

Программное обеспечение Wine перенаправляет вызовы Windows API в соответствующие вызовы POSIX [6]. Такой подход предоставляет возможность минимизировать потерю памяти и сохранить производительность. ПО Wine позволяет устанавливать необходимые библиотеки и компоненты ОС Windows [4]. Программное обеспечение активно совершенствуется и последней стабильной версией является 9.0. При этом ПО Wine востребовано как среди разработчиков, так и среди простых пользователей. Чтобы обеспечить кроссплатформенность программного продукта для корректной работы необходимо повысить его версию до .NET 5 и выше.

Бесплатная программа PlayOnLinux использует все возможности ПО Wine, поскольку является его надстройкой. Благодаря удобному интерфейсу подходит для начинающих пользователей. При этом обладает существенными недостатками:

  • осуществляется поддержка узкого спектра программ,

  • допускается потеря производительности (замедление работы),

  • немногочисленный круг пользователей (редкое упоминание в статьях и форумах).

Программа CrossOver сфокусирована на запуске популярных офисных приложений Windows и представляет собой аналог ПО Wine. Программу легко устанавливать и использовать. ПО CrossOver не является бесплатным решением с открытым исходным кодом [2]. Основным недостатком является то, что программа ограничена в доступе на территории России.

Исходя из проведенного выше анализа разработано две стратегии для

обеспечения кроссплатформенности программного продукта NGT SMART+ с графическим интерфейсом на платформе .Net:

  1. Использование ПП Mono.

  2. Использование ПО Wine.

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

Первая, более приоритетная стратегия, заключается в использовании программной платформы Mono, поскольку она поддерживает двоичную совместимость. Вторая стратегия заключается – в использовании программного обеспечения Wine, это востребованный программный продукт с широким функционалом. В случае провала реализации данных стратегий решением является использование альтернативных GUI фреймворков (инструментов графического интерфейса), которые предлагают преимущественно другой подход к пользовательскому интерфейсу.

В ПП Mono отсутствует реализация части функционала, поэтому его необходимо временно удалить из программного продукта NGT SMART+. Для этого проводится тестирование на дистрибутиве Linux непосредственно в Windows с помощью WSL (Windows Subsystem for Linux — подсистема Windows для запуска Linux-приложений). После удаления неподдерживаемого функционала необходимо подготовить среду выполнения на машинах с операционной системой Astra Linux и РЕД ОС. В список источников добавляется репозиторий Mono и устанавливается пакет mono-complete. Указанный пакет загружает нужные библиотеки, инструменты разработки и среду выполнения.

В ходе тестирования на Unix-подобных системах выявлено несколько конфликтов. Возникли проблемы на уровне системных вызовов, для решения которых необходимо вносить изменения в исходный код ПП Mono. Зафиксированы сбои с использованием современных библиотек, которые ПП Mono не поддерживает. Единственным выходом является поиск альтернативных решений и переписывание исходного кода программного продукта NGT SMART+. Т.к. в долгосрочной перспективе такой подход нецелесообразен, то было решено прекратить работу с программной платформой Mono и перейти к тестированию варианта решения на основе программного обеспечения Wine.

Платформа .Net Framework 4.0 на которой реализован NGT SMART+ не является кроссплатформенной и ориентирована на работу только в ОС Windows. Поэтому, начиная работу с ПО Wine, необходимо повысить версию платформы до .NET 5, затем подготовить среду выполнения на машинах с выбранными операционными системами. Для этого устанавливаются пакеты Wine и Winetricks (вспомогательный скрипт для настройки Wine), создается новый префикс и добавляется среда выполнения .NET 5.

Программный продукт был успешно запущен в операционных системах Astra Linux и РЕД ОС. Тестирование проводилось на версиях Wine 6.23, 8.0.2 и 9.0. В процессе тестирования выявлен и исправлен ряд ошибок, которые подробнее рассмотрены в следующей части статьи. Результатом проделанной работы служит скрипт, включающий в себя: установку ПО Wine, изменение настроек и создание ярлыка. Для автоматической настройки среды выполнения необходимо поместить скрипт во внутреннюю папку проекта, запустить его от имени текущего пользователя и перезагрузить компьютер.

Приведенные выше две стратегии решения Задачи представлены на рисунке 2.

Рисунок 2. Стратегии решения Задачи обеспечения кроссплатформенности программного продукта NGT SMART+ с графическим интерфейсом на платформе .Net
Рисунок 2. Стратегии решения Задачи обеспечения кроссплатформенности программного продукта NGT SMART+ с графическим интерфейсом на платформе .Net

Выявленные сложности

В рамках тестирования программного продукта на Unix-подобных системах посредством ПО Wine выявлены следующие недочеты:

-    отсутствовали собственные шрифты приложения,

-    наблюдалась некорректная отрисовка графики,

-    в процессе работы терялся фокус.

При работе очевидно несоответствие оригиналу отрисовки интерфейса программного продукта: не подгружаются собственные шрифты приложения в формате TFF, отсутствует сглаживание графики и шрифтов. Причина проблемы заключается в нехватке библиотеки графической подсистемы «gdiplus.dll». В программном продукте шрифт в формате TFF используется для отображения различных состояний скважин и других объектов. Для отображения скважины применяется система наложения двух символов черного и желтого цвета. На рисунке 3 приведено сравнение отображения скважин при использовании библиотеки и без нее.

Рисунок 3. Сравнение скважин при использовании библиотеки «gdiplus.dl» (а) и без нее (б)
Рисунок 3. Сравнение скважин при использовании библиотеки «gdiplus.dl» (а) и без нее (б)

Библиотека «gdiplus.dll» предоставляет множество возможностей, в том числе позволяет использовать сплайны, которые позволяют визуализировать гладкие кривые линии. Устанавливается «gdiplus.dll» относительно просто при помощи Winetricks. Результат применения библиотеки для сглаживания графики представлен на рисунке 4.

Рисунок 4. Сравнение графики при использовании библиотеки gdiplus.dll (а) и без нее (б)
Рисунок 4. Сравнение графики при использовании библиотеки gdiplus.dll (а) и без нее (б)

Сглаживание шрифтов исправляется с помощью Winetricks, изменив настройку FontSmooth. Данная настройка помогает включить сглаживание шрифтов Grayscale и субпиксельное сглаживание RGB и BGR.

Следующим серьезным недочетом в работе программы под управлением Wine является потеря фокуса программного продукта. Данная проблема проявляется в том, что окно становится неактивным. Нажатие кнопок срабатывает не с первого раза (требуется вернуть фокус на окно) и выпадающие списки автоматически закрываются через несколько секунд. Потеря фокуса в случае использования ПО Wine часто связана с появлением всплывающих подсказок, т.к. они отображаются как отдельное окно и перехватывают фокус. Данная ошибка устраняется следующими способами. Первый состоит в отключении настройки UseTakeFocus в Winetricks или в редакторе реестра Regedit. Предложенный способ подойдет далеко не для всех программных продуктов – так, при отработке в ПП «NGT SMART+» произошло бесконтрольное перемещение фокуса по окнам проекта. Второй способ заключается в использовании виртуального рабочего стола, который подключается в редакторе настроек Winecfg в разделе графики. Данный способ для ПП «NGT SMART+» привел к возникновению более серьезных ошибок – всплывающие окна и подсказки отображались за основным окном программы и визуальная составляющая виртуального стола не соответствовала требованиям Заказчика.

Решить эту проблему для операционной системы РЕД ОС удалось при помощи оконного менеджера Openbox: достаточно в основной файл конфигурации «rc.xml» добавить свойство фокуса для соответствующего окна.

<application class="smartplus.exe" role="normal">
<focus> yes</focus>
</application>

Исправить проблему для операционной системы Astra Linux возможно с помощью настройки параметров окон. Необходимо изменить поведение окон соответствующего класса, установив, что они всегда располагаются поверх остальных.

Заключение

Представленная работа по использованию программного продукта в операционной системе Windows и в Unix-подобных системах основана на потребности обеспечения запуска отечественных разработок в операционных системах семейства Linux, соответствующих требованиям импортозамещения и минимизации санкционных рисков. Весь процесс обеспечения кроссплатформенности программного продукта с графическим интерфейсом на платформе .Net представлен на примере проекта «NGT SMART+» ориентированного на операционную систему Windows.

На основе анализа существующих инструментов портирования десктоп приложений Windows под ОС семейства Linux разработаны две стратегии: с применением программной платформы Mono и программного обеспечения Wine. Несмотря на то, что на первый взгляд ПП Mono служит наилучшим решением поставленной Задачи, поскольку является реализацией платформы Microsoft .NET Framework и обладает совместимостью на уровне байт-кода, на практике возникло множество трудностей связанных с использованием современных библиотек, без которых реализация современного графического пользовательского интерфейса затруднительна.

Переход ко второй стратегии на основе программного обеспечения Wine позволил успешно выполнить задачу запуска приложения под отечественными ОС Astra Linux и РЕД ОС. Стоит учесть, что при работе с ПО Wine необходимо повысить версию платформы проекта «NGT SMART+» до .NET 5. Возникающие недочеты связанные с отрисовкой интерфейса, загрузкой шрифтов и потерей фокуса решаются с помощью Winetricks и оконного менеджера. Установка ПО Wine, корректировка перечисленных недочетов и создание ярлыка программы вносятся в разработанный скрипт для автоматической настройки среды выполнения.

В данной статье не рассмотрены риски, связанные с импортозамещением ПО Wine. Ожидается, что они нивелируются за счет использования отечественных аналогов.

Список источников

1. Агеев Е.Л. Разработка на C# под Linux. Гагаринские чтения 2017: Тезисы докладов, Москва, 05–19 апреля 2017 года. — Москва: Московский авиационный институт (национальный исследовательский университет), 2017. — С. 665.

2. Бешков А. Запуск Windows‑приложений под Linux c помощью CrossOver Office. Системный администратор. — 2004. — № 2(15). — С. 4–13.

3. Горбунов В. А. Программное обеспечение для реализации кроссплатформенности.net‑приложений. Международная научно‑техническая конференция молодых ученых БГТУ им. В.Г. Шухова: Материалы конференции, Белгород, 30 апреля — 20 2021 года. — Белгород: Белгородский государственный технологический университет им. В.Г. Шухова, 2021. — С. 3539–3542.

4. Демидов Н. А., Выгоняйло К. В., Маняев А. А. Сравнительный анализ Wine и PortProton: Перекрёстные платформы в контексте эмуляции Windows приложений. Программные системы и вычислительные методы. — 2024. — № 2. — С. 99–118.

5. Комраков А. А., Ушакова К. О., Исаев В. Г. Импортозамещение программного обеспечения в авиационно‑космическом сегменте оборонно‑промышленного комплекса. Информационно‑технологический вестник. — 2019. — № 4(22). — С. 71–82.

6. Лунченкова Э. Б., Горячева Н. В. Возможности инструментальных средств разработки электронных образовательных ресурсов, используемых под управлением операционной системы Windows, на ЭВМ под управлением операционной системы Astra Linux при установке на них промежуточного программного обеспечения Wine. Пенитенциарная система и общество: опыт взаимодействия: Сборник материалов IX Международной научно‑практической конференции, Пермь, 06–08 апреля 2022 года / Сост. А.И. Согрина. Том 1. — Пермь: Пермский институт Федеральной службы исполнения наказаний, 2022. — С. 112–115.

7. Соловьев А. В. Способы запуска Windows‑приложений на ЭВМ под управлением Astra Linux. Новые информационные технологии в научных исследованиях: Материалы XXVIII Всероссийской научно‑технической конференции студентов, молодых ученых и специалистов, Рязанский государственный радиотехнический университет имени В.Ф. Уткина, 22–24 ноября 2023 года. — Рязань: Рязанский государственный радиотехнический университет имени В.Ф.Уткина, 2023. — С. 170–171.

8. Уймин А. Г., Морозов И. М. Оценка безопасности Wine с использованием методологии STRIDE: математическая модель. Современная наука: актуальные проблемы теории и практики. Серия: Естественные и технические науки. — 2023. — № 6–2. — С. 164–170.

9. Хватов А. А., Деревянкин А. Ю. Влияние санкций на развитие информационных технологий в России. Вестник евразийской науки. — 2023. — Т. 15. — № s1.

10. Храмцова С. Н. Импортозамещение в сфере ит. НОВЫЙ ПУТЬ РОССИЙСКОЙ ЭКОНОМИКИ: ИМПОРТОЗАМЕЩЕНИЕ, ИННОВАЦИОННОСТЬ, ЭКОНОМИЧЕСКАЯ БЕЗОПАСНОСТЬ: сборник статей Международной научно‑практической конференции, Воронеж, 15 декабря 2022 года. — Уфа: Общество с ограниченной ответственностью «Аэтерна», 2022. — С. 92–101.

11. Шершаков А. Д. Внедрение альтернативных операционных систем в сферу производства в санкционных условиях в России. Яковлевские чтения: Материалы Всероссийской научно‑практической конференции, Сакнт‑Петербург, 04 апреля 2022 года. — Сакнт‑Петербург: ООО «Скифия‑принт», 2022. — С. 135–137.

12. Blajian, Gregory & Eggen, Roger & Eggen, Maurice & Pitts, Gerald. Mono versus.net: A Comparative Study of Performance for Distributed Processing. Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications & Conference on Real‑Time Computing Systems and Applications, PDPTA 2006, Las Vegas, Nevada, USA, June 26–29, 2006, Volume 1, Pages 45–51.

13. Duncan, Rory & Schreuders, Z. Security implications of running windows software on a Linux system using Wine: a malware analysis study. Journal of Computer Virology and Hacking Techniques, 15(1), 2019.

14. Hall Jes. CrossOver Office 5.0. ACM Digital Library. URL: https://dl.acm.org/doi/fullHtml/10.5555/1 152 899.1152917 (дата обращения: 27.03.2024).

15. LeBlanc Dee‑Ann. Get Your Game On. Running Windows Games in Linux. ACM Digital Library. URL: https://dl.acm.org/doi/fullHtml/10.5555/1 118 998.1119013 (дата обращения: 27.03.2024).

16. Septiasari, Rycka & Pramadi, Yogha. A study on windows‑based ransomware implications on linux operating system using compatibility layer wine based on dynamic analysis. IOP Conference Series: Materials Science and Engineering, 2020, 1007, 012 120.

17. Zhao, Huimin. A Design of Information Teaching Platform Based on Linux Operating System. Journal of Physics: Conference Series, 2021, 2138, 012 018.

Комментарии (16)


  1. sberoneshot
    13.09.2024 10:33
    +7

    Платформа .Net Framework 4.0 на которой реализован NGT SMART+

    Выпущена 2010-04-12, окончание поддержки 2016-01-12 (8 лет назад)

    Поэтому, начиная работу с ПО Wine, необходимо повысить версию платформы до .NET 5

    Выпущена November 10, 2020 , окончание поддержки May 10, 2022 (2 года назад)

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

    Может потому, что ваши менеджеры клали болт на техдолг, не обновляли версию фреймворка 12 лет (с 2010го) а теперь "ой, а почему оно нормально не работает на новых версиях?" А то, что у вас не разделена архитектура на Core и GUI отлично прострелило вам ногу в плане перехода на linux. AvaloniaUI, UNO, Gtk#, да сотни фреймворков поддерживают GUI на Linux с использованием C#.NET.

    На основе анализа существующих инструментов портирования десктоп приложений Windows под ОС семейства Linux разработаны две стратегии: с применением программной платформы Mono и программного обеспечения Wine.

    Для современных поддерживаемых версий ваш анализ выглядит как "на основе анализа древнегреческого колодца можно сказать, что нужно использовать ведра, сделанные из дерева а не свинца". Не существует проблемы .NET GUI на современных линуксах. Есть проблема менеджеров и программистов, которые 12 лет сидят и ничего не делают для поддержки, а потом ВНЕЗАПНО оказывается, что оно даже под современной windows не то, чтобы вообще работает:

    Starting with Visual Studio 2022, Visual Studio no longer includes .NET Framework components for .NET Framework 4.0 - 4.5.1 because these versions are no longer supported. Visual Studio 2022 and later versions can't build apps that target .NET Framework 4.0 through .NET Framework 4.5.1. To continue building these apps, you can use Visual Studio 2019 or an earlier version.

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

    По итогу такие ваши статьи - это антиреклама Уфимского НТЦ. Особенно смешно это выглядит с заголовком на сайте:

    NGT SMART+ – это современный программный продукт

    Вы или трусы наденьте или крестик снимите.


    1. FM12
      13.09.2024 10:33

      AvaloniaUI, UNO, Gtk#, да сотни фреймворков поддерживают GUI на Linux с использованием C#.NET.

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


      1. JordanCpp
        13.09.2024 10:33
        +1

        Это в принципе означает переписывание кода.

        Ужасно, переписывание, рефакторинг, разделение приложения на модули, написание тестов.

        Предполагаю, что программисты могут с этим с правиться:)


    1. FM12
      13.09.2024 10:33

      Может потому, что ваши менеджеры клали болт на техдолг, не обновляли версию фреймворка


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


  1. Einherjar
    13.09.2024 10:33
    +2

    Анализ показал, что на базе платформы .Net возможна разработка кроссплатформенных консольных приложений и библиотек. Но при этом невозможна разработка программных продуктов с полноценным графическим интерфейсом [3]. Вследствие чего, многие авторы прибегают к альтернативным решениям проблемы посредством сторонних решений

    Увольте того кто проводил этот анализ, этот человек даже поисковиком пользоваться не умеет.

    Да и того кто статью писал тоже гнать надо из профессии - текст статьи в стиле советских бюрократических докладов читать крайне тяжело

    продукт NGT SMART+ (Рисунок 1), который является удобным и современным инструментом

    Судя по тому что вы пишете в оставшейся части статьи это не "удобный и современный инструмент" а обвешанное костылями дремучее корявое и дырявое легаси которое даже запустить без танцев с бубном целая проблема


    1. FM12
      13.09.2024 10:33

      Вы наверное невнимательно прочитали текст.
      Речь о том, что штатных средств у MS сейчас для GUI под Linux по факту нет - то же MAUI заявлен к работе везде... кроме Linux (https://learn.microsoft.com/ru-ru/dotnet/maui/what-is-maui?view=net-maui-8.0).
      Поэтому и идет речь о сторонних решениях - нет от MS.
      Речь именно об этом - MS настойчиво проводит свою политику - в т.ч. обработного привлечения линуксоидов в Windows через WSL


      1. Einherjar
        13.09.2024 10:33

        Вы наверное невнимательно прочитали текст.

        Я даже специально процитировал фразу с которой несогласен. Читаем вместе - в тексте сказано "на базе платформы .Net". Подчеркните слово Microsoft там.

        На базе платформы .Net разрабатывать GUI под линукс можно, без костылей в виде wine, mono и иже с ними, это факт. в первом комментарии человек перечислил список фреймворков. Причем тут microsoft то. Или что, вы принципиально не будете писать UI на, например, авалонии, которая по возможностям большую фору даже впфу даст, потому что видите ли это не microsoft?

        Поэтому и идет речь о сторонних решениях

        О сторонних решениях в статье речь как раз таки и не идет, ваш аналитик воспользовался информацией 15-летней давности и на основании нее пришел к выводу что это в принципе невозможно, цитирую "невозможна разработка программных продуктов с полноценным графическим интерфейсом"


        1. FM12
          13.09.2024 10:33

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


          1. Einherjar
            13.09.2024 10:33
            +1

            там четко сказано

            Вы путаете административно-канцелярский стиль изложения с четкостью, из первого второе не следует (даже скорее наоборот, четкость страдает). Чтобы можно было утверждать про четкость сказанного, утверждения не должны противоречить друг другу. Так посморев на рис.2 все таки возможно на базе платформе .net разрабатывать полноценный графический интерфейс или нет?


            1. FM12
              13.09.2024 10:33

              Рис. 2 не дает ответ - он показывает стратегию поиска решения


  1. vedmak3
    13.09.2024 10:33

    Это фиаско. Говорить про окна в wine. Сейчас время кроссплатформ.


    1. FM12
      13.09.2024 10:33

      а в кроссплатформе окон не бывает ?
      или м.б. все крупное ПО в РФ (САПР в т.ч.) переписано давно на кроссплатформ ? :-)
      дайте пример крупного продукта с графикой в канве, который успешно переписался на Авалонию и иже с ними :-)


      1. JordanCpp
        13.09.2024 10:33

        крупного продукта с графикой в канве

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

        Деды 90-ых одобряют:)


  1. JordanCpp
    13.09.2024 10:33
    +2

    Запустить виндовую прогу в linux с помощью wine это не портирование и не кроссплатформа. Это просто запуск виндового софта в linux средствами wine.

    Я сначала вдохновился, сейчас расскажут как они портировали, примеры кода, решение возникающих проблем.


  1. JordanCpp
    13.09.2024 10:33

    Опыт обеспечения кроссплатформенности десктопного приложения с графическим интерфейсом на основе .NET

    Кроссплатaорменность это когда, как пример.

    Support platforms.

    1. Windows 95 and higher

    2. Linux (XLib) Debian 3 and higher

    3. Linux Wayland (In the implementation)

    Support renders.

    1. OpenGL 1.0

    2. OpenGL 3.0

    3. Software render

    4. 3dfx Glide

    Или такой вариант.

    Support platforms.

    1. Windows 95 and higher. (32 and 64 bit)

    2. Linux (Debian 3) and higher.(32 and 64 bit)

    3. MS-DOS (16 and 32 bit)

    Имея одну кодобазу, проект собирается под несколько платформ, систем. Без смс и wine:)


  1. xtraroman
    13.09.2024 10:33

    Коллеги, мы успешно решили у себя на предприятии подобную задачу. Переписывали WinForms приложение на AvaloniaUI. Для сложного UI, чистой авалонии нам не хватило и мы написали эту библиотеку контролов https://github.com/Eremex/controls-demo. Поскольку мы переходили с DevExpress WinForms контролов библиотека имеет паритет фич с ними. Купить можно тут https://www.eremexcontrols.ru/