【问题标题】:Web and windows forms application using same db issues使用相同数据库问题的 Web 和 Windows 窗体应用程序
【发布时间】:2012-04-09 15:20:43
【问题描述】:

我们有一个 Web 应用程序和一个 Windows 窗体应用程序。 Web 应用程序包含一个下载链接,用于下载此表单应用程序。

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

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

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

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

【问题讨论】:

    标签: c# asp.net winforms web-applications


    【解决方案1】:

    您可以尝试将开关之类的东西作为记录的一部分或数据库中的某些东西,因此下次您的网络应用程序尝试读取时,可以说位字段它会知道它应该停止检查。您可以通过表单应用程序将此位字段控制为 ON 和 OFF。然后,您的 Web 应用程序可以设置一个轮询机制,在根据位字段定时自动关闭之前,每隔一段时间检查一次数据库,或者如果一段时间后没有完成。

    话虽如此,您的表单应用程序需要能够调用您的数据库所在的外部世界并对其进行更新,它可以通过多种方式完成,Web 服务调用、http 等......

    更新:

    对于延迟回复我深表歉意,但您明白我说的话吗?如果您的 winforms 应用程序可以调用您的 Web 服务,那么它可以告诉它在某个位置存储一个标志字段,例如数据库中的一条记录,例如您的 Web 应用程序正在轮询和检查,然后通过设置该标志字段,您的 Web 应用程序将知道停止对该记录、项目做任何事情。

    正如你所说,你担心的是:

    • 用户在下载时点击取消:

    在这种情况下,除非用户第一次下载并运行您的 win-forms 应用程序,否则您不会设置通过 web 应用程序检查您的记录,所以不要在下载 win-forms 应用程序时开始检查,但是在用户第一次打开它时开始检查一次,您可以在启动 winforms 应用程序时通过调用您的 web 服务从您的 winforms 应用程序设置标志字段来执行此操作。您将需要在此之上经常使用轮询机制,例如服务。

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

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

    在任何情况下您都需要轮询,因为我认为您将拥有很多用户,因此您需要监控数据库以获取来自您的 winforms 应用程序的传入消息。另请注意,由于某些用户位于防火墙后面,他们的计算机和专用网络上的安全权限有限,并且您的 winforms 应用程序可能无法始终调用您的网络服务。

    希望有所帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        相关资源
        最近更新 更多