Web和windows窗体应用程序使用相同的数据库问题

本文关键字:数据库 问题 windows 窗体 应用程序 Web | 更新日期: 2023-09-27 18:28:55

我们有一个web应用程序和一个windows窗体应用程序。web应用程序包含用于下载此表单应用程序的下载链接。

此表单应用程序将检查客户端机器权限和驱动器空间等,并使用一些Web服务调用将值更新到全局数据库。

因此,web应用程序将不断检查全局数据库中的状态,即表单应用程序完成了多少检查。

因此,一旦出现要下载的表单应用程序的下载弹出窗口,web应用程序就会开始检查状态。但是,如果用户取消下载或关闭表单应用程序,那么在这些情况下,web应用程序如何停止检查状态。

但在我的情况下,即使客户端取消下载或关闭表单应用程序,web应用程序也会始终检查状态更改。那么如何避免这种情况呢?

Web和windows窗体应用程序使用相同的数据库问题

我认为超时是您唯一真正的选择。基本上,web端在放弃之前只会检查一段时间。数据库中的状态表应包含"上次更新时间戳"字段。如果状态不是"完成",并且当前时间比该时间戳大X秒,则Web服务器认为进程已超时。

您可以尝试将一些东西(如开关)作为记录的一部分或数据库中的一些东西,所以下次您的web应用程序尝试读取时,比如说位字段,它会知道应该停止检查。您可以将该位字段控制为ON&通过您的表格申请关闭。然后,你可以在你的网络应用程序中设置一个轮询机制,在根据位字段定时之前每隔一段时间检查数据库,或者如果没有这样做,那么在一段时间后。

已经说过,你的表单应用程序需要能够调用数据库所在的外部世界并更新它,它可以通过多种方式完成,web服务调用、http等。。。

更新:

我很抱歉没有及时回复,但你明白我说的话吗?如果你的winforms应用程序可以调用你的web服务,那么它可以告诉它将一个标志字段存储在数据库中的某个位置,比如你的web应用程序正在轮询和检查的记录,然后通过设置该标志字段,你的web应用程序就会知道停止对该记录、项目执行任何操作。

正如你提到的,你担心:

  • 用户在下载时单击"取消":

在这种情况下,除非用户第一次下载并运行您的获胜表格应用程序,否则您不会通过您的网络应用程序设置对您的记录的检查,因此不要在下载获胜表格应用时开始检查,而是在用户第一次打开它时开始检查一次,在启动winforms应用程序时,您可以通过调用web服务从winforms程序中设置flag字段来完成此操作。您将需要一个轮询机制,每隔一段时间,就像一个服务一样。

  • 当用户关闭winforms应用程序时

在这种情况下,您将在终止/关闭winforms应用程序时调用您的web服务,并设置标志字段以不再检查该记录、项目。

在任何情况下,你都需要轮询,因为我认为你会有很多用户,因此你需要监控数据库中来自winforms应用程序的传入消息。此外,请注意,由于一些用户处于防火墙后面,他们的机器和专用网络上的安全权限有限,您的winforms应用程序可能无法始终调用您的web服务。

希望能有所帮助。