【问题标题】:State considerations when converting a python desktop application into a web app? [closed]将 python 桌面应用程序转换为 Web 应用程序时的状态注意事项? [关闭]
【发布时间】:2014-08-22 10:35:58
【问题描述】:

我对将桌面应用程序转换为 Web 应用程序时应考虑哪些因素感到困惑。我们有一个用 Python 编写的桌面应用程序,它使用用于 GUI 的 wxPython 库,它是一个非常传统的应用程序,它设置主窗口并调用 app.Mainloop() 方法来维持 GUI 并响应事件。应用程序本身是一个配置实用程序,它只接受文件并允许用户对其进行配置。自然,程序会跟踪所做的所有更改并根据这些更改响应事件。

我打算使用托管在 Apache 服务器上的 Django 框架将这个实用程序作为大型应用程序的一部分提供,并希望许多用户同时使用它。一旦我按预期删除了app.MainLoop() 指令,运行应用程序只需通过代码一次并退出。这显然不是我需要的,应用程序需要记住状态。

到目前为止,我已经开始从应用程序的核心中识别和分离所有 GUI 代码,以便我可以有效地重用核心,并决定使用 jQuery 等框架在 JavaScript 中编写 UI 来处理 GUI 事件等。存储状态的两个明显选项是sessionsdatabases,但在形成这一切将如何工作的大图时我有点卡住了。就 Django 视图而言,请求之间会发生什么?如果有人能对整个工作流程有所了解,我将不胜感激。

谢谢。

【问题讨论】:

  • 对于 SO 来说,这个话题实在是太宽泛了。无论如何:您似乎对 HTTP 协议以及 Web 应用程序与传统 GUI 应用程序的区别没有清晰的了解。为了解决您的最后一个问题(“就 Django 视图而言,请求之间会发生什么”),答案很简单:绝对没有,服务器只会等待下一个请求。

标签: python django apache web-applications desktop-application


【解决方案1】:

这个问题有点含糊:一些细节,甚至一些代码,会有所帮助。

将其作为桌面应用程序运行与在网络上运行它有两个不同的区别。缺乏状态是一个问题,但似乎更显着的差异是每个用户的配置。您需要某种方式为每个用户存储该配置。

你把它放在哪里取决于你希望它有多持久:会话非常适合需要在实际会话中持久化的东西,即用户一次性积极使用应用程序的时间,但不要'不一定需要持久化,或者如果用户从新机器登录。否则,将其显式存储在附加到用户记录的数据库中是一个不错的方法。

就“请求之间会发生什么”而言,布鲁诺指出的答案是“什么都没有”。每个请求实际上都是一个空白状态:保持状态的唯一方法是使用由会话框架抽象的 cookie。您绝对不想做的是尝试在您的应用程序中保留任何类型的全局或模块级别的每个用户状态,因为这是行不通的:任何状态实际上都是全局的,因此适用于所有用户,因此显然不是你想要的。

【讨论】:

  • 感谢您的回答,它确实帮助我清除了一些迷雾。 “会话”绝对听起来像我正在寻找的......
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2012-09-10
  • 2011-10-25
  • 2019-07-26
  • 1970-01-01
相关资源
最近更新 更多