Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中处理客户机-服务器应用程序中的db并发? 我正在用C#WPF开发一个应用程序,它将具有客户机-服务器体系结构(客户机将执行产品销售计费)。我是这个领域的新手,我问这个问题是为了开始我的开发过程。 所以,我最终选择了MySQl、WCf和WPF。现在我有一个愚蠢的问题。我是否需要在我的应用程序中显式地处理DB并发性(如3个客户端同时插入数据),或者MySQl将在没有任何冲突的情况下处理此问题? 为了完成我的项目,我想,我将在WCf中创建一个服务,它将从客户端应用程序执行DB查询。您对提高我的应用程序性能有什么建议吗。_C#_Mysql_Wpf - Fatal编程技术网

如何在C#中处理客户机-服务器应用程序中的db并发? 我正在用C#WPF开发一个应用程序,它将具有客户机-服务器体系结构(客户机将执行产品销售计费)。我是这个领域的新手,我问这个问题是为了开始我的开发过程。 所以,我最终选择了MySQl、WCf和WPF。现在我有一个愚蠢的问题。我是否需要在我的应用程序中显式地处理DB并发性(如3个客户端同时插入数据),或者MySQl将在没有任何冲突的情况下处理此问题? 为了完成我的项目,我想,我将在WCf中创建一个服务,它将从客户端应用程序执行DB查询。您对提高我的应用程序性能有什么建议吗。

如何在C#中处理客户机-服务器应用程序中的db并发? 我正在用C#WPF开发一个应用程序,它将具有客户机-服务器体系结构(客户机将执行产品销售计费)。我是这个领域的新手,我问这个问题是为了开始我的开发过程。 所以,我最终选择了MySQl、WCf和WPF。现在我有一个愚蠢的问题。我是否需要在我的应用程序中显式地处理DB并发性(如3个客户端同时插入数据),或者MySQl将在没有任何冲突的情况下处理此问题? 为了完成我的项目,我想,我将在WCf中创建一个服务,它将从客户端应用程序执行DB查询。您对提高我的应用程序性能有什么建议吗。,c#,mysql,wpf,C#,Mysql,Wpf,有许多方法可以处理并发性,每种方法都有其优点和缺点 提供了一个很好的总体介绍 如果您希望分享更多关于并发性的需求: 你希望什么时候发生 多人试图编辑同一内容 数据 您希望用户多久编辑一次相同的数据 我很乐意给出更具体的建议。处理并发的方法有很多种,每种方法都有其优点和缺点 提供了一个很好的总体介绍 如果您希望分享更多关于并发性的需求: 你希望什么时候发生 多人试图编辑同一内容 数据 您希望用户多久编辑一次相同的数据 我很乐意提供更具体的建议 数据库服务器非常擅长处理多个更新 使用 数据库

有许多方法可以处理并发性,每种方法都有其优点和缺点

提供了一个很好的总体介绍

如果您希望分享更多关于并发性的需求:

  • 你希望什么时候发生 多人试图编辑同一内容 数据
  • 您希望用户多久编辑一次相同的数据

我很乐意给出更具体的建议。

处理并发的方法有很多种,每种方法都有其优点和缺点

提供了一个很好的总体介绍

如果您希望分享更多关于并发性的需求:

  • 你希望什么时候发生 多人试图编辑同一内容 数据
  • 您希望用户多久编辑一次相同的数据
我很乐意提供更具体的建议

  • 数据库服务器非常擅长处理多个更新
  • 使用
  • 数据库服务器非常擅长处理多个更新
  • 使用

  • 关于并发性的问题,应用程序的设计应该使到数据库的连接尽可能短。数据库上的每个操作都应该包括:打开连接、操作数据库、关闭连接而不是:打开连接、执行一系列可能与获取/更新/插入数据相关或不相关的工作,然后在“结束”时关闭连接

    现在,关于应用程序并发性,您将得到两个场景。在场景一(我称之为“last write wins”)中,最后写入给定行的任何连接都是存储的数据版本。如果Alice然后Bob同时写入同一行上的Name列,Bob的版本将是存储的版本。这是目前为止最简单的方法,但是如果您可能有很多人更新相同的数据,那么这可能会有问题

    另一种选择是“首次写入胜利”,也称为乐观并发。在这个场景中,第二个调用检查数据自上次检索以来是否没有更改,如果有更改,则回滚其事务。接下来会发生什么取决于您的应用程序。有些系统只是抛出一个错误,并要求用户重新输入其信息(放弃其原始更改)。这显然更容易实现。一些应用程序会告诉用户数据已更改,并提供一些与此不同的信息,并询问是否要覆盖此更改。这可能更复杂,具体取决于系统的体系结构


    更多信息,请参阅

    关于并发性的问题,您的应用程序应该设计为尽可能短地保持与数据库的连接打开。数据库上的每个操作都应该包括:打开连接、操作数据库、关闭连接而不是:打开连接、执行一系列可能与获取/更新/插入数据相关或不相关的工作,然后在“结束”时关闭连接

    现在,关于应用程序并发性,您将得到两个场景。在场景一(我称之为“last write wins”)中,最后写入给定行的任何连接都是存储的数据版本。如果Alice然后Bob同时写入同一行上的Name列,Bob的版本将是存储的版本。这是目前为止最简单的方法,但是如果您可能有很多人更新相同的数据,那么这可能会有问题

    另一种选择是“首次写入胜利”,也称为乐观并发。在这个场景中,第二个调用检查数据自上次检索以来是否没有更改,如果有更改,则回滚其事务。接下来会发生什么取决于您的应用程序。有些系统只是抛出一个错误,并要求用户重新输入其信息(放弃其原始更改)。这显然更容易实现。一些应用程序会告诉用户数据已更改,并提供一些与此不同的信息,并询问是否要覆盖此更改。这可能更复杂,具体取决于系统的体系结构


    更多信息,请参阅

    @Darin:1。是一个非常宽泛的陈述,没有考虑到具体的应用需求。你有理由吗?@Eric J.,具体的应用需求还没有在问题中表达出来。OP问MySQL是否会处理3个并发插入,答案是肯定的。至于第2点:如果用户A打开表单编辑数据,而用户B更改了用户A打开进行编辑的数据,那么用户A将保存其更改。。。会发生什么?这就是OP的要求。您是否通知用户A已进行了更改?您是否锁定该数据以进行更改,这样用户B就永远不会首先打开它进行更改?@Darin:1。是一个非常宽泛的陈述,没有考虑到具体的应用需求。你有理由吗?@Eric J.,具体的应用需求还没有在问题中表达出来。OP问MySQL是否会处理3个并发插入,答案是肯定的。至于第2点:如果用户A打开表单编辑数据,而用户B更改了用户A打开进行编辑的数据,那么用户A将保存其更改。。。会发生什么?那是什么