¿Cómo funcionan Delphi, WPF .NET Framework y Electron en comparación entre sí, y cuál es la mejor manera de hacer una comparación objetiva? Embarcadero encargó un documento técnico para investigar las diferencias entre Delphi, WPF .NET Framework y Electron para crear aplicaciones de escritorio de Windows. La aplicación de referencia, un clon de la Calculadora de Windows 10, fue recreada en cada marco por tres voluntarios de Delphi Most Valuable Professionals (MVP), un desarrollador experto independiente de WPF y un desarrollador experto independiente Electron. En esta publicación de blog, vamos a explorar la métrica de acceso de hardware, que es parte de la comparación de flexibilidad utilizada en el documento técnico. La aplicación de la calculadora en sí no hace uso del acceso al hardware en cada marco, por lo que la comparación se realiza entre los marcos en sí.
Table of Contents
Acceso a hardware específico del dispositivo
¿El marco facilita el acceso a los datos de los sensores del dispositivo (GPS, micrófono, acelerómetros, cámara, etc.) y la acción física a través de dispositivos similares? Los marcos que “abren las puertas” a la gran cantidad de sensores y actuadores disponibles en los dispositivos inteligentes en la actualidad crean oportunidades comerciales y soluciones novedosas para el dolor del consumidor.
Las bibliotecas estándar de Delphi brindan un fácil acceso a casi todos los tipos de bases de datos disponibles y permiten a los desarrolladores acceder a la funcionalidad del sistema operativo en cada plataforma, así como interactuar con dispositivos de E / S y sensores de hardware. WPF puede acceder a la funcionalidad del sistema operativo Windows y a los dispositivos de E / S a través de bibliotecas .NET pero con código administrado después de la compilación en lugar de código nativo. Electron proporciona acceso al hardware desde su proceso node.js y puede acceder a algunas, pero no a todas, las funciones del sistema operativo a través de las bibliotecas de node.js.
Después de revisar los tres marcos, Delphi lidera la categoría de flexibilidad debido a su implementación flexible y automatizada en todas las plataformas principales, escalabilidad a todos los niveles de desarrollo y sistema de diseño visual. WPF con .NET Framework es competitivo en la plataforma Windows, pero carece de la capacidad de competir en macOS o dispositivos móviles. Finalmente, Electron tiene la menor cantidad de barreras de entrada y la mayor cantidad de opciones de herramientas de desarrollo, pero depende en gran medida de las implementaciones manuales, no puede apuntar directamente a los dispositivos móviles de forma predeterminada, es el menos escalable y carece del mismo hardware y acceso al sistema operativo de sus competidores.
Echemos un vistazo a cada marco.
Acceso al hardware de Delphi
El marco FMX de Delphi incluye bibliotecas que permiten la interacción con los sensores y componentes periféricos de un dispositivo independientemente de la plataforma. Estas bibliotecas se compilan en código nativo. El Delphi RTL, el acceso directo a la memoria y otras características de bajo nivel le brindan acceso completo a la plataforma de hardware, incluido el código de ensamblaje en línea en las plataformas de escritorio x86.
Aquí hay dos ejemplos que presentan compilación condicional y ensamblaje en línea (entre asm y end; etiquetas).
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} |
Controlador de modo kernel
Es posible crear controladores en modo kernel para Windows en Delphi. Los controladores en modo kernel son definidos por Microsoft como “Los controladores en modo kernel se ejecutan en modo kernel como parte del ejecutivo, que consta de componentes del sistema operativo en modo kernel que administran E / S, memoria Plug and Play, procesos e hilos, seguridad y pronto. Los controladores en modo kernel suelen estar en capas. Por lo general, los controladores de nivel superior suelen recibir datos de las aplicaciones, filtrar los datos y pasarlos a un controlador de nivel inferior que admita la funcionalidad del dispositivo “.
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/
Instrumental de administración de Windows (WMI)
Delphi ofrece un fácil acceso a WMI y hay un proyecto de código abierto que generará rápidamente el código que necesita. Según Microsoft, WMI se define como “es la infraestructura para la gestión de datos y operaciones en sistemas operativos basados en Windows”.
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page
El RTL proporciona un componente, TBluetooth , que le da acceso a todas las funciones clásicas de Bluetooth del RTL. Arrastre un TBluetooth
componente de la paleta de herramientas a un formulario o módulo de datos de su aplicación.
Un sensor mide una cantidad física y la convierte en una señal que una aplicación puede leer. System.Sensors.Components proporciona a sus aplicaciones componentes que le permiten obtener información de muchos tipos diferentes de sensores de hardware.
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. |
Este proyecto de muestra muestra cómo usar y manipular la cámara de un dispositivo. El ejemplo demuestra el uso de TCameraComponent .
Acceso al hardware de WPF .NET Framework
WPF .NET Framework puede acceder a numerosas bibliotecas de Windows para sensores, dispositivos de E / S y otros periféricos para PC. El acceso de WPF al hardware se realiza mediante código administrado en lugar de código nativo, pero hay una interfaz nativa (no administrada) a través de P / Invoke. Este puente limita algunos accesos.
Acceso al hardware de electrones
Electron puede acceder a las funciones del sistema operativo y los periféricos de hardware a través de las bibliotecas node.js. Su base Chromium multiplataforma facilita el acceso al hardware de alto nivel en las principales plataformas de escritorio. El acceso de Electron al hardware se realiza a través de código administrado en lugar de código nativo y solo puede acceder a funciones expuestas a través de bibliotecas.
Explore todas las métricas en el documento técnico “Descubriendo el mejor marco para desarrolladores a través de la evaluación comparativa”:
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition