相关疑难解决方法(0)

C#Object Pooling Pattern实现

有没有人有很好的资源来实现Sql连接池静脉中有限资源的共享对象池策略?(即完全实现它是线程安全的).

要跟进@Aaronaught请求澄清,池的使用将用于对外部服务的负载平衡请求.把它放在一个可能更容易立即理解的场景中,而不是直接的场景.我有一个会话对象,其功能ISession与NHibernate中的对象类似.每个唯一会话管理它与数据库的连接.目前我有一个长时间运行的会话对象,我遇到的问题是我的服务提供商限制我对这个单独会话的使用.

由于他们缺乏将单个会话视为长期服务帐户的期望,他们显然将其视为正在锤击其服务的客户.这让我想到了我的问题,而不是只有一个单独的会话,我会创建一个不同会话池,并将请求分成多个会话的服务,而不是像我以前那样创建一个单一的焦点.

希望该背景提供一些价值,但直接回答您的一些问题:

问:创建的对象是否昂贵?
答:没有对象是有限资源的池

问:他们会被频繁获得/释放吗?
答:是的,可以再次考虑NHibernate ISessions,其中通常在每个页面请求的持续时间内获取和释放1.

问:简单的先来先服务是否足够,或者你需要更聪明的东西,即能防止饥饿吗?
答:一个简单的循环类型分发就足够了,饥饿我认为你的意思是,如果没有可用的会话,呼叫者被阻塞等待发布.这不是真正适用的,因为会话可以由不同的呼叫者共享.我的目标是在多个会话中分配使用情况,而不是单个会话.

我认为这可能与对象池的正常使用有所不同,这就是为什么我最初将这部分留下来并计划仅仅为了调整模式以允许共享对象而不是允许饥饿情况发生.

问:优先事项,懒惰与急切加载等问题如何?
答:没有涉及优先级,为简单起见,假设我将在创建池本身时创建可用对象池.

c# design-patterns pooling

160
推荐指数
4
解决办法
7万
查看次数

标签 统计

c# ×1

design-patterns ×1

pooling ×1