2010-01-04 53 views

回答

4

这真的取决于你使用的数据访问机制很多。如果你有一个非常可伸缩的数据访问和大量的线程,使用某种形式的线程静态数据访问可能是有利的。

如果您没有可扩展的数据访问权限,您的提供程序不支持每个进程的多个线程,或者您不需要此时的可伸缩性,那么使用具有适当同步的单例更简单,更易于实现。

对于大多数商务风格的应用程序,我个人认为单的做法是更容易维护,可能会更好 - 如果没有其他原因,而不是它是非常非常容易有效地进行测试。拥有多个数据访问线程可能不是必需的,因为数据访问可能不会成为影响可用性的瓶颈(如果设计正确,并且批量请求适当)。

+0

吾道的,实际上是连接到两个来源:通过RPC的SimpleDB和PHP API。我的猜测是我应该使用DAO每线程约100个线程来避免瓶颈问题。在这种情况下你有没有看到任何明显的原因? – pondermatic 2010-01-05 00:12:18

+0

可能更好地使DAO成为单例,并且在内部只是异步工作。然后可以根据需要使用ThreadPool进行扩展......这对于PHP API尤其如此,因为Web请求非常异步地工作,并且大多数Web框架对此有很好的支持...... – 2010-01-05 00:41:59

0

使用最适合你的应用程序架构,办法,除非:

1)数据访问对象是昂贵的创建,在这种情况下,你应该向着一个线程安全的单瘦。

2)你的对象保持可变的状态,如Active Record pattern。 (不可变的DAO配置状态,如超时阈值,不计。)