C#针对Oracle数据库源的web服务,该数据库源有时不可用

C#针对Oracle数据库源的web服务,该数据库源有时不可用,c#,wcf,web-services,oracle10g,C#,Wcf,Web Services,Oracle10g,我们现有一个包含大量数据的大型应用程序。我们希望将其用作各种内部编写的C#web应用程序的数据源,因此我们没有更多冗余数据 我们正在查看的数据变化不大,因此缓存在大多数情况下都可以正常工作。因此,我们正在针对各种内部编写的应用程序中重用的数据编写一个C#Web服务 但是,大约每月一次,Oracle数据库源不可用 在web服务中处理此问题的最佳方法是什么,以便依赖该数据的其他应用程序也不会中断?设置复制或故障切换合作伙伴?老实说,这似乎不是一个需要更多代码的工作;这听起来像是一项需要更多基础设施的

我们现有一个包含大量数据的大型应用程序。我们希望将其用作各种内部编写的C#web应用程序的数据源,因此我们没有更多冗余数据

我们正在查看的数据变化不大,因此缓存在大多数情况下都可以正常工作。因此,我们正在针对各种内部编写的应用程序中重用的数据编写一个C#Web服务

但是,大约每月一次,Oracle数据库源不可用


在web服务中处理此问题的最佳方法是什么,以便依赖该数据的其他应用程序也不会中断?

设置复制或故障切换合作伙伴?老实说,这似乎不是一个需要更多代码的工作;这听起来像是一项需要更多基础设施的工作。我知道Oracle许可证很昂贵,但付钱给开发者解决不可用问题也是如此


如果您只需要用代码来解决它,那么如果任何定期计划的DB查询因超时或连接失败类型消息而失败,web服务应该只保留并返回其缓存的数据。在这种情况下,应尽可能长时间地保留缓存数据,直到刷新该数据的调用成功为止。如果没有缓存数据,您可以接受错误并不返回任何内容,或者返回一个错误,说明数据在这两个位置都不可用。

解决方案是使用不会过期的辅助缓存。

如果从数据库成功更新第一个(较短的)缓存,则使用最新值更新辅助缓存。如果数据库查询失败且第一个缓存已过期,则第二个缓存将更新第一个缓存。所以总是有一个辅助缓存。

什么样的web服务?ASMX?@John Saunders目前是的,除非有更好/更简单的方法?我应该改用WCF吗?是的,所有新开发都使用WCF。看见