Как работают Delphi, WPF .NET Framework и Electron по сравнению друг с другом и как лучше всего провести объективное сравнение? Embarcadero заказал технический документ для исследования различий между Delphi, WPF .NET Framework и Electron для создания настольных приложений Windows. Тестовое приложение — клон калькулятора Windows 10 — было воссоздано в каждой структуре тремя волонтерами Delphi Most Valuable Professionals (MVP), одним экспертом-фрилансером WPF-разработчиком и одним экспертом-фрилансером Electron. В этом сообщении блога мы собираемся изучить метрику доступа к оборудованию, которая является частью сравнения гибкости, используемого в техническом документе. Само приложение-калькулятор не использует аппаратный доступ в каждой платформе, поэтому сравнение проводится между самими платформами.
Table of Contents
Доступ к аппаратному обеспечению для конкретного устройства
Облегчает ли структура доступ к данным с датчиков устройства (GPS, микрофон, акселерометры, камера и т. Д.) И физическое воздействие через аналогичные устройства? Структуры, которые «открывают двери» множеству датчиков и исполнительных механизмов, доступных сегодня на интеллектуальных устройствах, создают возможности для бизнеса и новаторские решения проблем потребителей.
Стандартные библиотеки Delphi обеспечивают легкий доступ практически ко всем доступным типам баз данных и позволяют разработчикам получать доступ к функциям операционной системы на каждой платформе, а также взаимодействовать с устройствами ввода-вывода и аппаратными датчиками. WPF может получить доступ к функциям операционной системы Windows и устройствам ввода-вывода через библиотеки .NET, но с управляемым кодом после компиляции, а не с собственным кодом. Electron предоставляет аппаратный доступ из своего процесса node.js и может получить доступ к некоторым, но не всем функциям операционной системы через библиотеки node.js.
После проверки всех трех фреймворков, Delphi удерживает лидирующую позицию в категории гибкости благодаря гибкому и автоматизированному развертыванию на всех основных платформах, масштабируемости на всех уровнях разработки и системе визуального дизайна. WPF с .NET Framework конкурентоспособен на платформе Windows, но не может конкурировать на macOS или мобильных устройствах. Наконец, у Electron наименьшее количество барьеров для входа и наибольшее количество инструментов разработки, но он в значительной степени полагается на развертывание вручную, не может напрямую ориентироваться на мобильные устройства по умолчанию, наименее масштабируем и не имеет такого же доступа к оборудованию и операционной системе, что и его конкуренты.
Давайте посмотрим на каждый фреймворк.
Аппаратный доступ Delphi
Фреймворк Delphi FMX включает библиотеки, которые позволяют взаимодействовать с периферийными датчиками и компонентами устройства независимо от платформы. Эти библиотеки компилируются в собственный код. Delphi RTL, прямой доступ к памяти и другие низкоуровневые функции предоставляют ему полный доступ к аппаратной платформе, включая встроенный ассемблерный код на настольных платформах x86.
Вот два примера с условной компиляцией и встроенной сборкой (между тегами asm и end;).
1 2 3 4 5 6 7 8 9 10 11 12 |
function Power10(val: Extended; power: Integer): Extended; {$IFDEF PUREPASCAL} begin // Pascal implementation here... end; {$ELSE !PUREPASCAL} {$IFDEF CPUX86} asm // ASM implementation here... end; {$ENDIF CPUX86} {$ENDIF !PUREPASCAL} |
1 2 3 4 5 6 7 8 9 10 |
{$IFDEF CPUX86} asm // ... end; {$ENDIF CPUX86} {$IFDEF CPUX64} asm // ... end; {$ENDIF CPUX64} |
Драйвер режима ядра
В Delphi можно создавать драйверы режима ядра для Windows. Драйверы режима ядра определяются Microsoft как «драйверы режима ядра выполняются в режиме ядра как часть исполнительной системы, которая состоит из компонентов операционной системы режима ядра, которые управляют вводом-выводом, памятью Plug and Play, процессами и потоками, безопасностью и скоро. Драйверы режима ядра обычно многоуровневые. Как правило, драйверы более высокого уровня обычно получают данные от приложений, фильтруют данные и передают их драйверу более низкого уровня, который поддерживает функциональность устройства ».
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/
Инструментарий управления Windows (WMI)
Delphi предлагает легкий доступ к WMI, и есть проект с открытым исходным кодом, который быстро сгенерирует нужный вам код. Согласно Microsoft WMI определяется как «инфраструктура для управления данными и операций в операционных системах на базе Windows».
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page
RTL предоставляет компонент TBluetooth , который дает вам доступ ко всем классическим функциям Bluetooth RTL. Перетащите TBluetooth
компонент из палитры инструментов на форму или модуль данных вашего приложения.
Датчик измеряет физическую величину и преобразует ее в сигнал, который может считывать приложение. System.Sensors.Components предоставляет вашим приложениям компоненты, позволяющие получать информацию от различных типов аппаратных датчиков.
TBiometricSensor |
TBiometricSensor is a wrapper for TCustomBiometricSensor. |
TElectricalSensor | TElectricalSensor is a wrapper for TCustomElectricalSensor. |
TEnvironmentalSensor | Wrapper for TCustomEnvironmentalSensor. |
TLightSensor | Wrapper for TCustomLightSensor. |
TLocationSensor | TLocationSensor is a wrapper for TCustomLocationSensor. |
TMechanicalSensor | Wrapper for TCustomMechanicalSensor. |
TMotionSensor | Wrapper for TCustomMotionSensor. |
TOrientationSensor | Wrapper for TCustomOrientationSensor. |
TScannerSensor | Wrapper for TCustomScannerSensor. |
В этом примере проекта показано, как использовать и управлять камерой устройства. Пример демонстрирует использование TCameraComponent .
Доступ к оборудованию WPF .NET Framework
WPF .NET Framework может получить доступ к многочисленным библиотекам Windows для датчиков, устройств ввода-вывода и других периферийных устройств для ПК. Доступ WPF к оборудованию осуществляется через управляемый код, а не через собственный код, но есть собственный (неуправляемый) интерфейс через P / Invoke. Этот мост ограничивает некоторый доступ.
Доступ к электронному оборудованию
Electron может получить доступ к функциям операционной системы и аппаратной периферии через библиотеки node.js. Эта кроссплатформенная база Chromium обеспечивает доступ к высокому уровню оборудования на всех основных настольных платформах. Доступ Electron к оборудованию осуществляется через управляемый код, а не через собственный код, и он может получить доступ только к функциям, предоставляемым через библиотеки.
Изучите все показатели в техническом документе «Обнаружение лучшей среды разработки с помощью сравнительного анализа»:
Загрузите официальный документ Free Delphi vs. WPF vs. Electron для настольных ПК с Windows
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition