离线网络发射器

时间:2011-06-17 03:24:30

标签: web-applications menu xul distributed offline

我正在构建一个分布式菜单系统来支持大型企业的运营方面。 我们的想法是,用户可以使用此应用程序启动Web应用程序(在线或离线),驻留在远程服务器上的虚拟化应用程序,以及我们无法承受的本地安装的传统胖客户端应用程序(阅读:C / C ++ ,基于Java。)

一些额外要求:

  • 基于Web的部署
  • 应用程序启动时检测到服务器上的新版本时自动更新
  • 启用离线功能 - 缺少网络连接不会妨碍用户操作本地安装的胖客户端或离线Web应用程序
  • RESTful数据同步(即,菜单使用间接通过查询安全的会合REST服务来访问工具/服务
  • 跨平台,跨浏览器,需要最小或无客户端安装(例如,不需要JVM不断地将用户误认为update
  • 直观的用户界面,类似于Mac OS X中的Stacks或menus that arc when selected

服务器端。目前,我已经确定ServiceStack作为我的RESTful Web服务框架,由SQL Server Enterprise数据库支持。目前,服务器端并不是一个关键问题。最后,我需要考虑安全性,角色授权等,但是现在我在服务器上有一个很好的处理。

客户端候选解决方案。客户端是另一回事。我已经研究了这个问题的各种方法,其中没有一个是理想的(主要是由于浏览器沙箱安全性。)我正在寻找更好的替代方案:

  • 离线网络应用程序
    • Google Installable Web Apps
      • 支持我的大部分用例,但AFAIK无法执行本地安装的本机代码
      • 为了缓解这种情况,我调查了NaCl,但它对已执行的本机代码设置了限制,这超出了我的预算和控制范围
    • HTML5 Offline Web Application
      • 这将是我的偏好,但是可以在没有上述NaCl限制的情况下从中执行胖客户端代码吗?
  • 浏览器扩展程序
  • 浏览器插件
  • 厚Web服务客户端
    • XUL-based
      • 在我所有的努力中,我与XUL走得最远。我有一个XUL驱动的应用程序,它向我的Web服务发出AJAX请求以动态填充菜单
      • 到目前为止这种方法运作良好,但有一些问题:
    • Java Web Start
    • 使用Custom MIME type基于.NET
      • 不知道如何开始使用它,或者它将带我去哪里。
    • Appcelerator Titanium
      • 可能是一个可行的选择。我还没有调查过。

如果你已经做到这一点,那就值得称赞!基本上,这个应用程序正在取代用脚本构建的遗留菜单,这需要军队维护和更新。我确信这个问题有一些头重脚轻的SOA解决方案,但预算不会支持对前端设计和长期维护的大量投资。

如果到目前为止我已经检查了候选人的替代方案,请告诉我。鉴于上述要求,我的问题的理想解决方案是什么?

编辑:我对这个SharePoint Quick Launch Web Part很感兴趣。有没有人有这方面的经验,或者知道如何从SP中解决这个问题?

2 个答案:

答案 0 :(得分:1)

在我看来,有很多可能的方法来实现您描述的功能集,但您仍然坚持如何以跨浏览器,跨平台的方式从基于浏览器的应用程序执行本机应用程序。

我担心实现这一目标的唯一方法是为每个要支持的浏览器开发一个小插件。对于Firefox来说,这很简单,因为有一个XPCOM API(nsIProcess)用于调用新进程。在IE中,您可以编写一个用C ++实现并授予必要权限的ActiveX。在Chrome中,您别无选择,只能编写NPAPI插件。

如果是我,我会为Firefox和Chrome编写一个NPAPI插件,因为网页可以为两个浏览器使用相同的代码。对于IE,您可以编写一个ActiveX,其访问方式与插件的访问方式大致相同。因此,希望能够启动外部进程的网页将嵌入插件,设置必要的属性值(即执行进程的路径)并在嵌入对象上调用方法。

答案 1 :(得分:0)

基于提供的优秀教程,我尝试使用SiteFusion构建分布式菜单系统。它是基于PHP的XUL应用程序客户端/服务器框架,因此允许客户端执行本地本机应用程序。虽然服务器仅在* NIX平台上受支持,但客户端可以在任何地方运行。这个解决方案似乎是我所陈述的大多数要求的理想选择。