Website-Icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Delphi führt WPF und Electron bei Low-Level-Hardware und Peripheriezugriff an

wp1 hdaccess

Wie verhalten sich Delphi, WPF .NET Framework und Electron im Vergleich zueinander und wie lässt sich ein objektiver Vergleich am besten durchführen? Embarcadero gab ein Whitepaper in Auftrag , um die Unterschiede zwischen Delphi, WPF .NET Framework und Electron beim Erstellen von Windows-Desktopanwendungen zu untersuchen. Die Benchmark-Anwendung – ein Windows 10 Calculator-Klon – wurde in jedem Framework von drei freiwilligen Mitarbeitern von Delphi Most Valuable Professionals (MVPs), einem freiberuflichen WPF-Experten und einem freiberuflichen Electron-Entwickler neu erstellt. In diesem Blog-Beitrag werden wir die Hardware Access-Metrik untersuchen, die Teil des im Whitepaper verwendeten Flexibilitätsvergleichs ist. Die Rechner-App selbst verwendet nicht den Hardware-Zugriff in jedem Framework, sodass der Vergleich zwischen den Frameworks selbst erfolgt.

Zugriff auf gerätespezifische Hardware

Erleichtert das Framework den Zugriff auf Daten von Gerätesensoren (GPS, Mikrofon, Beschleunigungsmesser, Kamera usw.) und physische Aktionen über ähnliche Geräte? Frameworks, die die Türen zu einer Vielzahl von Sensoren und Aktoren öffnen, die heute auf intelligenten Geräten verfügbar sind, schaffen Geschäftsmöglichkeiten und neuartige Lösungen für die Schmerzen der Verbraucher.

Die Standardbibliotheken von Delphi bieten einfachen Zugriff auf nahezu alle verfügbaren Datenbanktypen und ermöglichen Entwicklern den Zugriff auf Betriebssystemfunktionen auf jeder Plattform sowie die Interaktion mit E / A-Geräten und Hardwaresensoren. WPF kann über .NET-Bibliotheken auf Windows-Betriebssystemfunktionen und E / A-Geräte zugreifen, jedoch mit verwaltetem Code nach der Kompilierung anstelle von nativem Code. Electron bietet Hardwarezugriff über den Prozess node.js und kann über die Bibliotheken node.js auf einige, aber nicht alle Betriebssystemfunktionen zugreifen.

Nach Überprüfung aller drei Frameworks ist Delphi aufgrund seiner flexiblen und automatisierten Bereitstellung auf allen wichtigen Plattformen, der Skalierbarkeit auf allen Entwicklungsstufen und des visuellen Designsystems führend in der Kategorie Flexibilität. WPF mit .NET Framework ist auf der Windows-Plattform wettbewerbsfähig, kann jedoch auf MacOS- oder Mobilgeräten nicht mithalten. Schließlich hat Electron die geringsten Markteintrittsbarrieren und die meisten Optionen für Entwicklungstools, stützt sich jedoch stark auf manuelle Bereitstellungen, kann standardmäßig nicht direkt auf mobile Geräte abzielen, ist am wenigsten skalierbar und verfügt nicht über den gleichen Hardware- und Betriebssystemzugriff wie seine Konkurrenten.

Werfen wir einen Blick auf jedes Framework.

Delphi-Hardwarezugriff

Das FMX-Framework von Delphi enthält Bibliotheken, die die Interaktion mit den peripheren Sensoren und Komponenten eines Geräts unabhängig von der Plattform ermöglichen. Diese Bibliotheken werden zu nativem Code kompiliert. Die Delphi RTL, der direkte Speicherzugriff und andere Funktionen auf niedriger Ebene ermöglichen den vollständigen Zugriff auf die Hardwareplattform, einschließlich Inline-Assemblycode auf x86-Desktopplattformen.

Inline-Montage in Delphi

Hier sind zwei Beispiele für die bedingte Kompilierung und Inline-Assemblierung (zwischen asm und end; Tags).

[crayon-673f7c000fb81162139249/]
[crayon-673f7c000fb86333599453/]

Kernel-Modus-Treiber

In Delphi können Kernelmodustreiber für Windows erstellt werden. Kernel-Modus-Treiber werden von Microsoft definiert als „Kernel-Modus-Treiber werden im Kernel-Modus als Teil der Exekutive ausgeführt, die aus Kernel-Modus-Betriebssystemkomponenten besteht, die E / A, Plug-and-Play-Speicher, Prozesse und Threads, Sicherheit und Sicherheit verwalten demnächst. Kernel-Modus-Treiber sind normalerweise geschichtet. Im Allgemeinen empfangen übergeordnete Treiber normalerweise Daten von Anwendungen, filtern die Daten und übergeben sie an einen untergeordneten Treiber, der die Gerätefunktionalität unterstützt. “

https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/

Windows Management Instrumentation (WMI)

Delphi bietet einfachen Zugriff auf WMI und es gibt ein Open Source-Projekt, das schnell den Code generiert, den Sie benötigen. Laut Microsoft ist WMI definiert als „ist die Infrastruktur für Verwaltungsdaten und Vorgänge auf Windows-basierten Betriebssystemen.“

https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page

Bluetooth

Die RTL bietet eine Komponente,  TBluetooth , mit der Sie auf alle klassischen Bluetooth-Funktionen der RTL zugreifen können. Ziehen Sie eine  TBluetooth Komponente aus der  Werkzeugpalette  auf ein Formular oder Datenmodul Ihrer Anwendung.

Hardware-Sensoren

Ein Sensor misst eine physikalische Größe und wandelt sie in ein Signal um, das von einer Anwendung gelesen werden kann. System.Sensors.Components  bietet Ihren Anwendungen Komponenten, mit denen Sie Informationen von vielen verschiedenen Arten von Hardwaresensoren abrufen können.


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.

Kamerazugriff

Dieses Beispielprojekt zeigt, wie die Kamera eines Geräts verwendet und bearbeitet wird. Das Beispiel zeigt die Verwendung der  TCameraComponent .

WPF .NET Framework-Hardwarezugriff

WPF .NET Framework kann auf zahlreiche Windows-Bibliotheken für Sensoren, E / A-Geräte und andere Peripheriegeräte für PCs zugreifen. Der Zugriff von WPF auf Hardware erfolgt über verwalteten Code und nicht über nativen Code. Es gibt jedoch eine native (nicht verwaltete) Schnittstelle über P / Invoke. Diese Brücke beschränkt den Zugriff.

Zugriff auf Elektronenhardware

Electron kann über die Bibliotheken von node.js auf Betriebssystemfunktionen und Hardware-Peripheriegeräte zugreifen. Die plattformübergreifende Chromium-Basis ermöglicht den Zugriff auf Hardware auf hoher Ebene auf allen wichtigen Desktop-Plattformen. Der Zugriff von Electron auf Hardware erfolgt über verwalteten Code und nicht über nativen Code. Er kann nur auf Funktionen zugreifen, die über Bibliotheken verfügbar gemacht werden.

Entdecken Sie alle Metriken im Whitepaper „Ermitteln des besten Entwickler-Frameworks durch Benchmarking“:

Laden Sie das Whitepaper „Delphi vs. WPF vs. Electron für Windows Desktops“ herunter

Die mobile Version verlassen