代码之家  ›  专栏  ›  技术社区  ›  d-_-b

如何用pyqt实现瘦客户端应用

  •  0
  • d-_-b  · 技术社区  · 15 年前

    以下是我想做的,我想知道一些在这个领域有经验的人是如何做到这一点的:

    我从http服务器收到三个POST请求:

    1. 小部件和布局
    2. 数据

    或者最好把前两个或全部三个结合起来。我在考虑使用pyqt。我想我可以加载.ui文件。我可以解析json数据。我只是认为通过网络传递要在客户端上执行的代码是相当危险的。如果有人可以劫持连接,或者可以更改应用程序设置来访问一个伪造的服务器,那就太糟糕了。

    我想这样做是因为它能让所有的客户都了解最新情况。它有点像一个webapp,但是因为Qt而更简单。本质上,“瘦”应用程序只是一个从服务器加载数据的最小编译python文件。

    另外,我不喜欢Qt或python。不过,我确实喜欢这个概念。我真的不想使用Java服务器或客户端。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alex Martelli    15 年前

    您希望将“应用程序逻辑”从服务器发送到客户机而不发送“代码”,这本身就是自相矛盾的,尽管您可能还没有意识到这一点——即使您发送的“逻辑”是以某种简化的特定“语言”(您甚至不认为它是一种语言;-)表示的,但您的Python代码将完全符合您的意图和目的 口译 语言,从而执行 代码

    为了避免劫持和其他伎俩,相反,使用 HTTPS 并在客户端验证服务器的证书:这将保护您免受您所担心的所有问题的影响(如果有人能够对应用程序进行足够的编辑,从而使其无法通过HTTPS证书验证,那么他们可以对应用程序进行足够的编辑,使其运行所需的任何代码,而无需从服务器发送该代码;-)。

    一旦您使用了https,让服务器发送Python模块(如果您需要在客户机上支持多个Python版本,则以源代码的形式发送,否则字节码就可以了),然后客户机将它们保存到磁盘并导入/重新加载,就可以了。基本上,您将执行经典“插件体系结构”的一个变体,其中“插件”实际上是从服务器发送的(而不是在给定位置的磁盘上找到)。

        2
  •  1
  •   Eike    15 年前

    使用一个网络浏览器它是一个很好的文件系统,做你想做的一切。在浏览器中创建简单的图形应用程序也相对较快。我的推理示例:

    编辑:

    • 你可以试试 PyPy sandbox interpreter

    • 然后是最简单的解决方案:只需通过网络发送Python模块,但对它们进行签名和/或加密。这是所有Linux发行版的工作方式。在本地计算机上存储加密令牌。服务器在发送代码之前使用匹配的令牌对代码进行签名/加密。 GPG 应该能做到。