Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 具有WCF(缓存)的后台工作进程_.net_Wcf_Web Services_Replication_Software Design - Fatal编程技术网

.net 具有WCF(缓存)的后台工作进程

.net 具有WCF(缓存)的后台工作进程,.net,wcf,web-services,replication,software-design,.net,Wcf,Web Services,Replication,Software Design,我的任务是构建一个流程,以补偿LDAP系统上的复制延迟。目前,有一个写服务器和4个读服务器。将条目写入写入服务器后,在将条目复制到读取服务器之前,系统上可能会有长达4秒的延迟。因此,如果我调用更新记录的服务“A”,然后立即点击应该读取该记录的服务“B”,则数据将过时 为了解决这个问题,我计划构建一个缓存web服务,这样就没有应用程序直接与数据库交互,而是通过缓存服务。该服务将所有创建、更新和删除存储在缓存中(可能是列表)。CRUD-R条目需要在缓存中保留至少四秒钟。然后,当服务“B”尝试读取时,

我的任务是构建一个流程,以补偿LDAP系统上的复制延迟。目前,有一个写服务器和4个读服务器。将条目写入写入服务器后,在将条目复制到读取服务器之前,系统上可能会有长达4秒的延迟。因此,如果我调用更新记录的服务“A”,然后立即点击应该读取该记录的服务“B”,则数据将过时

为了解决这个问题,我计划构建一个缓存web服务,这样就没有应用程序直接与数据库交互,而是通过缓存服务。该服务将所有创建、更新和删除存储在缓存中(可能是
列表
)。CRUD-R条目需要在缓存中保留至少四秒钟。然后,当服务“B”尝试读取时,缓存服务将在对数据库执行读取操作之前检查缓存

所以,我的问题分为两部分。1) 这是一个可行的解决方案吗?如果不是,你看到了什么问题?2) 如何对WCF服务中的缓存进行维护。换句话说,有没有一种方法可以启动后台工作线程,从缓存中清除4秒前的条目?

关于#1,我认为这是可行的,尽管生成自己的缓存层可能有自己的困难和陷阱。在我脑海中,除了将所有负载放在一个缓存服务器上(与4个可以处理请求负载的分布式LDAP服务器相反),我想不出任何其他事情

关于#2,我建议您查看,我相信它具有您需要的所有必要功能,包括基于时间、持续时间等的清除

为了解决这个问题,我计划构建一个缓存web服务,这样就没有应用程序直接与数据库交互,而是通过缓存服务

听起来对我来说是个正确的解决方案

.NET包含多个缓存库,使您可以轻松地使用这些库。以下是我的最爱:

换句话说,有没有一种方法可以启动后台工作线程,从缓存中清除4秒前的条目

你不需要。将项目添加到缓存时,只需将expirationTime设置为(现在+4秒)

但你真的不需要过期时间。如果这是更改值的唯一方法,那么它永远不会过期。

谢谢。#1的解决方案将不起作用,因为这些相同的LDAP服务器既用于存储客户数据(名字、姓氏等),也用于身份验证(LDAP绑定)。单个服务器将无法处理来自所有正在进行身份验证的用户的负载。然而,在考虑您的声明时,您让我找到了一个更好的解决方案:将客户数据与身份验证系统分离。