FoxInCloud
Thinfinity VirtualUI - Move your Visual FoxPro apps to the web.
Gravatar is a globally recognized avatar based on your email address. re: Thinfinity VirtualUI - Move your Visual FoxPro apps to the web.
  FoxInCloud Support - Thierry N.
  Matt Slay
  Jan 8, 2019 @ 02:48am

Hi Matt, Allan,

Quite different behind some similarities:

  • Like FoxInCloud, Thinfinity VirtualUI clones the VFP form in a browser and intercepts the user events, and sends them to the server to execute the corresponding VFP event code.

  • Like TSplus, Thinfinity VirtualUI creates a bitmap array using the canvas HTML5 element to copy each pixel of the VFP form running on the server; each user has a 'private' VFP session open on the server, similar to what you have on a desktop, except it's on a remote server; the more users, the more VFP instances and the more memory needed on the server. Thinfinity VirtualUI can be viewed as an alternative to Microsoft RDP, that works in a browser instead of a proprietary client.

  • Conversely, FoxInCloud generates a true HTML/CSS/JS UI layer from the VFP form (with roughly one HTML element per control in the form) and implements the user events using AJAX (see below); FoxInCloud offers 2 generation modes: classic and responsive

    • in classic mode, HTML rendered by FoxInCloud tries to be as close as possible to the original VFP form: same layout, colors and dimensions; eg. http://foxincloud.com/tutotest/
    • in responsive mode, FoxInCloud interprets the form layout (relative positions, dimensions, etc.) to produce responsive HTML using the Bootstrap framework: form is almost like the original form, and responds when browser size changes (eg. handheld vs. desktop); eg. http://foxincloud.com/tutotest/bs/
  • being stateless, FoxInCloud shares each instance of each form across users: whenever a user event occurs in the browser:

    1. FoxInCloud.js captures the event and sends it to the server using AJAX with all required details: user ID, element ID, type of event, state of modifier keys, mouse coordinates, etc.
    2. on server side, if another user has earlier interacted with the same form instance, FoxInCloud first restores the form into the state where this user has left it after his latest action (or the initial state if first action of this user on this form): mutable data (cursors, views, alias) and properties (at form and object level)
    3. FoxInCloud executes the code in the matching VFP event method
    4. FoxInCloud saves the state of the form for this user
    5. By comparing the state of the form before and after the user event, FoxInCloud identifies the UI changes that must occur on the client side
    6. FoxInCloud sends back the UI update orders to the client browser for execution by FoxInCloud.js AJAX call-back method.

This server-side state management feature makes FoxInCloud very scalable: 4 logical servers (running on the same Windows Server instance) can easily serve 40 concurrent users.

FoxInCloud also features a very detailed and comprehensive application dashboard: http://foxincloud.com/tutotest/bs/foxincloud-status.tuto

© 1996-2019