I’m planning to recreate a Windows based desktop application as a web application which will be hosted on Azure.
Current desktop application contains rich GUI and has the following capabilities:
Examples of graphical capabilities:
- Draw rectangles using the mouse (as in PowerPoint)
- Display some pictures and icons on the boxes
- Connect rectangles using the mouse
- Change positions of the rectangles using Drag and drop
- Pan (scroll) the diagram horizontally and vertically
- Zoom the diagram
- Split the window using a splitter
- Display hierarchical information in a tree (pretty much like the folder structure in Windows Explorer)
- Dynamically (at run time) create screen elements like Push buttons, etc.
- Popup windows for user input (User generally provides input by selecting one or more items in a grid control, or by entering values into a table similar to a spread sheet).
- Table interface (data displayed in rows and columns, each cell can be edited, or contain controls like list boxes, text boxes, icons, buttons, check boxes, etc.). Also, the table contains fixed rows & fixed columns.
- Tabbed dialog interface (similar to sheets in Excel or Property Pages in Windows).
- Display 3D scenes (created in Direct3D) with panning, zooming, rotating, animating capabilities.
- Based on some front-end event (for example, the user clicks a button), the diagram is computed on the fly by applying some algorithm, which may take a few minutes. While the backend calculations are happening, an hour glass is displayed.
- Read files (typically, flat files) from local disk
Examples of Backend capabilities:
- Save the whole diagram to the database (like SQL Server/MySQL, etc.). The database table contains columns like the Rectangle position, and dimensions, etc.
- Call functions written in other languages (like C++, Java or C#) to apply some business logic.
Now, the new application should have the additional capabilities:
- Application should be platform independent (Windows, Linux, iOS, etc.)
- Application should be device independent (laptop/desktop/mobile device/tablet/etc.)
- Application and supporting database should be hosted on cloud (Azure, AWS, Google, etc.)
- Application should be scalable, High Available, provide DR capability, etc. (which will be taken care by the Cloud infrastructure)