Salve a tutti!
Apro questo thread per avere pareri e suggerimenti riguardo all' implementazione di un Web Service. Premetto che sono stato forzato dall' alto ad utilizzare la tecnologia dei Web Services che, come noto, è stateless e non gestisce sessioni, mentre il servizio in questione necessita di un meccanismo di gestione delle sessioni e di mantenere, per ogni utente, uno stato che sopravviva tra una richiesta di servizio e l' altra, è per questo che non mi sembra la scelta più azzeccata, ma purtroppo sono obbligato a farlo così!
Descrivo brevemente l' idea del web service in questione:
- Deploying: il web service può far affidamento su un database, sarà sviluppato in Java e il suo deploying avverrà attraverso AXIS2, il quale è "montato" su Tomcat;
- Struttura: il web service, per ora, è stato suddiviso in due layer, il primo di interfacciamento verso il client, il secondo che implementa la business logic del servizio. Riguardo al primo layer, si tratta di un modulo che espone tutti i metodi invocabili dal client, ciascuno di questi metodi (quelli del modulo di interfacciamento) deve verificare che il client sia autorizzato all' invocazione del metodo stesso e richiamare opportunamente il corrispondente metodo implementato nel secondo layer, a questo punto il metodo del secondo layer, che implementa la logica desiderata, deve, in generale, accedere al database e prelevare da esso lo stato relativo all' utente che ha invocato il metodo (ad esempio, lo stato del suo carrello acquisti, in generale delle informazioni sull'utente), effettuare le dovute elaborazioni, aggiornare lo stato sul database e ritornare i risultati, che saranno ritornati al client. Tutte le classi sono statiche, poichè ogni richiesta può necessitare al più di una sola istanza della classe, il cui tempo di vita sarebbe la durata dell' esecuzione della richiesta, quindi non vedo la necessità di creare ogni volta un solo oggetto per classe che verrà distrutto immediatamente dopo...
I problemi che si pongono sono diversi:
- Come implementare il meccanismo delle sessioni con i web services? E' sufficiente che il client invii ad ogni richiesta il suo uid e password e che, lato server, si controlli ogni volta chi sia l' utente?
- Esiste una maniera alternativa per mantenere lo stato relativo ad un utente? Per come l' ho pensata, per ogni utente esiste, sul database, una tupla con le informazioni che lo riguardano, ed ogni metodo le deve, ogni volta, prelevare, modificare e rinfilare nel database...
- Esiste un modo per evitare che, ad ogni richiesta di un client, il metodo servente debba ogni volta ri-effettuare la connessione al database?

Rispondi quotando