0

我有一个使用相当昂贵的对象来创建的服务。我想提高从调用到调用的性能。

当我删除对象并运行负载测试时,例如每秒可以执行多少次调用,不同情况之间的性能差异很大。

情况1.我删除了昂贵的对象:每秒调用次数〜= 130。情况2.我正常使用它,对象:速率为每秒〜= 2。

我有一个托管在 IIS 2008 服务器上的 .NET WCF 服务。

我想知道是否有一种方法可以创建对象缓存/池并将这些对象交给服务的每次调用。

任何可能有助于这种情况的想法/评论?

4

2 回答 2

1

如果昂贵的部分是构建对象的状态,并且您只想限制创建该对象的次数,我建议使用持久服务。

Durable WCF 组件在调用之间和客户端之间保持其状态。每次调用方法时,它都会将其状态写入持久性存储(默认为 sql server 数据库)。问题是你必须在调用你的 Durable 组件的人之间传递一个上下文标记。这个令牌可以保存在文件或数据库或其他任何东西中。

这将允许您对组件进行调用,它可以创建其状态一次,然后您可以继续从其他客户端调用它,只要它们有权访问其上下文令牌。

由于每次客户端关闭时对象都会消失,因此内存中没有任何内容,但状态仍然存在。

这是一个教程

于 2010-01-28T22:45:10.490 回答
1

您可以在每个会话模式下运行 WCF 服务并使用单例模式创建对象,这样您每个会话只创建一次对象,而不是每次调用一次。

您还可以使用企业库缓存来缓存对象。

于 2010-01-28T20:41:53.383 回答