Qual é o desempenho do Delphi, do WPF .NET Framework e do Electron em comparação entre si, e qual é a melhor maneira de fazer uma comparação objetiva? A Embarcadero encomendou um white paper para investigar as diferenças entre Delphi, WPF .NET Framework e Electron para a construção de aplicativos de desktop do Windows. O aplicativo de referência – um clone da Calculadora do Windows 10 – foi recriado em cada estrutura por três voluntários Delphi Most Valuable Professionals (MVPs), um desenvolvedor WPF freelance especialista e um desenvolvedor freelance Electron especialista. Nesta postagem do blog, vamos explorar a métrica de acesso a hardware, que faz parte da comparação de flexibilidade usada no white paper. O aplicativo de calculadora em si não faz uso do acesso de hardware em cada estrutura, portanto, a comparação é feita entre as próprias estruturas.
Table of Contents
Acesso ao hardware específico do dispositivo
A estrutura facilita o acesso a dados de sensores de dispositivo (GPS, microfone, acelerômetros, câmera, etc.) e ação física por meio de dispositivos semelhantes? Estruturas que “abrem as portas” para a infinidade de sensores e atuadores disponíveis em dispositivos inteligentes hoje criam oportunidades de negócios e soluções inovadoras para o problema do consumidor.
As bibliotecas padrão da Delphi fornecem acesso fácil a quase todos os tipos de banco de dados disponíveis e permitem que os desenvolvedores acessem a funcionalidade do sistema operacional em todas as plataformas, bem como interajam com dispositivos de E / S e sensores de hardware. O WPF pode acessar a funcionalidade do sistema operacional Windows e dispositivos de E / S por meio de bibliotecas .NET, mas com código gerenciado após a compilação, em vez de código nativo. Electron fornece acesso ao hardware de seu processo node.js e pode acessar algumas, mas não todas as funções do sistema operacional por meio de bibliotecas node.js.
Depois de revisar todas as três estruturas, Delphi mantém a liderança na categoria de flexibilidade devido à sua implantação flexível e automatizada para todas as principais plataformas, escalabilidade para todos os níveis de desenvolvimento e sistema de design visual. O WPF com .NET Framework é competitivo na plataforma Windows, mas não tem capacidade de competir no macOS ou em dispositivos móveis. Finalmente, o Electron tem menos barreiras de entrada e mais opções de ferramentas de desenvolvimento, mas depende muito de implantações manuais, não pode visar dispositivos móveis diretamente por padrão, é o menos escalonável e não tem o mesmo acesso de hardware e sistema operacional de seus concorrentes.
Vamos dar uma olhada em cada estrutura.
Acesso de Hardware Delphi
A estrutura FMX da Delphi inclui bibliotecas que permitem a interação com os sensores e componentes periféricos de um dispositivo, independentemente da plataforma. Essas bibliotecas são compiladas em código nativo. O Delphi RTL, acesso direto à memória e outros recursos de baixo nível fornecem acesso total à plataforma de hardware, incluindo código de montagem em linha em plataformas de desktop x86.
Aqui estão dois exemplos de compilação condicional e montagem embutida (entre asm e 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} |
Driver do modo kernel
É possível criar drivers de modo kernel para Windows no Delphi. Os drivers do modo kernel são definidos pela Microsoft como “drivers do modo kernel são executados no modo kernel como parte do executivo, que consiste em componentes do sistema operacional do modo kernel que gerenciam I / O, memória Plug and Play, processos e threads, segurança e em breve. Os drivers do modo kernel são normalmente em camadas. Geralmente, os drivers de nível superior normalmente recebem dados de aplicativos, filtram os dados e os passam para um driver de nível inferior que oferece suporte à funcionalidade do dispositivo ”.
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/
Instrumentação de gerenciamento do Windows (WMI)
Delphi oferece fácil acesso ao WMI e há um projeto de código aberto que irá gerar rapidamente o código que você precisa. De acordo com a Microsoft, WMI é definido como “é a infraestrutura para gerenciamento de dados e operações em sistemas operacionais baseados em Windows”.
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page
O RTL fornece um componente, TBluetooth , que dá acesso a todos os recursos do Bluetooth clássico do RTL. Arraste um TBluetooth
componente da Paleta de ferramentas para um formulário ou módulo de dados do seu aplicativo.
Um sensor mede uma quantidade física e a converte em um sinal que pode ser lido por um aplicativo. System.Sensors.Components fornece aos seus aplicativos componentes que permitem obter informações de muitos 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 exemplo de projeto mostra como usar e manipular a câmera de um dispositivo. O exemplo demonstra o uso do TCameraComponent .
Acesso a hardware WPF .NET Framework
O WPF .NET Framework pode acessar várias bibliotecas do Windows para sensores, dispositivos de E / S e outros periféricos para PCs. O acesso do WPF ao hardware é por meio de código gerenciado em vez de código nativo, mas há uma interface nativa (não gerenciada) por meio de P / Invoke. Esta ponte limita algum acesso.
Electron Hardware Access
O Electron pode acessar funções do sistema operacional e periféricos de hardware por meio de bibliotecas node.js. Sua base de plataforma cruzada do Chromium facilita o acesso de alto nível ao hardware em todas as principais plataformas de desktop. O acesso do Electron ao hardware é por meio de código gerenciado em vez de código nativo e só pode acessar recursos expostos por meio de bibliotecas.
Explore todas as métricas no white paper “Descobrindo a melhor estrutura de desenvolvedor por meio de benchmarking”:
Baixe o artigo gratuito Delphi vs. WPF vs. Electron para desktops Windows
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition