离线网络启动器
我正在构建一个分布式菜单系统来支持大型企业的运营方面。 这个想法是,用户可以使用此应用程序来启动 Web 应用程序(在线或离线)、驻留在远程服务器上的虚拟化应用程序,以及我们无力更改的本地安装的传统胖客户端应用程序(阅读:C/C++ ,基于 Java。)
一些附加要求:
- 基于 Web 的部署
- 当应用程序启动检测到服务器上有新版本时自动更新
- 支持离线 - 网络连接的缺失不会妨碍用户本地操作-安装胖客户端或离线网络应用程序
- RESTful 数据同步(即,菜单通过查询安全集合 REST 服务来间接访问工具/服务
- 跨平台、跨浏览器,需要最少或无需安装客户端(例如,不需要需要一个 JVM 不断地向用户发出错误 更新)
- 直观的 UI,类似于 Mac OS X 中的 Stacks 或 选择时出现的菜单
服务器端。 目前,我已经决定ServiceStack 作为我的 RESTful Web 服务框架,由 SQL Server Enterprise 数据库支持。目前,服务器端并不是一个关键问题。最终,我需要考虑安全性、角色授权等,但现在我已经很好地处理了服务器。
客户端候选解决方案。客户端则不同。我研究了解决这个问题的多种方法,但没有一个是理想的(主要是由于浏览器沙箱安全性)。我正在寻找更好的替代方案:
- 离线网络应用程序
- Google 可安装网络应用
- 支持我的大多数用例,但据我所知,它无法执行本地安装的本机代码
- 为了缓解这个问题,我研究了 NaCl,但它设置了限制在执行的本机代码上,这超出了我的预算和控制范围
- HTML5 离线 Web 应用程序
- 这强烈是我的偏好,但是是否可以在不受上述 NaCl 限制的情况下执行胖客户端代码?
- Google 可安装网络应用
- 浏览器扩展
- 浏览器插件
- 用于桥接本机代码的 NPAPI 插件
- 看起来很危险
- 用于桥接本机代码的 NPAPI 插件
- 厚 Web 服务客户端
- 基于 XUL
- 在我所有的努力中,XUL 是我走得最远的。我有一个 XUL 支持的应用程序,它向我的 Web 服务发出 AJAX 请求以动态填充菜单
- 到目前为止,该方法运行良好,但存在一些问题:
- 如何启动来自 XULRunner 中 XUL 应用程序的网页?
- 如何从网页启动本地 XUL 应用?
- 再说一遍,XUL 的存在时间还会更长吗?
- Java 网络启动
- 我知道我可以使用 JWS 来实现这一目标,但我寻求替代方案
- 基于.NET,使用自定义 MIME 类型
- 不确定如何开始,也不知道它将带我去往何处。
- 钛合金加速器
- 可能是一个可行的替代方案。我还没研究过。
- 基于 XUL
如果您已经做到了这一步,那真是太感谢了!基本上,这个应用程序正在取代用脚本构建的遗留菜单,这需要一支军队来维护和更新。我确信有一些头重脚轻的 SOA 解决方案可以解决这个问题,但预算无法支持在前期设计和长期维护方面的大量投资。
请告诉我是否有我迄今为止检查过的候选人的替代方案。考虑到上述要求,我的问题的理想解决方案是什么?
编辑:我对此 SharePoint 快速启动 Web 部件很感兴趣。有谁有这方面的经验,或者知道如何从 SP 中实现这一点?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在我看来,有很多可能的方法来实现您所描述的功能集,但您却陷入了如何以跨浏览器、跨平台的方式从基于浏览器的应用程序执行本机应用程序的困境。
恐怕实现这一目标的唯一方法是为您想要支持的每个浏览器开发一个小型插件。对于 Firefox,执行此操作非常简单,因为有一个用于调用新进程的 XPCOM API (nsIProcess)。在 IE 中,您可以编写一个用 C++ 实现的 ActiveX,并授予必要的权限。在 Chrome 中你别无选择,只能编写一个 NPAPI 插件。
如果是我,我会为 Firefox 和 Chrome 编写一个 NPAPI 插件,因为网页可以在这两种浏览器上使用相同的代码。对于 IE,您可以编写一个 ActiveX,其访问方式与插件大致相同。因此,想要启动外部进程的网页将嵌入插件,设置必要的属性值(即要执行的进程的路径)并调用嵌入对象上的方法。
It sounds to me like there are numerous possible approaches to implementing the feature set you describe, but you are stuck on how to execute native apps from a browser-based app in a cross-browser, cross-platform way.
I'm afraid the only way to achieve this is to develop a small add-on for each browser that you want to support. For Firefox it's very simple to do this since there is an XPCOM API (nsIProcess) for invoking new processes. In IE you could write an ActiveX that is implemented in C++ and granted the necessary privileges. In Chrome you have no choice but to write an NPAPI plugin.
If it were me, I'd write an NPAPI plugin for Firefox and Chrome since webpages can then use the same code for both browsers. For IE you can write an ActiveX which is accessed in more or less the same way as the plugin. So webpages that want the ability to launch external processes would embed the plugin, set the necessary property value (i.e. the path to the process to execute) and call a method on the embedded object.
基于提供的优秀教程,我尝试使用 SiteFusion 它是一个基于 PHP 的 XUL 应用程序客户端/服务器框架,因此允许客户端执行本地、本机应用程序。尽管服务器仅在 *NIX 平台上受支持,但客户端可以在任何地方运行。该解决方案似乎非常适合我提出的大多数要求。
Based on the excellent tutorials provided, I'm attempting to build the distributed menu system using SiteFusion It's a PHP-based client/server framework for XUL applications, that consequently allows clients to execute local, native applications. Although the server is only supported on *NIX platforms, the client can run anywhere. This solution seems ideal for the majority of my stated requirements.