Pipelines may be configured in two ways:
Most people are very familiar with configuring them by type. For this, the components in the pipeline are configured in Visual Studio at development time. After you have configured the pipeline, you deploy it, and that configuration is then baked into the deployed pipeline and will be used at runtime. This configuration is delivered to the engine at runtime from the database; it is persisted in the database during the deployment process when it is extracted from the compiled pipeline assembly. This works well and is the usual way that people tend to configure pipelines. The problem with this approach is that if you need different configuration for two ports using the same pipeline, you must create two pipelines, configure them, and deploy them. Clearly, this approach has limitations, and it means that you'll end up creating and deploying far more pipelines.
BizTalk 2004 introduced the notion of pipeline instance configuration. For this, the pipeline is still configured at development time, but an instance of that pipeline that is used in a specific send port or receive location may have its own independent configuration. This configuration is delivered to the pipeline at execution time and overwrites the type level configuration. This feature was rarely used in BizTalk 2004 because of the overhead associated with setting it up. First, you had to manually create the XML configuration file in ...