我一直在做一个使用 Flex + Blazeds + Spring 的项目。现在,由于连接问题,它的某些部分必须脱机运行。问题在于如何处理现有的架构,尽可能多地保留它,或者至少如何创建一个不太难发展的解决方案。我在互联网上搜索过很多类似的问题,但最常见的方法是用 actionscript 编写所有代码(包括业务逻辑、访问数据库、事务等(,我特别认为不适合这种情况。我正在考虑使用嵌入在应用程序中的Jetty和某种可嵌入的数据库,例如Java DB,这样我就可以正常访问我的Spring服务,而无需进行任何大的更改。然而,一些同事不同意。他们认为在客户端计算机上运行的Web服务器可能会导致性能问题,而更轻量级的解决方案是可行的方法。到目前为止,没有其他解决方案出现。你有什么建议?
当然,我不知道你的具体情况,但总的来说,我会同意你的同事的看法。特别是如果您不想为您的用户提供 24/7 全天候帮助台服务。如果您的用户没有功能强大的计算机,性能可能确实是一个问题。我知道 Jetty 非常轻量级,但在某些较旧的计算机上,您希望同时运行尽可能少的进程。
但我更关心的是应用程序的可维护性。对于初学者来说,您必须在用户计算机上安装整个堆栈,这并不容易。一旦你解决了这个问题,你就有更多的失败点。您的应用程序现在可能会在 AIR 应用程序、本地服务器、数据库中或其中一个层之间的连接中失败。
如果您认为将在本地计算机上部署的服务器的行为与当前 Web 服务器的行为方式相同,那么您可能错了。您没有在线运行 Jetty 或嵌入式数据库,是吗?您的用户可能拥有您必须考虑的各种不同操作系统。
您将如何将更新推送到您的应用程序?这在 AIR 应用程序中是一个非常简单的过程,但如果还必须更新本地服务器端代码,则会困难得多。
我认为从长远来看,重写AIR 应用程序中的一些逻辑会有所回报。它会预先花费一些费用,但维护成本会更低。我也不认为应该重写完整的模型。对于这些类型的在线/离线问题,您可以制定仅同步最重要的数据的策略。如果您不喜欢代码重复,您可以随时编写一个生成器,该生成器可以采用您的 Java 模型并创建 ActionScript 副本。