【问题标题】:Difference between web and desktop applications in database accessWeb 和桌面应用程序在数据库访问方面的区别
【发布时间】:2016-09-30 23:24:19
【问题描述】:

我有一点理论问题。

创建 Web 应用程序时,桌面应用程序与数据库的有效连接和活动连接有所不同。所以我很好奇是否有一些解决方案可以提供更多类似桌面的数据库访问,例如来自客户端(Web 浏览器)的异步请求的事务处理?

编辑: 所以我发现,可以有一个来自客户端的异步请求的事务过程。有没有可以在网络应用程序中提供的解决方案?

例如,我有 assynchronou ajax 调用,它由多个操作组成,我想将它们作为事务处理。如果一切正常,则操作将全部完成。但如果其中一个失败,只需回滚它。就像它在数据库中一样。有可能吗?

edit2: 可能我错了,问题不在于 ajax,而在于整个 Web 应用程序,但我认为没有办法从 Web 客户端发出异步请求。

【问题讨论】:

  • 它们的行为完全相同。我的意思是,确切地说。完全准确。即使是异步的东西。您的控制器方法可以返回一个 Task 并异步等待所有内容。
  • @Will 很抱歉,但我不确定。创建桌面应用程序时,您很有可能与数据库的连接正常。更少的延迟,没有网络应用程序中的互联网错误问题。还有数据库的质量?我不确定我是否可以将 mysql 与 e.g. 进行比较。微软的?在可靠性方面?或者类似的东西,如果你知道我的想法
  • 那里。是。编号差异。
  • @Will 对不起我可能很傻,但是数据库事务呢?让数据库处于一致状态?如果我从 ajax 触发事务,并且有错误需要我以某种方式处理吗?还是 ajax 足够聪明? (对不起我这么悲观)
  • 那里。是。没有。区别。 在 ajax 调用期间如何处理异常取决于您。如果您放开它们,调用将返回 500 错误。如果这不适合您,请抓住并返回其他东西。

标签: asynchronous web-applications transactions desktop-application


【解决方案1】:

事务需要持续连接到数据库。要使其与 Web 应用程序一起工作,您需要一个平台,该平台允许应用程序独立于客户端请求连续运行。 Java servlet 是最合适的,php 是禁忌。所以我假设你会使用 java servlet。

在 java servlet 中,您可以创建一个 db 事务,为其创建一个 id,然后将它们存储在静态变量或提供的应用程序范围对象上下文中。然后,将 id 返回给客户端。

当客户端要发送另一个请求时,让它发送 id。然后应用程序可以根据 id 定位事务变量。只要应用程序没有在两个请求之间重新启动,事务就仍然存在并处于活动状态。

因为Web应用程序不知道用户何时离开应用程序,所以您必须创建一个机制来定期检查事务,如果用户离开了指定时间段,则将其回滚。

【讨论】:

    【解决方案2】:

    数据库不知道谁在身份验证之外连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多