gpt4 book ai didi

wcf - 在 WCF 服务中存储应用程序级数据

转载 作者:行者123 更新时间:2023-12-04 05:08:14 25 4
gpt4 key购买 nike

我正在尝试创建我的第一个 WCF 服务,并且正在尝试存储应用程序数据。

我已经创建了我的 ServiceContracts 和 DataContracts,并且服务正在运行。

我现在想从数据库中读取一些配置数据并将这些数据存储在应用程序范围内,以便只要服务处于事件状态,这些数据就可用于任何后续请求。这样我就不必在每次处理请求时都连接到数据库。我不想将数据存储在配置文件中,数据已经存在于所述数据库中,我不想复制它。

我有以下实现和工作。

注 1:我删除了数据库代码以保持示例简单。

注 2:MemoryCache 类存在于 System.Runtime.Caching 命名空间中。

private void LoadConfigData()
{
if (!MemoryCache.Default.Contains("ConfigData"))
{
CacheItemPolicy cachePolicy = new CacheItemPolicy() {
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(5) };

MemoryCache.Default.Add(
"ConfigData",
"ImagineThereIsDBDataHere",
cachePolicy);
}
}

这是正确的使用方法吗?

这篇文章提到了使用 Application 类和 HttpContext:

Read Global Application property from WCF Service

但是我目前在我的项目中没有这些可用。

此线程是否安全,如果对我的服务发出多个请求并且缓存为空,我是否会遇到竞争条件?

这也是我的第一个问题,所以如果我遗漏了任何细节,请告诉我,我会更新。

谢谢。

最佳答案

您可以使用 MemoryCache对象的 AddOrGetExisting方法(或 this 覆盖)以线程安全的方式完成此操作。

不要担心 Application 或 HttpContext 类。它们位于 System.Web 命名空间中,不建议在 WCF 中使用它们。你已经在做正确的事情了。

关于wcf - 在 WCF 服务中存储应用程序级数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229790/

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