处理Durable WCF服务的生命周期有什么好的策略?

时间:2010-01-26 20:28:40

标签: asp.net wcf persistence soa

我正在玩Durable WCF服务。即在方法调用之间保持其状态(在我的情况下为sql server数据库)的WCF服务。

我希望能够在Workflow操作或Asp.Net应用程序或两者中使用这样的持久组件。

我理解如何设置这些组件,让它们保留数据,以及如何让它们去除它们的持久性。但是,我在哪里可以确保它们始终正确地从Sql Server数据库中删除它们的持久性信息。

例如,假设我从Asp.Net应用程序连接到Durable WCF组件。我可以将其上下文放入会话中,然后在我的应用程序中的任何位置重新构建它。我可以在Global.asax文件中捕获Session_End并告诉组件不再需要它。

除了 - 什么时候Session_End没有正确触发(无论出于何种原因)?

假设我想在Asp.Net以外的其他东西中使用相同的Durable组件,其中没有会话,并且状态可能需要在呼叫之间保持数天或数周。

在不再需要时,是否已经有一种清除持久性信息的标准方法?你怎么能确定它是否不再需要?你会建议什么?

1 个答案:

答案 0 :(得分:1)

不确定我有一个“光荣”的答案,但是如果你的表中有一个“上次访问”日期,如果这个日期超过了一个阈值,例如3个月,从桌子上扔出那些“骷髅”的消息?

每当您的WCF服务对其持久状态执行某些操作时,请确保更新日期/时间字段。如果它在一段时间内躺在看似死亡的地方,就把它扔掉。如果它看起来死了,闻起来已经死了,并且没有反应 - 这是一个僵尸。 : - )

诀窍是找到“正确”的阈值,例如一个不会杀掉太多“不死”消息,但也不会让僵尸混乱你的数据库。棘手的事!这实际上归结为你自己对手边系统的了解 - 我不担心黄金法则。