Python 如何使用pyqt实现瘦客户端应用程序
以下是我想做的,我想知道一些在这个领域有经验的人是如何做到这一点的: 我从http服务器收到三个POST请求:Python 如何使用pyqt实现瘦客户端应用程序,python,qt,networking,pyqt,thin,Python,Qt,Networking,Pyqt,Thin,以下是我想做的,我想知道一些在这个领域有经验的人是如何做到这一点的: 我从http服务器收到三个POST请求: 小部件和布局 然后是应用程序逻辑(最小) 资料 或者最好将前两个或全部三个结合起来。我正在考虑使用pyqt。我想我可以加载.ui文件。我可以解析json数据。我只是认为通过网络传递代码在客户机上执行是相当危险的。如果有人可以劫持连接,或者可以更改应用程序设置以访问伪造的服务器,这是令人讨厌的 我想这样做,因为它让所有的客户都保持最新。它有点像一个webapp,但因为Qt而更简单。本质上
HTTPS
并在客户端验证服务器的证书:这将保护您免受所有您担心的问题的影响(如果有人可以对应用程序进行足够的编辑,以使其无法通过HTTPS证书验证,那么他们可以对应用程序进行足够的编辑,使其运行所需的任何代码,而无需从服务器发送该代码;-)
一旦您使用https,让服务器发送Python模块(如果您需要在客户机上支持多个Python版本,那么就以源代码的形式发送,否则字节码就可以了),然后客户机将其保存到磁盘并导入/重新加载,这样就可以了。您基本上是在做一个经典“插件体系结构”的变体,其中“插件”实际上是从服务器发送的(而不是在给定位置的磁盘上找到的)。使用web浏览器,它是一个有良好文档记录的系统,可以做您想要的一切。在浏览器中创建简单的图形应用程序也相对较快。我的推理示例如下:
- math环境将其构建为一个在浏览器中运行的应用程序,以及一个本地web服务器
- 有一个将Python编译成Javascript的项目。这是非常值得一试的
- 您可以尝试使用的,作为通过网络传输的代码的安全Python解释器
- 还有一个最简单的解决方案:只需通过网络发送Python模块,但对它们进行签名和/或加密。这是所有Linux发行版的工作方式。您将加密令牌存储在本地计算机上。服务器在发送代码之前使用匹配的令牌对代码进行签名/加密。应该能够做到这一点
Mako
非常接近Python,因此我推荐,jinja2
更类似于Django,但可以编译成Python代码,等等)——重新发明轮子是不值得的(除非你真正的目的是发现轮子是如何工作的,引用Atwood;-)但是,模板更多的是关于视图逻辑,而不是应用程序中使用的业务规则。至于删除问题,请确定您要防御的威胁模型--疯狂的用户?您的bug?&c。如上所述,我担心发生劫持等的可能性很小。我想采取与浏览器开发人员类似的立场(即不包括在内)不要让应用程序影响主机操作系统和FS。正如我向Eike提到的,我不想在浏览器中显示数据。应用程序的这一部分是完整的,工作正常。我想我会使用动态属性。我想我只需要弄清楚在加载.ui后如何读取它们。鉴于你是python大师,我可能应该询问更多细节ed在其他地方提出了问题。当然,请告诉我我的方法是否行不通,或者是否有更好的方法。浏览器是一个充满了陷阱和缓慢加载时间的雷区。我的应用程序的webapp版本适用于手机。我希望桌面有一个漂亮的界面。我不想在浏览器上浪费时间。我确实将应用程序的一部分实现为AJAX和酷炫的Dijits以及所有的jazz,它花费的时间大约是普通HTML表单的10倍。普通HTML表单用于手机,真正的桌面小部件。Javascript至少有一个工作沙盒机制。作为一个更简单的解决方案,您可以发送签名的Python代码,类似于Linux发行版。还有Pypy的沙盒解释器。谢谢你提供关于Pypy的信息。我会调查的。