0

我有一个桌面 python 应用程序,其数据后端是 MySQL 数据库,但其以前的数据库是网络访问的 xml 文件。当它由 xml 驱动时,我在应用程序启动时产生了一个线程,该线程将简单地检查 xml 文件的更改,并且每当修改日期发生更改时(由于任何用户更新它),应用程序都会自行刷新,以便多个用户可以在他们开展业务时使用并查看应用程序的变化。

现在该程序已经成熟,并且正在尝试在线展示,因此它可以在任何地方使用。Xml 不在窗口中,我使用 MySQL 和 SQLAlchemy 作为数据库访问方法。然而,情节变厚了,因为信息不再存储在一个 xml 文件中,而是被拆分为 SQL 数据库中的多个表。这使某种“最后修改”表值或结构的想法复杂化。因此,问题是,您如何通知用户数据已更改并且应用程序需要刷新?以下是我的一些想法:

  1. 每个表都需要一个最后修改的列(这似乎是有史以来最糟糕的选择)
  2. 一个单独的表,包含一些最后修改的列?
  3. 通过服务器的某种推送通知?
  4. 应该提到的是,我有能力在托管 SQL db 的同一服务器上运行一个非常小的 python 脚本,也许应用程序可以连接到并且(通过套接字?)它可以向所有连接的客户端传递信息和从所有连接的客户端传递信息?

一些额外的信息:

  • 来回传递的信息将是相当低的带宽。主要是具有某些图像潜力的文本(很少超过 50k)。
  • 目前的客户数量很少,在几十个。但该项目可能会被一些客户数量可能达到数百家的大公司接手。即使在可预见的未来,带宽也不应该成为问题。

无论如何,对我来说有点新的领域,所以你会怎么做?提前致谢!

4

1 回答 1

0

As I understand this is not a client-server application, but rather an application that has a common remote storage.
One idea would be to change to web services (this would solve most of your problems on the long run).
Another idea (if you don't want to switch to web) is to refresh periodically the data in your interface by using a timer.
Another way (and more complicated) would be to have a server that receives all the updates, stores them in the database and then pushes the changes to the other connected clients.
The first 2 ideas you mentioned will have maintenance, scalability and design uglyness issues.
The last 2 are a lot better in my opinion, but I still stick to web services as being the best.

于 2012-04-10T15:19:30.107 回答