Giusto dunque vi spiego. Devo realizzare un servizio (applicazione) basato su cloud, che permette l'accesso da parte di più persone e consente loro di rinnovare la propria patente di guida. Un utente, dopo aver acceduto l'applicazione, ha la possibilità di prenotare la nuova patente, scegliendo un nuovo colore e roba del genere, non è importante. Essendo potenzialmente un servizio acceduto da molte persone, esso deve essere in grado di distribuire l'elaborazione (nel caso specifico la stampa delle patenti) su più dispositivi, ottenendo così un tempo di computazione complessivo molto ridotto. La stampa delle patenti per adesso sarà simulata attraverso una semplice attesa sulla macchina, e all'utente verrà restituito un oggetto, corrispondente alla nuova patente.
La mia idea era la seguente : l'amministratore dell'applicazione (che in teoria dovrebbe essere la Motorizzazione Civile, ma in pratica sono io) crea e gestisce un database con tutte le patenti e le indicazioni sullo stato di avanzamento (patente rinnovata, in attesa di essere rinnovata, ecc ecc). Un utente, invece, dopo aver immesso le proprie credenziali, accede all'applicazione e controlla lo stato della propria patente nel caso ne abbia prenotata una nuova, altrimenti procede con la compilazione dei campi e spedisce l'ordine.
Per sviluppare l'applicazione dovrei creare un progetto su Visual Studio, un progetto Windows Azure Cloud Service, e quindi con Web Role e Worker Role annessi. A tal proposito,i dubbi che mi attanagliano la mente sono i seguenti :
1) Essendo un'applicazione che deve essere acceduta da più utenti, i Web Role che devo creare devono essere multipli?
2) Essendo un'applicazione che deve distribuire il carico su più macchine, i Worker Role che devo creare devono essere multipli?
3) Per il database che vorrei creare, cosa dovrei usare, e come posso allacciarmi ad esso tramite codice (ad esempio se voglio ottenere una patente per modificarla, se voglio aggiungere una nuova riga, se voglio fare una generica query) ?
4) Se un utente generico prenota la propria nuova patente, e di conseguenza l'elaborazione viene spostata verso il Worker Role (supponiamo che gli viene spedito un oggetto Patente serializzato), come faccio ad essere sicuro che lo stesso oggetto verrà restituito proprio all'utente che lo ha spedito e non ad un'altro? Essendo un servizio acceduto da molte persone, credo sia necessario un sistema di comunicazione (tra Web Role e Worker Role) basato su code. E dunque come potrei fare a gestire la "biunivocità" tra utente e patente?
Spero di essere stato chiaro nell'esporre il problema. Ovviamente non pretendo che facciate voi il progetto per me, ma gradirei delle risposte approfondite al fine di capire meglio l'approccio che devo utilizzare. Potrebbero essere graditi anche manuali e tutorial, purchè siano strettamente attinenti ai problemi sopra esposti.