Traitée Edition simultannée d'un objet

  • jeudi 30 novembre 2006 10:54
     
     

     

    Bonjour

    Au niveau processus je voudrais savoir comment on gère dans des applications .NET les notions de mise à jour simultannée d'un objet.Exemple : j'édite une annonce : comment gérer el fait qu'un autre utlisateur edite en même temps cette annonce ? je peux mettre un flag à true dans la base de donnée pour dire que l'annonce est en train d'etre editer et donc interdire a un autre utilisateur de l'editer. Ensuite je peux dire que je libere l'edition ( flag a false ) à un autre utilisateur quand le premier utilisateur sauve son annonce ou quitte la page d'edition ou quitte sa session (avec quelle classe gérer le timeout ?).Je peux aussi mettre en plus du flag une date en base de donnée au cas ou il y auarit une panne de courant ou autre : ainsi si je vois un flag a true sur une annonce mais dont la date d'edition remonte a plus de N minutes alors je considere que l'edition a ete interrompue et je remet mon flag a false.

    Enfin voyez mon problème ici.Vous allez peut etre me parler de transaction j'imagine mais y a t-il d'autres moyens et quels exemples puis je trouver la dessus, vers quelle classe se diriger

    Merci

     

Toutes les réponses

  • jeudi 30 novembre 2006 13:18
     
     Traitée

    Bonjour,

    Les solutions que vous abordez semblent être les bonnes dans votre cas. Pour gérer le cas de fin de session, il vous suffit de positionner votre code de mise à jour du flag dans la méthode Session_End de Global.asax.

    En effet, une méthode basée sur les transactions pourrait vous permettre de vérouiller la ligne actuellement en cours d'édition mais ce principe ne fonctionne qu'a partir du moment où vous traitez ces opérations en mode connecté. Ce n'est donc pas le cas d'une application web et c'est pourquoi votre solution semble la bonne.

    D'autre part, en règle générale les mises à jour concurrentes sur le web sont gérées selon le mode "Dernier qui parle à raison" ;)