c# - 拥有一个大的工作流程还是几个更小的具体工作流程更好?

标签 c# workflow workflow-foundation

我需要构建一个从服务器获取文件并移动到另一台服务器的应用程序。有人建议我考虑使用 Windows Workflow Foundation (WF)。

我开始构建工作流程,但它变得越来越困惑,我不确定我是否以最佳方式进行。

这是基本的工作流事件:

获取资源列表 确定源是 ftp 还是磁盘驱动器 从服务器获取文件列表 如果源是 ftp 则使用 ftp get 获取文件,否则如果源是驱动器则从驱动器读取文件 如果目标是 ftp 则 ftp 文件到服务器 否则如果目标是驱动器则写入驱动器 否则如果目标是 web 服务然后发布到 web 服务 如果源是 ftp 则使用 ftp 命令删除文件,否则如果源是驱动器则删除文件

对于一个工作流程,它会变得有点忙。我需要 2 个 while 循环,一个围绕集成,一个在我获得文件列表之后。

我想到的另一件事是构建多个工作流程。一个用于 FTPtoFTP、FTPtoDrive、FTPtoWebServie、DriveToFTP、DrivetoDrive、DriveToWebService。

有什么建议吗?

最佳答案

首先,您应该考虑为每个主要部分创建自定义事件。自定义事件将是可以由许多步骤组成的复合事件。这将有助于整理一些东西,并允许您在相对较高的级别继续使用工作流。

Workflow Designer 虽然方便,但并不是真正为大规模扩展而设计的。从 VS 2008 开始,使用基于 XAML 的技术的最佳方式是使用文本编辑器并直接读/写 XML。

将其分解为多个工作流可能不是最好的方法,除非您可以将其分解为几个高级事件并在 XAML 级别工作。请记住,如果所有这些的逻辑和流程几乎相同,那么您现在必须维护 6 个不同的工作流程。如果您的工作流很复杂并且您需要修复所有工作流中的一个常见逻辑错误,这将是一个更大的噩梦。

您还应考虑服务的使用。这可能允许您拥有一个工作流和一组事件,但每个步骤的实现都可以隔离到一个服务中。在这种情况下,您需要为每个组合实例化一个工作流,将相同的工作流加载到每个组合中,并注入(inject)不同的事件。不一定是最好的方法,但需要考虑。

关于c# - 拥有一个大的工作流程还是几个更小的具体工作流程更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744156/

相关文章:

wcf - 在web.config文件中配置端点时发生异常

c# - 为什么找不到 System.ServiceModel.WebHttpBinding?

Powershell 工作流程 - Get-Service 不过滤

groovy - 获取 groovy 中的当前日期和时间?

workflow - 处理工作流程: Given key is not present in the dictionary in UiPath

architecture - 工作流基础设计问题/注意事项?

c# - 如何模拟(或不模拟)IDbConnection 进行测试?

c# - itextSharp SetField 性能(对比 activePDF 工具包)

c# - 为什么 asyncController 无法获取数据

c# - 如何调试动态工作流(使用自定义事件)