Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need some recommendations for a software stack that will allow me to put a des

ID: 657634 • Letter: I

Question

I need some recommendations for a software stack that will allow me to put a desktop application on the web. Because it will need to look like and work like the original application as much as possible, it probably needs to be a SPA application. Delays of 1 to 3 seconds to push an HTML5 form to the client are probably not acceptable. Styling is important as well.

What I know

The original application is in Winforms. It uses a Tab metaphor, and has about 10 tabs. Each tab can have a summary view, where a list of records is displayed, and a detail view, where a specific record is displayed. Most of the main forms in the tabs are CRUD, but some have specific workflow uses. There are several reports, of the 8 1/2 x 11 variety. There is already some form of Data Access Layer and Business Logic Layer, but no web API yet.

Ideally, I hope to get close to the quality of a WPF application, but in HTML5 and CSS3.

The foundational infrastructure is SQL Server and ASP.NET MVC, which I am already familiar with. I figure I need to push out a skeletal HTML5 infrastructure, and then hand most of the operation of the APP to the browser. There are many moving parts, so I may need to code-generate some of it.

Explanation / Answer

You're going to need to break this next project out and consider several different components.

Please note: I have tried to refer to the 3rd party products in alphabetical order. You'll find that they are fairly similar and any given one in each category should meet your needs.

Starting from the UI and working backwards:

UI widgets - you'll need / want to use some sort of pre-packaged controls for your HTML5 pages. Yes, you can write your own or just use native elements from HTML5. But if you're used to Winforms development and you're targeting WPF quality levels, pre-packaged is the way to go. Syncfusion and Telerik / Kendo are solid options to consider.

Javascript framework - you'll want to consider a framework to provide the equivalent MVVM paradigm that you're used to working with from WPF. AngularJS, EmberJS, and ReactJS are all worth considering from that perspective.

Data mapping - you may need to consider an additional framework to help with data mapping, caching, and concurrency concerns depending upon the number of users on your product and how much data is changed. BreezeJS is worth taking a look at to see if it will help you in that regards.

As far as the back-end API, I would recommend sticking with ASP.NET MVC since you said the existing application already has this in place. There are alternatives, but I don't think there is anything that merits replacing that portion of your software stack at this point. If need be, you can tweak ASP.NET MVC to provide REST style services.

You're going to need to do some experimenting to see if you want to use a SPA approach or if you want each tab of the existing application to present as separate pages within the new site. It sounds like you're at the edge of what a SPA can reasonably handle and have a reasonable download size.

Using a SPA would make it easier to present the same (modified) information across the tabs, whereas a more traditional web app would have problems with that local data persistence. BreezeJS may be the answer for local persistence if you decide you need each tab as a separate page