Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

We've a big data management website used by several property. Some of our customers have downtime (they can't access net for an hour or two). We want our site to support offline data viewing and inventory management (typical data search and add/remove) and when the user goes online we can sync the changes back to our central database. Customers use several platforms like Windows, iOS, etc.

We've been looking into several different options, here are the major choices -

Develop offline web app supported in HTML5. Develop a 'fallback' mechanism and interact with data from the app cache as explained in here (http://www.htmlgoodies.com/html5/tutorials/introduction-to-offline-web- applications-using-)

Develop a desktop based cross platform solution. I remember the old MONO which has been popular. Here's a post (What do you suggest for cross platform apps, including web cross-platform-apps-including-web) and another one (Technology choice for cross platform development (desktop and phone)? platform-development-desktop-and-phone?rq=1)

I realize the the desktop solution might be hard to maintain and result in some compatibility issues and demand test environments.

Can HTML5 handle moderate to high level complexity and data flow? Or would it be better to rely on a desktop based app for better scalability & performance?

share|improve this question
add comment

3 Answers

If you can ignore Management and Customer expectations, along with your team's existing skill set and existing code, I'd go with the desktop solution. In fact, ditch the browser system completely and do it all from the desktop.

Long term, a desktop application, written in a language like C# or Java, has got to be vastly easier to maintain than a large-scale web system written in HTML and Javascript. Unless people need to get at your site using ordinary machines (like the one they just sat down at in the public library) with ordinary browsers, I'd make the system an app.

(That is, if you can ignore ...)

share|improve this answer
add comment

Define "better". That word means different things to different people when asked at different times.

I would suggest HTML5 (especially if your users can't always install apps) if you or your team are proficient in Javascript and HTML/CSS. I feel JS is a very effective and easy to manage language if you properly understand how to use it.

If you or your team are more proficient with Mono et al, then I would do that direction. Though, I would assume to implement offline mode and syncing in Mono would be a bit more complex that in JS with HTML5's APIs.

Offline mode approaches are all quite similar in that you must track data locally and be able to successfully sync it up from the local schema to a remote schema while effectively (ideally automatically) resolving diff/merge issues.

share|improve this answer
add comment

If you are going HTML5 I have developed a project for doing just this thing!

It uses principles of version control to detect conflicts and is generally quite well thought out with good documentation on workings and principles which will be helpful even if you don't use it and a very technical demo.

I've just added a MongoDB server component in a branch that I will be integrated into master soon.

You can see the project on GitHub

Matt

share|improve this answer
1  
You didn't really answer the question, all you did was advertise your work. You should first state why this is better than the desktop based implementation. –  Maru Oct 23 '13 at 9:18
    
given that it's open source (MIT/BSD) I don't really see this as advertisement, as the author of the question could use it without the need of paying or depending on him –  knocte Dec 2 '13 at 7:51
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.