代码之家  ›  专栏  ›  技术社区  ›  Tomas Vana

对工作流中的跟踪数据进行版本控制的最佳方法是什么?

  •  3
  • Tomas Vana  · 技术社区  · 15 年前

    这是一个关于工作流基础(.NET 3.5)的一般性问题,并对其工作的数据进行版本控制。我们有许多与某些数据一起工作的自定义活动,而且这些数据可能对已完成工作流的未来分析也很有意思(前提是我们配置跟踪的方式使其以序列化的形式存储)。

    可能有必要在UI中显示过去的数据,但数据不可避免地会改变结构(如果是动态的,则是类定义/内部结构),我们库的重新部署版本将包含新的数据定义,而跟踪数据库中的序列化数据仍将是旧的结构。

    使用从一开始就不会改变的动态结构(如属性包)是更好的还是稍后处理重新部署并以某种方式将序列化的blob转换为新的blob?在类似的场景中,您是否使用过某种方法?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Maurice    15 年前

    很大程度上取决于如何部署应用程序。如果使用强名称并部署到GAC或反序列化工作流的多个私有程序集路径,则将反序列化类的确切版本。这意味着您的代码必须能够与多个版本一起工作,这可能有点麻烦。将数据存储在属性包中对您没有帮助。如果使用程序集重定向来指向活动的当前版本,则可以解决该部分问题,我认为使用属性包将使生活变得更简单。也就是说,到目前为止,我倾向于使用依赖属性和常规的可序列化类。

    我做了一系列关于长时间运行的工作流和版本控制的博客文章,在这些文章中,您遇到了完全相同的问题。检查 here 了解更多详细信息。