Comment Delphi, WPF .NET Framework et Electron se comparent-ils et quel est le meilleur moyen de faire une comparaison objective? Embarcadero a commandé un livre blanc pour étudier les différences entre Delphi, WPF .NET Framework et Electron pour la création d’applications de bureau Windows. L’application de référence – un clone de la calculatrice Windows 10 – a été recréée dans chaque cadre par trois bénévoles Delphi Most Valuable Professionals (MVP), un développeur WPF indépendant et un développeur indépendant d’Electron. Dans cet article de blog, nous allons explorer la métrique de l’accès matériel qui fait partie de la comparaison de flexibilité utilisée dans le livre blanc. L’application de calcul elle-même n’utilise pas l’accès matériel dans chaque framework, donc la comparaison se fait entre les frameworks eux-mêmes.
Table of Contents
Accès au matériel spécifique à l’appareil
Le cadre facilite-t-il l’accès aux données des capteurs des appareils (GPS, microphone, accéléromètres, caméra, etc.) et l’action physique via des appareils similaires? Les cadres qui «ouvrent les portes» à la multitude de capteurs et d’actionneurs disponibles sur les appareils intelligents aujourd’hui créent des opportunités commerciales et des solutions novatrices aux problèmes des consommateurs.
Les bibliothèques standard de Delphi offrent un accès facile à presque tous les types de bases de données disponibles et permettent aux développeurs d’accéder aux fonctionnalités du système d’exploitation sur chaque plate-forme et d’interagir avec les périphériques d’E / S et les capteurs matériels. WPF peut accéder aux fonctionnalités du système d’exploitation Windows et aux périphériques d’E / S via des bibliothèques .NET, mais avec du code managé après compilation plutôt que du code natif. Electron fournit un accès matériel à partir de son processus node.js et peut accéder à certaines fonctions du système d’exploitation, mais pas à toutes, via les bibliothèques node.js.
Après avoir examiné les trois cadres, Delphi occupe la première place dans la catégorie de la flexibilité en raison de son déploiement flexible et automatisé sur toutes les principales plates-formes, de son évolutivité à tous les niveaux de développement et de son système de conception visuelle. WPF avec .NET Framework est compétitif sur la plate-forme Windows mais n’a pas la capacité de rivaliser sur macOS ou sur les appareils mobiles. Enfin, Electron a le moins d’obstacles à l’entrée et le plus grand nombre d’options d’outils de développement, mais s’appuie fortement sur des déploiements manuels, ne peut pas cibler directement les appareils mobiles par défaut, est le moins évolutif et n’a pas le même accès matériel et système d’exploitation que ses concurrents.
Jetons un coup d’œil à chaque cadre.
Accès matériel Delphi
Le framework FMX de Delphi comprend des bibliothèques qui permettent l’interaction avec les capteurs et les composants périphériques d’un appareil quelle que soit la plate-forme. Ces bibliothèques se compilent en code natif. Delphi RTL, l’accès direct à la mémoire et d’autres fonctionnalités de bas niveau lui donnent un accès complet à la plate-forme matérielle, y compris le code d’assemblage en ligne sur les plates-formes de bureau x86.
Assemblage en ligne dans Delphi
Voici deux exemples de compilation conditionnelle et d’assemblage en ligne (entre asm et end; tags).
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} |
Pilote en mode noyau
Il est possible de créer des pilotes en mode noyau pour Windows dans Delphi. Les pilotes en mode noyau sont définis par Microsoft comme «Les pilotes en mode noyau s’exécutent en mode noyau dans le cadre de l’exécutif, qui se compose de composants du système d’exploitation en mode noyau qui gèrent les E / S, la mémoire Plug-and-Play, les processus et les threads, la sécurité et bientôt. Les pilotes en mode noyau sont généralement superposés. En règle générale, les pilotes de niveau supérieur reçoivent généralement des données des applications, filtrent les données et les transmettent à un pilote de niveau inférieur prenant en charge les fonctionnalités du périphérique.
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/
Instrumentation de gestion Windows (WMI)
Delphi offre un accès facile à WMI et il existe un projet open source qui générera rapidement le code dont vous avez besoin. Selon Microsoft, WMI est défini comme «l’infrastructure de gestion des données et des opérations sur les systèmes d’exploitation Windows».
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page
Le RTL fournit un composant, TBluetooth , qui vous donne accès à toutes les fonctionnalités Bluetooth classiques du RTL. Faites glisser un TBluetooth
composant de la palette d’outils sur un formulaire ou un module de données de votre application.
Un capteur mesure une grandeur physique et la convertit en un signal lisible par une application. System.Sensors.Components fournit à vos applications des composants qui vous permettent d’obtenir des informations de nombreux types de capteurs matériels.
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. |
Cet exemple de projet montre comment utiliser et manipuler la caméra d’un appareil. L’exemple illustre l’utilisation de TCameraComponent .
Accès matériel WPF .NET Framework
WPF .NET Framework peut accéder à de nombreuses bibliothèques Windows pour les capteurs, les périphériques d’E / S et d’autres périphériques pour PC. L’accès de WPF au matériel se fait via du code managé plutôt que par du code natif, mais il existe une interface native (non gérée) via P / Invoke. Ce pont limite certains accès.
Accès au matériel électronique
Electron peut accéder aux fonctions du système d’exploitation et aux périphériques matériels via les bibliothèques node.js. Sa base Chromium multiplateforme facilite l’accès matériel de haut niveau sur toutes les principales plates-formes de bureau. L’accès d’Electron au matériel se fait par code managé plutôt que par code natif et ne peut accéder qu’aux fonctionnalités exposées via des bibliothèques.
Explorez toutes les métriques dans le livre blanc «Découvrir le meilleur framework de développement grâce à l’analyse comparative»:
Téléchargez le livre blanc gratuit Delphi vs WPF vs Electron pour les ordinateurs de bureau Windows
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition