Python与Jython(JAVA)应用的网络通信
我打算开发一个基于SaaS(软件即服务)的应用程序,这个应用会有一个在服务器上运行的Python程序和一个作为Jython应用运行的客户端界面。最开始,我的计划是用Jython来开发客户端,以便快速制作原型,但如果以后应用变得复杂,或者Jython的性能下降,我会把客户端完全转移到JAVA上。
现在,我想找一种有效的方法,让服务器和客户端之间能够通过TCP/IP进行通信,我打算使用一些知名的工具,比如Twisted。我也在考虑其他选项,比如corba和pyro。
基于这些想法,我有几个问题。
在Python和Jython客户端之间,最有效的TCP/IP套接字通信方式是什么?我可以在Python端使用Twisted,而在Jython端使用Java套接字API(它们兼容吗)?或者有没有其他更好的方法(适合快速原型和快速应用开发)?
2 个回答
你可以使用twisted,这没什么问题。不过我推荐你试试zeromq。它非常快,而且让你写网络应用变得简单多了。
我建议使用RPC,而不是通过套接字进行纯粹的TCP/IP通信。
如果客户端不多,而且你不想接触复杂的技术,可以使用像JsonRPC或XMLRPC这样的东西。(注意,Pyro只能在服务器和客户端都是用Python写的情况下使用。如果你打算以后转到Java,那就要考虑这一点。)
如果这里的性能和安全性很重要(比如很多客户端同时发送请求,或者你需要SSL连接),可以使用像Ice这样的工具。我更喜欢Ice而不是Corba,因为它更简单、更现代,而且和Corba一样好(甚至可能更好)。
更新:在我看了你的评论后,我真的很推荐你使用Ice。Ice、Corba以及类似的技术被称为ORB(对象请求代理)。它们不使用传统的服务器/客户端模型。因此,应用程序中的所有对象都可以相互通信,无论它们在哪里。在这种情况下,你将拥有一个真正的分布式应用程序。