Introduction
This article is the first one part of a series of articles intended to illustrate the principles and applications of Microsoft Biztalk Server. The integration of enterprise applications have been a desirable goal of many organizations for years. With the consolidation of concepts (Service-Oriented Architecture-SOA, Message-Oriented Middleware-MOM), methodologies (Business Process Management-BPM, Business Process Reengineering) and standards (XML, XSD, Rosetta.NET) as well as the advent of emerging technologies such as Web Services stack of protocols (WS-*), Enterprise Service Bus (ESB) and others, then vendors have released their own solutions and thus organizations have achieved their challenging goals of automation of business process by the integration of their Information Systems. In this arena, we can find fundamentally two important products: Microsoft Biztalk Server 2004/2006 and Oracle SOA Suite.
What is Microsoft Biztalk Server?
Microsoft Biztalk Server is the Microsoft's premiere server for developing IS integration's solutions to support and automate the business processes in organizations.
Biztalk Server architecture comprises two major components:
Figure 1: Biztalk Server 2006 major components.
The messaging component allows the communication with several systems and platforms through the use adapters which implements the underlying protocol rules and data formats. It listens for messages to arrive, route them to the appropriate target systems and then sends them. This is the bottom layer and the heart of the Biztalk engine. All other components in Biztalk Server such as orchestration, Enterprise Single Sign-On, Business Activity Services, Business Activity Monitor, Business Rules Engine and Health and Activity Tracking depend heavily on this layer.
The orchestration component allows the creation, execution and management of business processes called orchestrations. It is built on top of the messaging components, therefore consuming its services such as the orchestration's communication outside the engine for the transportation and routing of messages. This component handles the state of each orchestration as well as its correlation with external business entities.
Now, I am going to explain the basic flow of messages in Biztalk Server engine as shown in Figure 2. The engine listens for messages by Receive Port. A message is an entity which comprises a header storing information about communication aspects and specific metadata as well as a body which conveys payload such as business entities. The information interchange with external systems is done by adapters which implement the necessary protocol mechanism. The wire message is received in its native format, but Biztalk engine normalizes the schemas of the internal messages using XML as the lingua franca. This task is done by the pipeline component and its sub-components specifically the disassembler component. Then internal XML message is published in the MessageBox. Subscribers consume these internal messages. The main subscribers are the Send Port and Orchestration components which subscribe to internal messages according to their metadata or message context properties. When the underlying subscribed orchestration finished processing the internal messages then it publishes them again in the MessageBox to be consumed by other subscribers. Finally, when one Send Port consumes the internal XML messages, then converts these internal messages into a wire messages according to the schema and format of the intended recipient through the associated pipeline and specifically the subcomponent Assembler. Finally the Send Port uses the underlying adapter to convey the wire message to the target system as shown in Figure 2.
Figure 2: The basic flow of message in Biztalk Server engine.
Conclusion
We have got acquainted with the architecture and main flow of message in Microsoft Biztalk Server. The following articles will explain the architecture components with more details. And finally, we're going to orchestrate a business process as an illustrative example.