Instant Developer

Tips&Tricks Instant Developer Foundation: multi threading per operazioni lunghe

| 9 Marzo 2016 | Giuseppe Lanzi
grafico 3 Instant Developer

Capita spesso di dover gestire operazioni lunghe nelle proprie applicazioni, specialmente in ambito gestionale. Questo può portare a un dilemma dell’utente finale che non sa bene come comportarsi.

Infatti quando viene avviata un’operazione lunga l’interfaccia delle applicazioni si deve fermare per aspettare la risposta del server, facendo comparire la classica videata attendere prego che conoscete in molti. Capita anche con le applicazioni fatte con Instant Developer Foundation, ma c’è una soluzione decisamente interessante: usare le Server Session.

Immaginiamo di avere una procedura applicativa che impiega dai 5 ai 60 secondi, nel progetto di esempio potete lanciare il metodo con il comando Long Method, vedrete comparire la barra di attesa per qualche decina di secondi. Noi non vogliamo che l’utente abbia questo tipo di esperienza, vediamo come possiamo fare.

Per prima cosa utilizziamo i metodi di startPhase e trackPhase nel metodo lungo, così da informare l’applicazione dello stato di avanzamento dell’operazione. Nel codice del progetto di esempio viene calcolato un numero casuale di step da 5 a 60, ognuno dei quali dura 1 secondo.

1longMethod1 Instant Developer

Dopodiché decidiamo di assegnare ad ogni utente, riconosciuto con il proprio username, un numero prefissato di processi indipendenti. Nell’esempio ne ho concesse 3 per ogni utente. Al momento dell’avvio dell’operazione invece di lanciarla immediatamente vediamo se l’utente ha a disposizione una sessione. Ogni sessione è identificata da un nome, nell’esempio UsernameN, dove N rappresenta il numero del processo.

Per avviare un nuovo processo, cioè un’altra sessione applicativa, utilizziamo il metodo startSession, al quale passiamo una query string che identifica l’operazione da lanciare nell’evento di onCommand. Se non ci sono processi disponibili viene mostrato un messaggio in cui si chiede all’utente di riprovare più tardi.

2startSession Instant Developer

A questo punto dobbiamo informare l’utente di quanti processi ha e qual è il loro stato di avanzamento. Per farlo utilizziamo i metodi existsSession e sessionProgress, mettendo i risultati in una tabella IMDB da mettere a video. E il gioco e fatto.

3checkProcesses Instant Developer

Che ne pensate? D’ora in poi mai più “attendere prego” .

Quale prossimo trucco ti interesserebbe vedere?

  • poll vote disabled Instant Developer   Web API: pubblicare i dati di un’app direttamente su un sito web
  • poll vote disabled Instant Developer   Mobile: sincronizzazione dati utente multi dominio
  • poll vote disabled Instant Developer   Integrazione di un componente grafico javascript
Giuseppe Lanzi
Technical Support Manager
Mi occupo di assistenza e consulenza tecnica, dei corsi di formazione e dei sistemi rivolti ai clienti. Amo la tecnologia e ogni tipo di nuovo gadget, mi interesso di fotografia e prendo al volo ogni occasione di scoprire un nuovo gioco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Potrebbe interessarti

Accedere a database locali dal cloud con Instant Developer Cloud Connector

Un requisito molto frequente per le applicazioni cloud è l’interazione con risorse on-premise, in particolare accedere a database locali dal cloud. Il caso più comune...

Leggi Tutto

Instant Developer Foundation 24.0: Consolidare per evolvere

La nuova release Instant Developer Foundation 24.0 porta con sé un numero considerevole (circa 150) di miglioramenti e correzioni progettati per consolidare la tua esperienza...

Leggi Tutto

Webinar – Sviluppa interfacce in linguaggio naturale con Instant Developer e ChatGPT

Sviluppare interfacce in linguaggio naturale basate su ChatGPT. È questo il tema del webinar durante il quale ho illustrato tutti i dettagli per realizzare questo...

Leggi Tutto

Rimani Aggiornato

Iscriviti alla nostra newsletter per ricevere aggiornamenti su novità, eventi, release, webinar e tante altre notizie sui prodotti Instant Developer.

    Presa visione dell'informativa (disponibile qui) resa da Pro Gamma SpA, acconsento al trattamento dei miei dati personali per l'invio di newsletter.*