title: Best approach for multi client desktop application
body: <p>So the title says it all. Based on the following example which would be the best way to implement it?</p>
  
  <p>Lets have a room reservation desktop software installed on many client machines where each clients can book a room and a centralized database. </p>
  
  <p>So we have client C1 and client C2 and the database where both clients are connected. In the time that a room is booked from C1 i want
  to show it in the screen of C2 and vice versa and naturally i do not want that a room can be booked on the same time twice.</p>
  
  <ol>
  <li><p>Should i lock the room in the database when a client starts a reservation und unlock when done (or after a time limit)
  or just check the database before insert and fail if the room was booked in the meanwhile?</p></li>
  <li><p>Should i send the request directly to the database or should i implement a server software in front of the database to take the requests?</p></li>
  <li><p>How to inform the other clients that a room was booked?</p>
  
  <ul>
  <li>3A - pulling the database on the clients side every x seconds?</li>
  <li>3B - implementing refresh button for the user (+3A)</li>
  <li>3C - pushing the change to all clients through a server software infront of the database?</li>
  </ul></li>
  </ol>
  
  <p>Point 3C seems to be more complicated since requires the registration of the clients into the server software and making the clients
  also to small servers for accepting the pushed updates.</p>
  
  <p>I would have chosen: check before insert, send request directly to database (no extra server software) and 3B.
  So would you recommend the same or do you have any other ideas?</p>
  
  <p>Please mind that i am talking about desktop software and not web applications and not regarding any security issues ;)</p>