将VB.NET前端与Python后端通过套接字连接是好主意还是坏主意?
我有一些很不错的Python代码,可以完成我需要做的事情。不过,我对Python的图形界面选项不是很满意。wxPython还不错,但对于我需要的功能来说,它在调整大小、刷新和动态添加控件时的速度都不够快。我想用VB.NET来创建图形界面。我想我可以用IronPython把两者连接起来,但这样就需要依赖一个比较大的第三方产品。我在浏览MSDN关于Windows进程间通信的文档时,想到可以使用套接字。我从Python文档中复制了回声服务器的代码,没花5分钟就能在VB.NET中创建一个客户端,甚至没有看System.Net.Sockets的文档,所以这看起来并不难。
我想问的是……这样做是个坏主意吗?如果是的话,我应该怎么做?
如果这是个好主意,我该怎么进行呢?
2 个回答
我觉得这是个很棒的主意。我支持Michael Dillon推荐的REST API,并且我还建议你使用Django来搭建你的REST服务器。
我用Django写过一个REST网络服务,Django让这个过程变得非常简单和有趣。Django让我很容易设置我想要的URL,运行每个URL所需的代码,并根据需要与数据库进行交互。我的网络服务非常稳定可靠,我可以通过网页浏览器轻松测试和调试它。
如果你已经在Python中写好了代码,只想加一个简单的接口,而且如果REST看起来不太适合你,你可以考虑Twisted这个网络框架。这里有一篇很不错的文章,讲述了如何使用标准的Python模块和Twisted进行网络编程。
这个主意并不是很糟糕。实际上,如果你用Python写一个RESTful接口,然后用VB.NET来访问它,那真的是个不错的主意。以后你还可以从其他用Python、VB.NET或者其他语言写的应用程序中重用这个Python服务器。因为REST是一个标准,测试起来也很简单,人们甚至可以通过浏览器进行GET请求,这本身可能就很有用。
这里有一个Yahoo页面,提供了在VB.NET中进行REST GET、POST等操作的代码示例。
如果你觉得REST的开销太大,想要更轻量级的东西,请不要尝试自己发明协议。可以考虑使用Google的协议缓冲区,它也可以在VB.NET中使用。