2013-06-26 54 views
6

短版捆绑蟒蛇“后端”代码

是否有与PhoneGap的客户端应用程序捆绑Python的“后端服务器”类型代码的标准呢?

长版

我有很多的,我正在考虑移植到PhoneGap的应用程序。一般来说,这些应用程序是用Python编写的。其中一些具有Web前端,其中一些是基于wxpython接口的独立Python应用程序。

因此,每个应用程序都有一些客户端的东西,它已经在html + javascript + css中,或者我很乐意翻译成html + javascript + css。

对于服务器端,对于某些应用程序,可以将服务器代码保留在服务器上。但对于某些/大多数,我想用phonegap应用程序打包服务器端逻辑,因此它可以是独立的应用程序。这个要求来自两个需求。其中之一是许多这些应用程序都用于应急响应,即使在手机信号塔和其他网络基础设施不可用时也需要工作。另一种是简单的说,一些应用程序非常简单,并且不保证客户机/服务器体系结构 - 它们恰好有很多用Python编写的“后端逻辑”类型代码。

现在,我知道我可以将所有后端Python逻辑都转换为javascript,但是我希望找到一个解决方案,这个庞大的代码库可以保留在Python中。

我的想法是我可以编写一个实际包含完整Python解释器的phonegap插件(至少足够完整地处理我的代码库中的大部分内容)。 (也就是说,iOS和Android都允许使用本机C代码,所以我应该能够从源代码编译Python,或者至少可以编译它,或者只是链接到其他人已经构建的iOS和Android Python库。)

所以在JavaScript代码中,我可以让客户端调用一些函数,如“InvokeBackEndMethod()”。这将像ajax调用一样,但不是在网络上调用,而是将查询/ url /消息发送到Python插件。我的理解是,phonegap插件可以保持持久状态(例如,数据库插件可以让你打一个电话打开数据库,随后的调用来读取并关闭它)。所以Python的“服务器”代码可以保持其状态,就像它在真实服务器上一样。事实上,Python代码可能运行的是像cherrpy这样的web框架,所以它确实就像在同一个移动应用程序中运行客户端和服务器一样。

我的问题是:

(1)是否该计划听起来合理吗?

(2)有人已经解决了这个问题吗?我希望找到一个名为“phonegap server”的项目,它基本上是一个“通用”的PhoneGap扩展,因为它会接受来自客户端的任意调用,并将这些调用分派给您选择的各种机制:Python,Java,单声道等(即,这种通用phonegap扩展可以通过各种语言的“插件”得到“扩展”,然后这些插件反过来会被用户在给定的商业逻辑中“扩展”语言)。这可能是因为大多数人不需要这样的项目,因为他们不需要运行断开连接和/或他们没有一个他们想要部署的“后端”逻辑的大代码库在一个独立的应用程序,但保留原来的语言。但似乎有些人必须要这样做,不是吗?

+0

不,PhoneGap应用程序应该只是客户端代码。但是你可以在包装PhoneGap代码的Java/Python代码中编写逻辑。 –

+0

@limelights:对,我的扩展想法基本上是将Java/Python代码放入包装器(即嵌入式浏览器外部的phonegap部分)。我的问题是,是否有人已经为此设置了框架。 –

回答

1

你应该签出两个非常不同的计划:http://omz-software.com/pythonista/ 允许导出到Xcode项目。

http://code.google.com/p/brython/ 对于HTML5开发,使用Python而不是Javascript。

+0

谢谢。 pythonista是一个“软件包”,仅适用于iOS,但brython看起来很有趣。我正在研究它的表现如何...... –

+0

嗯,我试过brython,还有pyjaco和py2js /睡衣。在所有情况下,我发现他们“没有准备好黄金时间”。 Py2js相当复杂,但它仍然不支持在我的代码中使用的所有Python语法(这是可行的,因为我可以通用修改代码以删除它们不支持的内容)。但杀手锏是,所有人都很难追踪到你的错误。他们提供最小的错误报告,并且很难在编译的JavaScript代码中设置断点,因为它是动态注入的(至少我不知道如何在此类代码中设置断点)。 –