Friday, August 23, 2013

Interview questions on BizTalk Pipeline

This post  intends to cover the BizTalk pipeline related questions, which a BizTalk developer can face during an interview.

Questions and answers:
1.     Why do we need a custom pipeline when we have default pipelines?

BizTalk Server provides a few out of the box pipeline components. For instance the S/MIME components for encrypting or decrypting messages. In case you need to do some pre or post processing on a message and the functionality is not offered through the provided pipeline components you will need to built your own custom pipeline component. The pipeline component(s) can then be used within a custom pipeline. See also TechNet Wiki Article BizTalk: List of Custom Pipeline Components.

2.     What is the maximum message size supported by XML send an XML receive pipeline?

This depends on infrastructure specifications (CPU, Memory, Disk) and on specific (possible) bottlenecks in your Microsoft BizTalk Server system (see MSDN How BizTalk Server Processes Large Messages Jump ). While BizTalk Server imposes no restriction on message size, practical limits and dependencies might require you to minimize the size of your messages because large messages require more processing resources (see MSDN Message Considerations Jump ). 

3.     What is the minimum number of components allowed in pipeline stage?

Minimum is zero components, example PassThru pipeline.

4.     What is the maximum number of components allowed in pipeline stage?

All stages in the pipeline can take maximum of 255 components, except the assemble stage that has a maximum of one.

5.     Does Flat file assembler pipeline component validates the incoming XML message?


6.     What is a .btp File?

.btp file is a BizTalk Server pipeline file.

7.     How many states have the Receive Pipelines and the Send Pipelines?

The receive pipeline consists of four stages

o    Decode Stage: This stage is used for components that decode or decrypt the message.
o    Disassemble Stage: This stage is used for components that parse or disassemble the message.
o    Validate Stage: This stage is used for components that validate the message format.
o    Resolve Party Stage: This stage is a placeholder for the Party Resolution Pipeline Component.

Regarding to the send pipelines, they consist of three stages:

o    Pre-assemble Stage: This stage is a placeholder for custom components that should perform some action on the message before the message is serialized. 
o    Assemble Stage: Components in this stage are responsible for assembling or serializing the message and converting it to or from XML. 
o    Encode Stage: This stage is used for components that encode or encrypt the message.

8.     Is there any Visual Studio Wizard to create custom pipeline components?

Yes there is. The Pipeline Component Wizard is intended to ease development of pipeline components used within a BizTalk Server environment. Supports both C# and VB.NET. See more here Jump .

9.     What's the difference between Default Pipelines and Custom Pipelines?

When you create a new application, the default pipelines are created and deployed by default and appear in the Microsoft.BizTalk.DefaultPipelines assembly in the \References folder for every BizTalk project. The default pipelines cannot be modified in Pipeline Designer. These pipelines can be selected when configuring a send port or receive location in BizTalk Explorer.

Pipelines and pipeline components present out of the box can do most of the tasks for you. But sometime specific message processing or messaging requirements encourage developers to develop custom pipeline components. You can create three types of pipeline components: general, assembling, and disassembling. Each of the three types can additionally implement probing functionality. Each type of pipeline component has an associated interface that must be implemented for the component to be plugged into the BizTalk Messaging Engine; the pipeline interfaces that distinguish the types of components are IComponent, IAssemblerComponent, and IDisassemblerComponent. A custom pipeline component is just a plain .NET class that implements several BizTalk interfaces.

10.   Is there an error handling functionality to handle error on pipelines? 

Yes. Error-handling functionality called error reporting which enables handling pipeline errors. Error reporting isspecified on receive and send ports within the BizTalk Administration console.

11.   When is filter used to create a subscription?

Filters are used to create subscription when orchestrations are not part of the scenario.

12.   Which property is required when using Flat file Disassembler component? 

Setting the Document Schema property is required, all other properties are optional.

13.   What if Document Schema property is not specified when using Flat file Disassembler component? 

A runtime schema discovery will be attempted, Biztalk Server attempts to determine the correct flat file schema to assemble the message with, based on the namespace and the root node of the message.

14.   Which API is used to implement Pipeline?

To implement pipeline we have to use the API in the Microsoft. BizTalk. Component. Interop namespace.

15.   What are types of pipeline components?

o    General
o    Assembling
o    Disassembling
o    Probing

      16.  Why attributes are added to class while developing a custom component?

To indicate that the component is a custom pipeline component and in which stage it can be used, couple of attributes are added to the class. 

             [ComponentCategory(CategoryTypes.CATID_PipelineComponent)] --  This attribute tells that the component is cutom pipeline component
             [ComponentCategory(CategoryTypes.CATID_Any)]                           -- This attribute tells that the component can be used at any stage


             [ComponentCategory(CategoryTypes.CATID_DisassemblingParser)]  -- This attribute tells that the component can be used only on Disassemble stage

      17.  Custom Component is not visible in Toolbox, even after adding the assembly to GAC?
Just adding assembly is not sufficient, it needs to be added to component dll at location : C:\Program Files\Microsoft BizTalk Server 

            2010\PipelineComponents and then reset the toolbox, it will be visible and ready to use.

      18. What interfaces are used in developing a general custom pipeline component?
      19. What interfaces are used in developing a custom dis-assembler component?

      20. What interfaces are used in developing a custom assembler component?

      21. What interfaces are used in developing a custom Probing component?

No comments:

Post a Comment