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

Instant Developer all’Evento Tech che apre il 2025

Mi chiamo Savino Carlone, per tutti sono solo “Savi” dalla nascita e sono una persona atipica per il mondo dell’informatica: preferisco la parte relazionale –...

Leggi Tutto

Instant Developer Foundation e Cloud 24.5: la prima volta insieme

Il rilascio delle versioni 24.5 di Instant Developer Foundation e Instant Developer Cloud rappresenta una grande novità: è la prima occasione in cui le due...

Leggi Tutto

Integrazione di librerie JavaScript per generare barcode

Scegliere il modo giusto per generare barcode non è semplice e la decisione che prendi può fare la differenza in termini di costi e praticità.Potresti...

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.*