在工作流程方面,MS WF和NServiceBus之间是否有任何重叠?如果另一个已经在使用中,是否需要使用一个?他们一起玩得怎么样?
我想给我2美分:
我正在开发一个具有相当复杂域的新项目,其中一些域工作流可能会在某些不同的场景中发展和变化.我们一直在分析编排不同应用程序服务器(WCF服务)的可能解决方案.我们分析的第一个架构解决方案是使用Service Bus + PubSubs模式(nservicebus,rhino ESB,masstransit,Shuttle ESB ......).我们分析的另一个解决方案是WF 4.0.我们即将做出决定,到目前为止,选择WF 4.0是因为:
使用工作流程图对工作流程进行建模
工作流程图设计器可以嵌入到自定义应用程序中,可以用于在生产期间改进工作流程,因为它们是在XAML中定义的.
PubSubs模式与传奇,不知何故会淡化工作流的建模方式,在一些复杂的情况下,很难清楚地看到工作流程的工作原理
WF 4.0工作流服务位于WCF之上,因此您可以拥有与WCF端点通信的发送/接收活动.因此,我们拥有WCF的所有功能和灵活性:安全性,可靠的通信,MSMQ,WS*标准,......
可以在Appfabric上托管WF 4.0服务:轻松实现可扩展性,可维护性,监控和故障排除
我们已经在分析一个问题,即WF 4.0不支持状态机(就像它在3.5版本中那样).虽然MSFT解释了如何使用4.0附带的新Fowchart活动实现状态机
希望这可以帮助,
Juanjo
我不同意@AndreasÖhlund.这就像是说"我有C#和.NET Framework,为什么我需要购买ERP系统?" @ juanjo.arana的答案更平衡.
Sagas的NServiceBus文档是一页(我的显示器上有5个屏幕).Pro WF这本书有850页.(我读过它;它不是填充物.)专业K2 blackpearl(讨论一个完整的BPM系统)是870页(亚马逊的计数已关闭).
甚至WF 4(不包括SharePoint)也不是功能齐全的BPM系统.它缺少一个活动级别的安全模型,锁定("Bob已声明此工作订单,但尚未完成它"),高级版本控制和报告.你可以构建所有这些东西,但它们不在"盒子里".
查看NServiceBus Sagas页面的Timeouts部分.将其与在WF 4中进行到期的可视方法进行比较.想象一下,在复杂的工作流程中跟踪这一情况,每当经理想要通知员工在文档处理系统中花费太长时间时,就需要超时(升级).
我同意工作流程有时过度,而且很难测试.(有很多方法可以对WF 4进行单元测试.)但我不想用NServiceBus构建一个真实的BPM风格的工作流程.