例如,假设您在ASP.NET Web应用程序中缓存不经常更新的数据。您有另一个在应用程序外部运行的进程,它偶尔会更新此数据,当您执行此操作时,您希望立即清除缓存的数据,以便下一个请求立即获取新数据。
缓存服务在您的Web应用程序的上下文中运行,而不是在外部运行 - 调用Web应用程序以使其更新缓存的好方法是什么?
当然,您可以将名为ClearTheCache的页面或Web服务一起破解。然后,您可以通过其他流程调用此方法。当然,您不希望此过程在外部可用或在您的Web应用程序上可见,因此也许您可以检查对此页面的传入请求是否正在调用localhost,如果不是则抛出404.这可以接受吗?这可能是欺骗性的(例如,如果你使用了HttpApplication.Request.Url.Host)?
我可以想出许多不同的方法来解决这个问题,主要围绕创建页面或Web服务并以某种方式限制对它的请求,但我不确定是否有任何特别优雅。我也不喜欢网络应用程序定期轮询到其他服务以检查是否需要执行某些操作的想法,我真的很喜欢PUSH解决方案。
注意:缓存方案只是一个示例,如果需要,我可以在此处使用进程外缓存。问题实际上是集中于在外部但在受控环境中的Web应用程序内调用代码。
答案 0 :(得分:2)
不要担心限制到localhost,您可能希望将来从其他服务器推送。而是在两者之间共享密钥(不对称或对称并不重要),让PUSH服务加密数据块(例如控制数据)并让接收器解密。如果块正确解密并且数据可读,您可以安全地假设只有应该调用您的服务,并且您可以执行所需的操作!不是最好的解决方案,但允许您扩展到单个服务器之外。
修改
说过不对称的密钥会更好,让PUSH服务将私有部分和网站作为公共部分。
编辑2
让PUSH服务将生成密文的日期/时间放入数据块,然后客户可以确保通过确保日期/时间在可接受的时间段内没有发生重放攻击(说一分钟。
答案 1 :(得分:0)
考虑一个外部缓存机制,如EL的缓存块,它可供Web和服务使用,或者是一个缓存数据的文件。
HTH。