I am building a distributed menu system to support the operations side of a large enterprise. The idea is that users can use this application to launch web applications (online or offline), virtualized apps residing on a remote server, as well as locally-installed, legacy thick client applications that we cannot afford to change (read: C/C++, Java-based.)
Some additional requirements:
- Web-based deployment
- Auto-update when application startup detects a new version on a server
- Offline-enabled - the absence of network connectivity will not impede user operation of locally-installed thick clients or offline web applications
- RESTful data synchronization (i.e., menu uses indirection to access tools/services by querying a secure rendezvous REST service
- Cross-platform, cross-browser with minimal or no-client install required (e.g., doesn't require a JVM that continually bugs the user to update)
- Intuitive UI, similar to Stacks in Mac OS X or menus that arc when selected
Server-side. For now, I've settled on ServiceStack as my RESTful web service framework, backed by a SQL Server Enterprise database. For now, the server-side is not a critical concern. Eventually, I'll need to consider securtiy, role authorization, etc., but for now I have a good handle on the server.
Client-side Candidate Solutions. The client is a different story. I've studied a wide-range of approaches to this problem, none of which are ideal (mainly due to browser sandbox security.) I'm looking for better alternatives to these:
- Offline web application
- Google Installable Web Apps
- Supports the majority of my use-cases, but AFAIK it cannot execute locally installed native code
- To mitigate this, I've looked into NaCl, but it places restrictions on the native code that's executed, and this is beyond my budget and control
- HTML5 Offline Web Application
- This would strongly be my preference, but is it possible to execute thick client code from this without the restrictions of NaCl above?
- Google Installable Web Apps
- Browser extension
- XUL extension
- I've built one of these to launch a small thick client menu (see below)
- The concern here is that XUL is past its prime.
- Cross-browser extension
- Doesn't seem to support execution of locally installed native code
- XUL extension
- Browser plugin
- NPAPI plugin to bridge native code
- Seems dangerous
- NPAPI plugin to bridge native code
- Thick web service client
- XUL-based
- Of all my efforts, I've gone the farthest with XUL. I have a XUL-powered application that makes AJAX requests to my web service to dynamically populate the menu
- This is working well so far, but has some issues:
- How do I launch a webpage from a XUL app within XULRunner?
- How do I launch my local XUL app from a web page?
- Again, will XUL be around much longer?
- Java Web Start
- I know I can pull this off with JWS, but I'm seeking alternatives
- .NET-based using a Custom MIME type
- Not sure how to get started with this, or where it will take me.
- Appcelerator Titanium
- May be a viable alternative. I haven't looked into it yet.
- XUL-based
Kudos if you've made it this far! Basically, this application is replacing a legacy menu built with scripts, which requires an army to maintain and update. I'm sure there's some top-heavy SOA solution to this problem, but the budget won't support a massive investment in up front-design and long-term maintenance.
Please clue me in if there are alternatives to the candidates I've examined so far. What's the ideal solution to my problem, given the above requirements?
EDIT: I'm intrigued by this SharePoint Quick Launch Web Part. Does anyone have experience with this one, or know how to pull this off from SP?