c# - 创建一个连接(对象)池——有什么库可以使用吗?

标签 c# connection-pooling

我们有一个第 3 方软件,它使用一堆内部中间件和服务来连接到外部数据库。通过这个 API,我只有一点关于它在联系 Oracle 数据库时使用的连接对象的信息。

更新:这不是连接到 Oracle 的池。这是处理大量统计数据的软件的对象/连接池,这些数据又与 Oracle 有自己的连接。我们需要池的原因是这个软件每秒可以访问 50-200 次,并且可能需要 20 多秒来实例化 Initiate 对象。

我想知道 .NET 是否有任何我可以继承/使用的类来帮助我构建比当前编写的更好的对象池系统。我自己编写没有问题,但如果我可以继承一个,我宁愿不重新发明轮子。

请注意,这几乎是对象池,但对象具有连接的能力。

更新: 一旦创建池,当前系统就会工作。它有一个工作线程,确保池是干净的和工作的。当应用程序长时间没有事件时,问题就出现了。当一个请求进来时,系统会寻找一个连接并且它们都被清理干净了(我相信是因为缓存不见了)。因此它会重新生成它们,但这可能需要 1 分钟以上的时间来完成 100 多个连接,并且由于这是通过 SOA 访问的,因此请求可能会超时。

最佳答案

您可以使用对象池设计模式实现您自己的模式: http://sourcemaking.com/design_patterns/object_pool

或者使用这个: C# Object Pooling Pattern implementation

关于c# - 创建一个连接(对象)池——有什么库可以使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210930/

相关文章:

c# - 如何防止其他人在他们的 C# 应用程序中使用我的非托管 DLL?

c# - 如何在不获取对象、更改对象和调用 SaveChanges 的情况下在 LINQ 中编写更新?

c# - C# 应该添加部分构造函数吗?

java - "Tomcat 7 JDBC Connection Pool"是否足以用于生产?它与 BoneCP 相比如何?

getConnection() 上的 java.util.NoSuchElementException

c# - Oracle 客户端的可选 sql 命令参数

c# - MVVM 设计 : Blocking MessageBox in ViewModel

java - JDBC 连接池 : Connection Reuse?

java - Websphere MQ 连接池

java - 使用 Jndi 的 oracle DB 的 Tomcat 连接池