Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Delphi лидирует с WPF и Electron в области аппаратного и периферийного доступа низкого уровня

wp1 hdaccess

Как работают Delphi, WPF .NET Framework и Electron по сравнению друг с другом и как лучше всего провести объективное сравнение? Embarcadero заказал технический документ для исследования различий между Delphi, WPF .NET Framework и Electron для создания настольных приложений Windows. Тестовое приложение — клон калькулятора Windows 10 — было воссоздано в каждой структуре тремя волонтерами Delphi Most Valuable Professionals (MVP), одним экспертом-фрилансером WPF-разработчиком и одним экспертом-фрилансером Electron. В этом сообщении блога мы собираемся изучить метрику доступа к оборудованию, которая является частью сравнения гибкости, используемого в техническом документе. Само приложение-калькулятор не использует аппаратный доступ в каждой платформе, поэтому сравнение проводится между самими платформами.

Доступ к аппаратному обеспечению для конкретного устройства

Облегчает ли структура доступ к данным с датчиков устройства (GPS, микрофон, акселерометры, камера и т. Д.) И физическое воздействие через аналогичные устройства? Структуры, которые «открывают двери» множеству датчиков и исполнительных механизмов, доступных сегодня на интеллектуальных устройствах, создают возможности для бизнеса и новаторские решения проблем потребителей.

Стандартные библиотеки Delphi обеспечивают легкий доступ практически ко всем доступным типам баз данных и позволяют разработчикам получать доступ к функциям операционной системы на каждой платформе, а также взаимодействовать с устройствами ввода-вывода и аппаратными датчиками. WPF может получить доступ к функциям операционной системы Windows и устройствам ввода-вывода через библиотеки .NET, но с управляемым кодом после компиляции, а не с собственным кодом. Electron предоставляет аппаратный доступ из своего процесса node.js и может получить доступ к некоторым, но не всем функциям операционной системы через библиотеки node.js.

После проверки всех трех фреймворков, Delphi удерживает лидирующую позицию в категории гибкости благодаря гибкому и автоматизированному развертыванию на всех основных платформах, масштабируемости на всех уровнях разработки и системе визуального дизайна. WPF с .NET Framework конкурентоспособен на платформе Windows, но не может конкурировать на macOS или мобильных устройствах. Наконец, у Electron наименьшее количество барьеров для входа и наибольшее количество инструментов разработки, но он в значительной степени полагается на развертывание вручную, не может напрямую ориентироваться на мобильные устройства по умолчанию, наименее масштабируем и не имеет такого же доступа к оборудованию и операционной системе, что и его конкуренты.

Давайте посмотрим на каждый фреймворк.

Аппаратный доступ Delphi

Фреймворк Delphi FMX включает библиотеки, которые позволяют взаимодействовать с периферийными датчиками и компонентами устройства независимо от платформы. Эти библиотеки компилируются в собственный код. Delphi RTL, прямой доступ к памяти и другие низкоуровневые функции предоставляют ему полный доступ к аппаратной платформе, включая встроенный ассемблерный код на настольных платформах x86.

Встроенная сборка в Delphi

Вот два примера с условной компиляцией и встроенной сборкой (между тегами asm и end;).

[crayon-673fa4c396efa566891941/]
[crayon-673fa4c396f00119556046/]

Драйвер режима ядра

В 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

Bluetooth

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

Exit mobile version