title: Best practices for JavaFX desktop application communicating with a remote server
body: <p>I need advice on best practices for designing a desktop application in JavaFX communicating with a remote server. As I mostly have experience in developing web applications, I need to know common problems and need-to knows that should be considered when developing desktop applications.</p>
  
  <h2>Problem description and requirements:</h2>
  
  <p>This is an application for employees to view data, take report and perform several other actions based on their roles.</p>
  
  <ul>
  <li>This application will be installed for more than 10 employees, # can be increased later.</li>
  <li>Each employee should be able to login and use the application (multiple employees can use the application at the same time).</li>
  <li>Any modification on data performed by each employee will be recorded for future tracking.</li>
  <li>Application will display differently to each user based on their roles.</li>
  <li>As this application will be installed on many computers, employees can login to application from different computers and they will be recognized by their login.</li>
  </ul>
  
  <h2>Suggested solution:</h2>
  
  <p>Is it considered a good practice if:</p>
  
  <ul>
  <li>I use Mysql as backend database?</li>
  <li>I create an intermediary server with connection to database which
  allows client applications to connect to the server and interchange
  data through it <strong>Or</strong> each application instance used by employees should
  directly establish connection to database which is hosted on another
  server on the same local network?</li>
  </ul>