Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584

    gestire multiPrenotazione

    salve a tutti
    devo creare un'applicazione multiutente

    come mi consigliate di evitare la concorrenza?

    se 2 clienti vedono lo stesso appartamento ..e insieme prenotano alla stessa ora...ovviamente ci saranno casini!
    come posso gestire questo problema?

    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Non vedo qual è il problema, o meglio non trovo nell'applicazione Web alcuna problematica in più rispetto ad una normale applicazione.

    Un'applicazione Web ASP.NET è multithreading per definizione.

    Gli strumenti per gestire le situazioni che hai descritto sono molteplici (ad esempio, l'uso di transazioni); in ogni caso, non è possibile che due persone eseguano realmente la prenotazione precisamente nello stesso tempo: il primo che arriva provoca l'inserimento dello stato nel database e questo, di fatto, escluderà l'altra persona dal farlo, senza la necessità di intervenire in qualche modo con codice specifico.

    E' chiaro poi che facendo ricerche preventive o dichiarando questa eventualità, è possibile fare in modo che la situazione di "scontro" tra le prenotazioni sia notificata in modo consono all'utente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da alka
    Non vedo qual è il problema, o meglio non trovo nell'applicazione Web alcuna problematica in più rispetto ad una normale applicazione.

    Un'applicazione Web ASP.NET è multithreading per definizione.

    Gli strumenti per gestire le situazioni che hai descritto sono molteplici (ad esempio, l'uso di transazioni); in ogni caso, non è possibile che due persone eseguano realmente la prenotazione precisamente nello stesso tempo: il primo che arriva provoca l'inserimento dello stato nel database e questo, di fatto, escluderà l'altra persona dal farlo, senza la necessità di intervenire in qualche modo con codice specifico.

    E' chiaro poi che facendo ricerche preventive o dichiarando questa eventualità, è possibile fare in modo che la situazione di "scontro" tra le prenotazioni sia notificata in modo consono all'utente.

    Ciao!
    attualmente ci sono gia dei controlli
    ma tra la funzione di avvertimento e quella specifica che inserisce nel database passa un tot di tempo in quanto il programma esegue determinate operazioni
    è proprio questo il problema se contemporaneamente un'altra persona in quel frangente di tempo preme il pulsante e il cliente di prima ancora non ha inserito il record!...succedono casini!

    da quel che vedo ebay esegue piu' volte il controllo, e lo fa come una conferma (forse dietro blocchera' con qualcosa) è proprio questa logica che vorrei capire

    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da Kahm
    è proprio questo il problema se contemporaneamente un'altra persona in quel frangente di tempo preme il pulsante e il cliente di prima ancora non ha inserito il record!...succedono casini!
    Non c'è alcun casino, perché se un'altra persona in quel frangente di tempo preme il pulsante, il "cliente di prima" che non ha ancora inserito il record non potrà inserirlo e non lo inserirà poiché, in verità, colui che è arrivato primo è proprio il primo cliente citato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da alka
    Non c'è alcun casino, perché se un'altra persona in quel frangente di tempo preme il pulsante, il "cliente di prima" che non ha ancora inserito il record non potrà inserirlo e non lo inserirà poiché, in verità, colui che è arrivato primo è proprio il primo cliente citato.
    oh beh
    mi basta solo fare affidamento alla velocita' del server!
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da Kahm
    mi basta solo fare affidamento alla velocita' del server!
    Non c'entra la velocità del server: indipendentemente da quanto il server sia veloce e da quanto "sincronizzati" saranno gli utenti del sito, non sarà materialmente possibile che a livello binario, elettronico, pratico, due utenti scrivano contemporaneamente lo stesso record, soprattutto se sottoposto (come si dovrebbe) a chiave univoca.

    Per dirla in breve, uno dei due utenti rimarrà "trombato" per forza.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da alka
    Non c'entra la velocità del server: indipendentemente da quanto il server sia veloce e da quanto "sincronizzati" saranno gli utenti del sito, non sarà materialmente possibile che a livello binario, elettronico, pratico, due utenti scrivano contemporaneamente lo stesso record, soprattutto se sottoposto (come si dovrebbe) a chiave univoca.

    Per dirla in breve, uno dei due utenti rimarrà "trombato" per forza.
    beh puoi impostare tutte le chiavi univoque che vuoi ma quando nella tabella hai :
    dataEntrata
    dataUscita
    Utente
    Camera
    è difficile (se non impossibile)stabilire chiavi in quanto gli utenti possono entrare e uscire a giorni diversi (quindi neanche mettree le chiavi nelle date entrata o uscita puo' risolvere il problema)
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da Kahm
    beh puoi impostare tutte le chiavi univoque che vuoi ma quando nella tabella hai [...]
    E' errata la progettazione del database, o comunque mancano degli elementi.

    E' chiaro che se non esiste alcun controllo sui dati che si possono inserire a livello di database, il problema non è chi arriva prima o dopo, il problema è che, passassero anche 10 minuti, hai una struttura errata delle tabelle che consente l'inserimento di dati non corretti.

    Se ci fosse una tabella delle prenotazioni correttamente strutturata con le chiavi opportune, non sarebbe possibile una coincidenza dei dati.

    Non conosco nello specifico la problematica che devi gestire, quindi non posso approfondire ulteriormente la questione, ma vi è senz'altro la possibilità di bloccare operazioni non consentite tramite chiavi.

    In ogni caso, è sempre possibile - per sicurezza - adottare un database in grado di supportare transazioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    ehm..guarda..cosi' per curiosita'
    tu come progetteresti la tabella prenotazioni?

    io ci ho riflettuto a lungo,e (facendo un esempio) una camera libera di un hotel nei 10 giorni a disposizione puo' essere prenotata in mille modi..dal primo al terzo, dal sesto al decimo,oppure dal primo al decimo!
    non ci sono chiavi univoque
    cmq faccio appello alla tua esperienza, ovviamente io alzo le mani se qualcuno riesce a trovarmi il modo, e tanto di cappello!
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  10. #10
    intervengo anche io in questa discussione in quanto sto sviluppando un sito web che gestisca proprio una cosa del genere: prenotazione di servizi turistici (camere di albergo, coperti di ristoranti, letti in bed & breakfast, guide turistiche ecc).
    La tua applicazione è multiutente, come la mia, ma, citando alka, sarebbe umanamente impossibile che due utenti appartenenti allo stesso gruppo (suppongo abbia gestito la tabella degli utenti in gruppi di appartenenza) possano inserire la prenotazione di uno stesso servizio in uno stesso istante. Qualora accadesse credo che nella tabella prenotazioni vengano generati due record distinti e separati per ognuna di esse.
    Tuttavia quel che non riesco a comprendere è il senso che dai all'idea di univocità della chiave. Cosa intendi dire??? Per me l'univocità di ogni record consta nel suo campo id, autoincrementante, che non può essere modificato dall'utente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.