我有一个使用相当昂贵的对象来创建的服务。我想提高从调用到调用的性能。
当我删除对象并运行负载测试时,例如每秒可以执行多少次调用,不同情况之间的性能差异很大。
情况1.我删除了昂贵的对象:每秒调用次数〜= 130。情况2.我正常使用它,对象:速率为每秒〜= 2。
我有一个托管在 IIS 2008 服务器上的 .NET WCF 服务。
我想知道是否有一种方法可以创建对象缓存/池并将这些对象交给服务的每次调用。
任何可能有助于这种情况的想法/评论?
我有一个使用相当昂贵的对象来创建的服务。我想提高从调用到调用的性能。
当我删除对象并运行负载测试时,例如每秒可以执行多少次调用,不同情况之间的性能差异很大。
情况1.我删除了昂贵的对象:每秒调用次数〜= 130。情况2.我正常使用它,对象:速率为每秒〜= 2。
我有一个托管在 IIS 2008 服务器上的 .NET WCF 服务。
我想知道是否有一种方法可以创建对象缓存/池并将这些对象交给服务的每次调用。
任何可能有助于这种情况的想法/评论?
如果昂贵的部分是构建对象的状态,并且您只想限制创建该对象的次数,我建议使用持久服务。
Durable WCF 组件在调用之间和客户端之间保持其状态。每次调用方法时,它都会将其状态写入持久性存储(默认为 sql server 数据库)。问题是你必须在调用你的 Durable 组件的人之间传递一个上下文标记。这个令牌可以保存在文件或数据库或其他任何东西中。
这将允许您对组件进行调用,它可以创建其状态一次,然后您可以继续从其他客户端调用它,只要它们有权访问其上下文令牌。
由于每次客户端关闭时对象都会消失,因此内存中没有任何内容,但状态仍然存在。
这是一个教程。
您可以在每个会话模式下运行 WCF 服务并使用单例模式创建对象,这样您每个会话只创建一次对象,而不是每次调用一次。
您还可以使用企业库缓存来缓存对象。