4

我当前的 Intraweb 应用程序实际上是一个 DataSnap 客户端,它连接到我的 DataSnap 服务器,它与同一台机器上的 Interbase 服务器连接并坐在一起。它可以正常工作,但速度很慢,需要不断的 Internet 连接才能工作。单击的每个按钮或触发的任何事件都需要浏览器连接到 Web 服务器 (Intraweb)。

我正在考虑使用 Delphi XE2 中的 Intraweb、HTML5 缓存清单功能创建一个离线 Web 应用程序,并在移动设备离线时使用基于浏览器的 SQL 存储(例如 webSQL 或 IndexedDB)作为本地浏览器存储。只有当 Internet 连接可用于初始化或同步回 DataSnap 服务器时,它才会连接到真实的 DataSnap 服务器。

有可能吗?

我的主要问题是从 Intraweb Web 应用程序中获取网页的 url,我不想将所有浏览器的存储代码放在模板文件中。

将 Intraweb 生成的 JavaScript 代码移动到其他 js 文件中也很繁琐,这样做可能会破坏 Intraweb 应用程序的代码和逻辑。有什么解决方法吗?

4

1 回答 1

4

正如您自己所说:“单击的每个按钮或触发的任何事件都需要浏览器连接到 Web 服务器”。

这是 IntraWeb 的设计:一个客户端-服务器应用程序,其中大部分代码逻辑都在服务器端执行。您可以将一些 AJAX 小部件添加到您的应用程序中,但 IntraWeb 本身就是一个服务器端框架。

为了让完整的 HTML5 AJAX 客户端应用程序能够独立运行,您需要一个纯 JavaScript 应用程序。即使是基于 Sacha/ExtJS 的 AJAX 框架(如ExtPascalUniGUI)或 Morfik 也需要服务器才能运行。

但是创建一个纯 HTML5 JavaScript 应用程序是一项艰巨的任务 - 但这是可能的,因为您可以使用 JavaScript 中的 DataSnap 内容(使用 XML 或 JSON)。您可以尝试http://www.appcelerator.com/,这是一个很棒的 IDE 和平台,用于创建作为原生应用程序运行的 JavaScript 应用程序。

为了有一个断开连接的 HTML5 应用程序,您可能需要等待以下产品发布:

感谢这两个项目,您将能够在对象 pascal 中编写代码,然后将从 pascal 源编译 JavaScript,然后使用 HTML 本地存储。例如,请参阅这篇关于使用 Smart/OP4JS 存储的文章——我已经测试过它(在 Alpha 中),它工作得很好:你有一个纯独立的 HTML 文件,它可以在没有任何服务器的情况下运行,并且有本地贮存。SQLite3 存储已计划(尚未完成)。

于 2012-01-12T07:51:30.280 回答