Share via


BizTalk vs. Windows Workflow Foundation (WF)

I have seen the questions about the differences between BizTalk and WF and "when to use what" have been raised multiple time.  Based on my experiences with both technologies and my readings (some listed below), I summarized the usage scenario as follows:

- Use WF for application hosted workflow and human workflow

- Use BizTalk for server-hosted system workflow, BAM, B2B and EAI (enterprise application integration).

 

In case you're interested to know why? Not surprisingly, this is very much driven by the product features.

For WF:

  • WF is hosted inside application. 
  • Also, WF supports state machine workflows and dynamic update on workflows, which make it ideal for impelmenting human workflows or other dynamic workflows.

 

For BizTalk:

  • BizTalk workflow is hosted inside BizTalk process and depends on BizTalk server runtime.
  • BizTalk has extensive line of adapters and pipeline components that are often a must-have for cross-platform Enterprise Application Integration (EAI).
  • BizTalk provides tools for working with trading partners such as Business Activity Services (BAS), accelerators for industry standards (RosettaNet, SWIFT etc.). These features make BizTalk more suitable for B2B scenarios.
  • Other features that BizTalk has but WF doesn't (or has to be implemented by developer)
    •     Tracking: natively integrated wtih the Business Activity Monitoring (BAM)
    •     Transaction: supports both atomic transaction and long-running transaction
    •     Extensive set of tools for admin, management, migration and scaling

Some other posts related to this topic I found quite helpful and highly recommend are:

Microsoft's offical comparison on these two technologies at MSDN Developer Center.
Brian Loesgen's blog https://blogs.ineta.org/bloesgen/archive/2005/10/09/56481.aspx
Lamont Harrington's blog https://blogs.msdn.com/lamonth/archive/2005/09/14/466222.aspx
Darren Jefford's blog https://blogs.msdn.com/darrenj/archive/2005/09/15/467838.aspx

Comments

  • Anonymous
    May 01, 2006
    Hi Chunyu,

    Thanks for your article.It gave me a lot of insight about Biztalk.
    But i have a query about biztalk related to your observations:
    1. can we create human and application embedded workflows using biztalk. i.e.is it possible or not possible at all.Also can we use workflow created in biztalk as a reference in a .net assembly

    regards
    thompson
  • Anonymous
    May 01, 2006
    In general there're two types of workflow: sequencial workflow and state-machine workflow.  The former tends to refer to system workflow (e.g. well-defined B2B transactions) and the latter refers to human workflow.  But it doesn't always have to the case. Some human workflow that doesn't involve complex state transisitions may be better off implemented as system workflow.

    You can implement sequencial workflow with either BizTalk or WF.  And you can build state-machine workflow with WF easily, it'd be much harder to do that w/ either BizTalk 2006 or BizTalk 2004.

    To the second part of your question, yes, you can expose your BizTalk workflow (or orchestration in BizTalk term) as a web service and expose it to your .net code.

    Hope this helps.
  • Anonymous
    May 01, 2006
    Thanks Chunyu for your prompt help.

    As you have mentioned that biztalk orchestration can be used in .net assembly, similary is it possible to create custom activities and custom events in .net using vs.net 2003 and then use them inside biztalk workflow.
     
    Also when we are using biztalk orchestration as a webservice inside a .net application, can we use the features of bitalk like reporting, transaction rollback etc on each instance of biztalk workflow.

    Will you mind if i post some more queries related to biztalk for your inputs

    Best Regards
  • Anonymous
    June 18, 2006
    One thing I don't understand is how to implement human workflow using WF ?

    Other competitors products defines a "Task" entity and let you create tasks, escalate them, reject or close them, get a list of open tasks per user etc..
    You do it by using a web-service or an API supplied by the tool's framework.

    Where is this feature in WF ? do I need to code all this stuff myself ?
  • Anonymous
    October 03, 2006
    Good article, it helps explain in multiple ways the differences!