Windows服务可以访问网页中的缓存对象吗?

时间:2009-10-14 00:37:11

标签: c# asp.net-mvc caching windows-services

我创建了一个Windows服务,我希望它能够访问Web缓存。我已经在web缓存中存储了一个数据表,我希望我的Windows服务能够访问和处理它。这可能吗?

3 个答案:

答案 0 :(得分:1)

不直接。您的Windows服务作为与Web应用程序运行的应用程序池分开的进程运行。您需要在进程间通信中使用某种形式。您可能还想考虑最终是否需要在与Web应用程序不同的服务器上部署Windows服务的可能性。

您可以通过Web应用程序公开您的服务调用的Web服务,以按照jro建议访问/更新缓存的数据。或者,您可以使用SQL Server存储数据和SQL Notification Services,以警告Windows服务数据已更改。这样可以防止您不得不从Windows服务中连续轮询Web服务。另一种选择是从Windows服务公开WCF端点,您可以从Web应用程序调用该端点来传递数据。

选择模式实际上取决于您的要求 - 尤其是通信的哪一端将启动更新。

答案 1 :(得分:1)

为什么不看看memcached for .NET?它是一个分布式缓存系统,您的网站和Windows服务都可以调用它。 CodeProject上有一个例子。

答案 2 :(得分:0)

访问ASP.Net的运行时缓存需要访问w3wp进程。我不确定特定于w3wp进程的对象的跨进程封送的限制。

根据您“处理”缓存条目时的需要,请考虑向您的网站添加简单的Web服务并使用凭据保护它。然后,您可以在服务调用的后台访问缓存对象,并代表您的Windows服务对其执行操作。