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 Cloud 24.0: Sviluppa con stile, proteggi il tuo lavoro

Instant Developer Cloud 24.0 si è vestito con una nuova grafica più moderna, così da oggi ti offre un ambiente di lavoro ancora più piacevole...

Leggi Tutto

Instant Developer e PayPal: l’integrazione in 3 passaggi

Nella realizzazione di applicazioni web B2C per la vendita di prodotti e servizi verso gli utenti finali è sempre necessario integrare uno o più sistemi...

Leggi Tutto

Comunicazione Backend–Frontend efficace: Una Guida con Instant Developer

In un mondo dove le applicazioni diventano sempre più complesse, rendere efficace la comunicazione backend - frontend è più che mai fondamentale. Instant Developer non...

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