简短版:
是否有一种标准的方法可以将Python“后端服务器”类型的代码与phonegap客户端应用程序捆绑在一起?
详细版:
我有许多应用程序正在考虑移植到phonegap平台。通常,这些应用程序都是使用Python编写的。其中一些拥有Web前端,另一些则是基于WXPython的独立Python应用程序。
因此,每个应用程序都有一些客户端内容,这些内容已经是HTML+JavaScript+CSS,或者我愿意将它们转换为HTML+JavaScript+CSS。
对于服务器端,对于其中一些应用程序,将服务器代码留在服务器上是可以的。但对于某些/大多数应用程序,我希望将服务器端逻辑打包到phonegap应用程序中,以便它可以成为一个独立的应用程序。这个需求来自两个方面的需要。一个是许多这些应用程序被用于紧急响应,并且需要在没有蜂窝塔和其他网络基础设施的情况下工作。另一个是一些应用程序非常简单,并且不需要客户端/服务器架构 - 它们只是碰巧使用了Python编写的大量“后端逻辑”类型代码。
现在,我知道我可以将所有这些后端Python逻辑移植到JavaScript中,但是我希望找到一个解决方案,使得这个庞大的代码库仍然可以保留在Python中。
我的想法是,我可以编写一个phonegap插件,它实际上包含完整的Python解释器(至少足以处理我的代码库中的大部分内容)。 (也就是说,iOS和Android都允许本地C代码,因此我应该能够从源代码编译Python - 或者至少是大部分Python代码 - 或者只是链接到其他人已经构建的iOS和Android Python库。)
因此,在JavaScript代码中,我可以让客户端调用类似于“InvokeBackEndMethod()”这样的函数。这将类似于ajax调用,但是不是调用网络,而是将查询/ URL /消息发送到Python插件。我了解到,phonegap插件可以维护持久状态(例如,数据库插件让您可以进行一次调用来打开数据库,并进行后续调用以从中读取数据并关闭它)。因此,Python“服务器”代码可以像在真实服务器上一样维护其状态。实际上,Python代码可能正在运行像cherrpy这样的Web框架,因此它将真正地像在同一个移动应用程序中运行客户端和服务器。
我的问题是:
(1)这个计划听起来合理吗?
(2)有没有人已经解决了这个问题?我希望能找到一个名为“phonegap server”的项目,它本质上是一个“通用”的PhoneGap扩展,它可以接受来自客户端的任意调用,并将这些调用分派到您选择的各种机制:Python、Java、mono等(即,这个通用的phonegap扩展会被各种语言“插件”所扩展,然后这些插件又会被用户在给定语言中添加的任何业务逻辑所扩展)。也许大多数人不需要这样的项目,因为他们没有离线运行的要求,或者他们没有一个巨大的“后端”逻辑代码库,他们想在独立的应用程序中部署它,但是保留原始语言。但是似乎一些人必须需要这样做,不是吗?