View Full Version : Comunicazione Python e altri linguaggi
Dovendo far comunicare Python, Java o Kotlin e Swift, JSON e SSL può essere una buona soluzione?
Grazie in anticipo
pabloski
12-07-2020, 13:58
Dovendo far comunicare Python, Java o Kotlin e Swift, JSON e SSL può essere una buona soluzione?
Grazie in anticipo
Definisci "comunicare".
diciamo, inviarsi dati in maniera sincrona o asincrona, ma soprattutto in maniera sicura
pabloski
12-07-2020, 15:27
diciamo, inviarsi dati in maniera sincrona o asincrona, ma soprattutto in maniera sicura
Il punto è tramite quale canale. Se usi i file, ovviamente è banale. Se usi le socket, già è diverso.
Se non c'è problema che siano programmi diversi, completamente separati, ovviamente puoi usare vari meccanismi di IPC.
Ma se, ipoteticamente, volessi creare un solo programma, usando più linguaggi, la cosa non è possibile in linea generale.
condivido il Tuo parere
nel dettaglio
ad esempio, un server con Python elabora dati
in specifiche situazioni o su richiesta di app o applicazioni su client, invia dati
una situazione di questo tipo
Ovviamente il tutto dipende dalle necessità specifiche, ma se la metti così io metterei in ascolto python su porta 80 con https e aspetterei le chiamate http in cui mi passono ciò che mi serve (JSON o XML potrebbe essere il formato). In questo modo puoi usare il protocollo http per le risposte.
My 1/2 cent
pabloski
13-07-2020, 08:59
ad esempio, un server con Python elabora dati
Già usare il termine server, significa che hai stabilito un'architettura per il sistema. E hai deciso di avere un programma Python, che funge da server, raggiungibile via socket.
in specifiche situazioni o su richiesta di app o applicazioni su client, invia dati
una situazione di questo tipo
Dipende sempre dal contesto. Girerà su una macchina, mentre i client girano altrove? Girano tutti sullo stesso computer? C'è bisogno che il server prenda l'iniziativa per la connessione e semplicemente risponde passivamente alle richieste dei client?
E' necessario un canale di comunicazione a larga banda o sono accettabili gli overhead di comunicazioni tipici delle comunicazioni su socket?
girano su macchine diverse
sia rispondendo a domande sia attivamente
in ogni caso, mi sembra di intuire che la pensate indicativamente come me
JSON essendo uno standard dovrebbe "risolvere" un pò di problemi
Json è uno standard su come inviare i dati. Ma lo è anche xml per dire, anche CSV se proprio.
Se poi ti piace Json, usalo! :)
pabloski
13-07-2020, 10:18
girano su macchine diverse
sia rispondendo a domande sia attivamente
in ogni caso, mi sembra di intuire che la pensate indicativamente come me
JSON essendo uno standard dovrebbe "risolvere" un pò di problemi
JSON è uno standard, testuale, leggibile dagli umani e con millemila librerie e supporto da parte di qualsiasi linguaggi esistente.
Non è il più efficiente però!
Come codifica per il trasferimento dati via rete, è tutto sommato anche la più indicata. Se il trasferimento avviene via file, pipe, memoria condivisa o altro, e c'è necessità di una codifica più compatta ed efficiente, è meglio guardare a codifiche binarie.
Se hai più componenti che devono comunicare tra loro, che sia sicuro o non sicuro, che sia sincrono o asincrono, che sia streaming o batch, vuoi essere agnostico rispetto a linguaggi e tecnologie.
Devi poter aggiungere, rimuovere, aggiornare o sostituire ciascun componente senza rogne sapendo che tutto il resto del sistema non è a conoscenza della modifica.
Non conosco il tuo use case, ma a naso ti direi di usare delle code (Kafka) per interconnettere i vari sistemi se si parla di un flusso di dati (streaming o meno) che deve passare attraverso i vari componenti in una pipeline di processamento e/o un Key/Value store (Redis, Ignite, Aerospike...) se la stessa roba deve essere acceduta più volte, magari in concorrenza.
A questo punto ti definisci la tua architettura decidendo che semantica di delivery ti serve e una volta definita l'architettura usi il linguaggio e le tecnologie che preferisci per ciascun componente tanto son tutti microservizi e ciaone
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.