我一直在阅读Service Fabric,而我尚未解决的问题是状态服务状态何时初始化?
如果我在本地开发,我认为状态是"重新开始"每次我运行应用程序。 (即按F5进行调试)。如果我将服务部署到Azure,我想象服务将启动,下次部署时将其视为升级。这意味着服务在升级期间保持其状态。 我可能在那里错了,因为如果服务或演员对存储的状态有所改变,会发生什么?
或者我错了,并且需要将状态保存在某种外部存储中以确保用户数据不会丢失。即,使服务和参与者维护数据的热拷贝,并在需要时将其保留,以防整个系统重新启动或重新部署。
答案 0 :(得分:5)
默认情况下,状态对磁盘是持久的(除了复制到3个节点),因此它应该在重新启动后继续存在。
在Visual Studio中按F5时,默认行为是删除旧应用程序并将当前版本部署为新应用程序。要维护开发群集上的状态,可以勾选项目属性中的复选框以执行升级而不是干净部署。
在部署到Azure时,您具有相同的选项 - 部署新应用程序(并丢失状态)或部署升级以保持状态。您的州级的旧版本和新版本应该兼容,它们基于DataContract
以使其更容易。
当然,也可以使用外部状态存储方案。