gpt4 book ai didi

c# - wcf中的单例模式

转载 作者:行者123 更新时间:2023-11-30 16:22:47 26 4
gpt4 key购买 nike

是否建议在 wcf 应用程序中使用单例模式?我有 ServiceResponse 类,它将处理响应和错误细节以及 wcf 当前请求的几乎所有细节。当我第一次访问该服务时,可以说我在 ServiceResponse 类中有 5 个属性,并且在 errordetail 属性中填充了各自的值和一些错误详细信息。对于下一次点击,假设我没有得到任何错误详细信息,并且所有其他 4 个属性都已填满。

但这里的问题是,errordetail 属性仍然填充了以前的值,我假设即使在后续点击之后也不会创建单例对象。因此只有更改的值会受到影响,但未触及的属性仍保留后续命中的先前值。

是因为 appdomain 永远不会卸载以释放对象以允许为另一个 imm 创建下一个 sinleton 对象。要求?否则如何在 wcf 中实现单例模式。感谢您的帮助。

最佳答案

单例模式意味着对象只被实例化一次,并且在 AppDomain 的整个生命周期中都存在。您不应将特定于给定请求的数据存储在静态对象中,因为它们将共享相同的数据,而这可能不是您要查找的数据。

在 WCF 应用程序中使用静态对象是否是一个好主意是一个完全取决于您的场景以及您需要在那里存储什么的问题。由于 WCF 是一个多线程环境,多个线程可以在其中访问此共享数据,因此您必须特别注意通过使用适当的同步机制确保此数据是线程安全的。

is it because the appdomain never get unloaded to release the object to allow the next sinleton object to get created for the other imm. request?

当您的应用程序启动时,会创建一个 AppDomain。不要期望在每个请求上获得不同的 AppDomain。在应用程序被 IIS 回收之前,所有请求都将从同一个 AppDomain 提供服务。

关于c# - wcf中的单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com