Come faccio a / qual è il modo migliore per interagire con un'applicazione desktop da un'applicazione Web del browser?

2

Situazione:

Abbiamo un'applicazione desktop. Abbiamo anche un'applicazione web.

Abbiamo bisogno che i due interagiscano tra loro. Pertanto, quando un pulsante viene inserito nell'applicazione Web, l'applicazione desktop deve iniziare a eseguire un processo (estraendo i dati dal cloud utilizzando un'API che abbiamo creato). Con due applicazioni locali, questo può essere fatto con porte / ascolto, modificando un flag da qualche parte localmente, e l'altra applicazione che legge questo flag, ecc.

Questo può essere fatto da web - > desktop?

Idealmente l'applicazione web avrebbe una comunicazione diretta con l'applicazione desktop e la notificherà per iniziare a estrarre i dati dal cloud usando la nostra API. Ma se questo non è possibile, avere l'app desktop esegue un processo che esegue il loop e controlla la presenza di un flag in un file o qualcosa di simile sarebbe un buon inizio.

Dopo una ricerca minima, ho trovato alcune cose come HTML5 File Api che interagisce con la directory "Sandbox" sul computer locale. Ho anche letto che è impossibile accedere a qualsiasi cosa sul computer locale per motivi di sicurezza.

Inoltre, non desidero che all'utente venga richiesto di richiedere un file di download ogni volta, abbiamo bisogno che le cose accadano dietro le quinte. (Anche se l'utente deve impostare inizialmente alcune protezioni / permessi inferiori solo per questa situazione)

Qualsiasi input è apprezzato!

    
posta kevin 14.08.2014 - 21:18
fonte

2 risposte

7

In generale, è una cosa buona che le pagine Web non possono interagire con il tuo sistema operativo. Non vorresti che nessun sito casuale sia in grado di accedere ai tuoi file e programmi.

Se hai bisogno di risolvere il problema, ti vengono in mente un paio di opzioni. Ciascuno richiederà uno sforzo.

  1. trasforma la tua applicazione web in un'applicazione desktop utilizzando uno strumento / framework come node-webkit. Quindi avrai accesso alle stesse risorse locali che avrebbe un'applicazione desktop.

  2. Ospita l'applicazione Web all'interno di un'applicazione desktop con un browser incorporato. Estendi il sistema javascript per consentire all'applicazione web di interagire con l'applicazione host.

  3. L'app desktop / a funge da server Web, in ascolto sulla porta 80. Quindi, all'interno dell'applicazione Web, effettua chiamate a localhost: 80.

  4. Crea un ActiveX che viene eseguito all'interno dell'applicazione Web che gestirà il collegamento.

  5. Crea una versione desktop della tua applicazione web

risposta data 14.08.2014 - 21:41
fonte
1

Comincio con la transizione dell'accesso ai dati a un livello di servizio protetto. Se sia l'applicazione Web sia l'applicazione desktop vengono modificati per prelevare dalla stessa esatta origine dati, diventa quindi banale stabilire una sorta di "polling" del servizio per determinare se l'azione è stata avviata e il nuovo lavoro deve essere avviato.

In alternativa, è possibile riorganizzare l'applicazione desktop in un servizio Windows che controlla continuamente l'archivio dati o utilizza eventualmente un filesystemwatcher per rilevare le modifiche. Se l'applicazione web ha accesso per apportare modifiche a un file, allora il servizio deve semplicemente osservare le modifiche in quel file per iniziare le sue azioni.

Anche oltre, puoi estendere il tuo servizio Windows per accettare chiamate SNMP. Fondamentalmente si costruirà il proprio "server" che sarebbe in grado di ricevere semplici richieste remote dal proprio server web. In sostanza, sarebbe una comunicazione diretta tra l'applicazione web e l'applicazione desktop. Sarò d'accordo qui con @GrandmasterB che questo è abbastanza pericoloso se non si ha familiarità con questa opzione in quanto ciò crea un vettore di intrusione molto pericoloso su un sistema pubblico. La connessione dovrà essere protetta su una porta specifica che è monitorata e non consentita per tutti tranne i sistemi pertinenti, e sarebbe altamente consigliato aggiungere un qualche tipo di meccanismo di autenticazione crittografato ad esso.

La mia preferenza, tuttavia, sarebbe di renderlo un meccanismo di polling basato sul servizio. È più semplice da gestire, riduce le risorse su entrambi i sistemi, fornisce meno vettori di intrusione ed è molto scalabile qualora l'applicazione desktop venisse ricostruita o riscritta per qualche motivo.

    
risposta data 14.08.2014 - 22:08
fonte