Both, BizTalk server and .NET Windows Workflow Foundation (WinWF) provide design tools to build a process workflow. So, what product/technology is right for you? Below are some questions I go through when making such decision on my projects.
· Do you have to alter the message structure? Think: is BizTalk mapper something I will need to use?
· Do you need to integrate with enterprise applications/platforms? Are any of them that don’t talk XML? Think: do I need to use adapters/accelerators? A list of BizTalk adapters is available at http://www.microsoft.com/biztalk/evaluation/adapter/default.mspx and includes SAP, PeopleSoft, Host Files, SMTP, HTTP, WSE, MSMQ, MQSeries, Windows SharePoint Services, POP3, etc.
· Will your solution have to scale out?
· What’s the number of concurrently running workflow instances that you expect? (see my post from yesterday on WinWF threading limitations)
· Do you need the fail over support?
· Do you need engine throttling capabilities?
· Does your solution have to support BPM (business process monitoring)? Think: will I have to rewrite BizTalk BAM (business activity monitoring) or is the WinWF tracking sufficient?
· What are your deployment needs? Do you need to configure, deploy, stop, and start applications across multiple servers? Think: will the BizTalk tools be beneficial?
Note: the mere fact that you need some of the functionality provided by BizTalk does not equate to the decision of using BizTalk. After all, you could write your own… However, if you find yourself answering “yes” to many of the questions below, or the provided functionality would be very costly (in $$ and/or time) to rewrite yourself, then that’s an argument for using BizTalk. Finally, it doesn’t always have to be an either/or decision… You might choose to use BizTalk’s rule engine, but not orchestration.
As I see it, Biztalk is product that provides scalable deploying and hosting model, built-in integration with many applications and protocols, a runtime configurable instrumentation framework, central management, monitoring and tracking, message mapping and transformation services, batch processing, publish/subscribe mechanism, engine throttling, scale out support, reliability, fail over, deployment tools, business rules engine, etc.
WinWF is a set of class libraries, it’s a developer framework used to build workflow into custom applications.
So, are you creating an intra-application workflow (page flow wizard, control flow, a business logic implementation that has multiple activities, state machine, etc)? Will your application host the workflows itself? If yes, WinWF will likely satisfy your needs.
If, on another hand, you are integrating enterprise applications, and need some capabilities mentioned in the list above, then BizTalk is, probably, your better bet.