Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Design patterns 应用程序设计:对数据库的单次点击与多次点击_Design Patterns_Oop - Fatal编程技术网

Design patterns 应用程序设计:对数据库的单次点击与多次点击

Design patterns 应用程序设计:对数据库的单次点击与多次点击,design-patterns,oop,Design Patterns,Oop,我正在构建一个服务,它根据接收到的请求类型执行一组配置的活动。每个活动都涉及到数据库和检索/更新某种信息。每个活动的逻辑都可以通用化,并在不同的请求类型中重复使用。在为请求提供服务的过程中,这些活动可能需要参与事务 我正在考虑的一个选择是让每个活动维护自己对DAL/数据库的访问。这将活动完全封装到一个独立的可重用部分中,但是为一个请求多次访问数据库似乎不是一个可行的选择。我也不知道如何在多个活动中轻松实现事务的概念 第二个选项是将所有活动封装到一个大活动中,并一次性访问数据库。但这不允许针对不同

我正在构建一个服务,它根据接收到的请求类型执行一组配置的活动。每个活动都涉及到数据库和检索/更新某种信息。每个活动的逻辑都可以通用化,并在不同的请求类型中重复使用。在为请求提供服务的过程中,这些活动可能需要参与事务

我正在考虑的一个选择是让每个活动维护自己对DAL/数据库的访问。这将活动完全封装到一个独立的可重用部分中,但是为一个请求多次访问数据库似乎不是一个可行的选择。我也不知道如何在多个活动中轻松实现事务的概念

第二个选项是将所有活动封装到一个大活动中,并一次性访问数据库。但这不允许针对不同的请求重用和配置这些活动


有人对解决我的问题的最佳方法有什么建议和意见吗?谢谢您的帮助。

没有细节的设计恐怕有点难选。我的第一个选择是遵循第一个选择;这听起来是一个更简单的方法。第二个听起来会更好,但我的后脑勺里有一个声音在低语过早的优化和邪恶

这实际上取决于这项服务的使用量。它会承受很大的负荷吗?这台服务器运行在一台功能强大的机器上,运行的只是一些东西,还是一个虚拟机和几个其他虚拟机,每个虚拟机运行几个服务

如果你想安全起见,我建议你做一个原型。只需构建一个使用数据库的小程序,就像应用程序在您描述的第一个场景中使用数据库一样,并让它运行。没什么特别的,只是让它将随机数据输入和输出数据库。别忘了在那里存储大量数据,看看它是如何处理的。如果看起来没问题,就选择你的第一个选择。如果没有,你可以做一些更详细的事情


另一方面,了解您选择的数据库。你不是第一个试图给它施加沉重负担的人;大多数数据库都提供了处理此类问题的机制。

我担心选择没有细节的设计有点困难。我的第一个选择是遵循第一个选择;这听起来是一个更简单的方法。第二个听起来会更好,但我的后脑勺里有一个声音在低语过早的优化和邪恶

这实际上取决于这项服务的使用量。它会承受很大的负荷吗?这台服务器运行在一台功能强大的机器上,运行的只是一些东西,还是一个虚拟机和几个其他虚拟机,每个虚拟机运行几个服务

如果你想安全起见,我建议你做一个原型。只需构建一个使用数据库的小程序,就像应用程序在您描述的第一个场景中使用数据库一样,并让它运行。没什么特别的,只是让它将随机数据输入和输出数据库。别忘了在那里存储大量数据,看看它是如何处理的。如果看起来没问题,就选择你的第一个选择。如果没有,你可以做一些更详细的事情


另一方面,了解您选择的数据库。你不是第一个试图给它施加沉重负担的人;大多数数据库提供了应对这种事情的机制。

< P>你可能需要考虑。您可以将多个消息处理程序串在一起,从而获得所需的管道。它还可以在一个事务中运行所有处理程序,满足您的事务需求。由于每个管道都是自治的,所以您可以全天扩展。唯一的警告是,如果要维护该模型,必须执行相关的请求/响应(NSB也支持这一点)。

< P>您可能需要考虑。您可以将多个消息处理程序串在一起,从而获得所需的管道。它还可以在一个事务中运行所有处理程序,满足您的事务需求。由于每个管道都是自治的,所以您可以全天扩展。唯一需要注意的是,如果要维护该模型,您必须执行相关的请求/响应(NSB也支持该模型)。

将数据访问实现从业务逻辑中抽象出来,这样您就不会与之绑定;如果您在.Net中,通常会使用接口

当你这样做的时候,你需要设计界面——根据工作的逻辑部分进行设计:思考,和


定义了接口之后,您可以在任何时候构建任意数量的实现,并且可以随时交换它们;您也没有理由不能同时使用这两种方法,并且有一些逻辑控制执行,以便在适当的时候调用uber one,或者在其他时候调用另一种实现。

从业务逻辑中抽象出数据访问实现,这样您就不必拘泥于它;如果您在.Net中,通常会使用接口

当你这样做的时候,你需要设计界面——根据工作的逻辑部分进行设计:思考,和


定义了接口之后,您可以在任何时候构建任意数量的实现,并且可以随时交换它们;您也没有理由不能同时使用这两个选项,并且有一些逻辑控制执行,以便在适当的时候调用uber one,或者在其他时候调用另一个实现。

决策可能由事务需求决定。如果所有活动都需要查看数据库的相同快照,那么它们就不再是真正独立的了。所以这些活动并不是完全独立的

在这两种情况下,对数据库的请求数是多少?也就是说,一个典型的