Introduction
If you want an explanation for BizTalk Server, for a technology guy the answer will be:
BizTalk Server is a middleware product from Microsoft that helps to connect various systems together.
Let’s take an example: If you look at any modern organization, it will be running its operations using a variety of software products; SAP for their ERP needs, Salesforce for their CRM needs, Oracle for their Database needs, + tons of other home-grown systems like HR, Finance, Web, Mobile etc.
At one point in time, these systems need to talk to each other. For example, a customer's data that's residing in your SAP system may be required in your CRM system (Salesforce). In a similar way, the contact details you collected from your company website need to go into a few back-end systems like CRM, ERP, Marketing etc.
This business need can be addressed in a layman's way by allowing each system to talk to all dependent underlying systems. From our example, the web will have a piece of code that will update the contact details in CRM, ERP, Marketing system etc. (In a similar way, each system will have their own implementation to update relevant systems). If you go down this route, you will end up with 2 major issues - One, creating a spaghetti of connections/dependencies between various systems; and second, whenever a small change is required, you need to touch multiple systems. There are various other challenges, like understanding the interfaces of all the underlying systems, transport protocol, data formats etc.
Products like BizTalk Server (there are other vendors, like Tibco, Mule soft, IBM WebSphere Message Broker) etc. solve this problem of being a middleman.
Uses of BizTalk Server
When you use BizTalk Server, all the systems talk to only one central system, i.e., BizTalk Server, and it's the responsibility of BizTalk to deliver the message to the corresponding underlying system. It takes care of various challenges I highlighted earlier.
In a real-world example, imagine BizTalk as a postman delivering letters. It's impossible for all of us to go and deliver letters to each address, hence, we post it to the post office and they take care of delivering it.
If you see BizTalk from bird's eye view, you will find it in middleware, like a middleman who works as a communicator between two businesses, systems and/or applications. You can find many diagrams on the internet that show it as a middleman or tunnel used by two willing systems to exchange their data.
If you want to see it more technically, you can say, it is an integration and/or transformation tool. With the robust and highly managed framework, BizTalk has infrastructure that provides a communication channel with capabilities to provide desired data molding and transformation. In an organization, sometimes data exchange with accuracy with minimum effort is the desired goal. Here, BizTalk plays a vital role and provides services to exchange data in a form they can understand. It makes the applications transparent to each other and allows them to send and receive information in the way they used to send regardless of what kind of candidate is existing for the information.
If you go deeper, you will find it's a messaging engine based on SOA. To make BizTalk work for every plate form, Microsoft used XML. People say BizTalk only understands XML. Not purely, you can also send binary files through BizTalk. But when you want functionality, logging, and your business rules, then you can only play in XML. BizTalk is SOA (Services Oriented Architecture), many types of adapters are available to interact with different kinds of systems and can be changed and configured at the administration level.
So, this is stuff that can anyone say about BizTalk to impress his or her boss, or to clear his interview as an introduction. Now let's go deeper and explore BizTalk further.
Message Box
Next, I can talk about Message Box. Take a look at the following image that you can find on many other websites,
Four major components can be seen
- Receive Port
- Message Box
- Send Port
- Orchestration
Yeah, your guess is right, receive port is where we receive/subscribe to requests and send port where we send/publish requests but what is message box and Orchestration?
First let's talk about flow of execution. Messages reach receive port through the adapter we configured. It reaches here as we configure its receive location and adapter. Then it goes through a pipeline towards message box. From message box, message is sent to the port subscribe for this message. It can be more than one port. Message is published in message box to all recipients. As port is identified, message is sent to orchestration for the port and again come back to message box and then send port’s map and pipeline. Finally, adapter sends message where it should go. Maps are optional, it is according to your need. Pipeline is compulsory, but a few built-in pipelines are available and you can use them if you do not want to do anything in pipelines.
Message box is simply a SQL Server Database. Here we define the message arrive should be sent to which port. Message arrived with unique signature; we call it message name space. This name space should be unique in subscription. It helps the BizTalk to transport message to correct location. There is the other type of subscription of messages and untyped messages that are routed on the basis of data that they contain but those are beyond the scope of this overview.
Receive port execution is done such a manner, that first it's the adapter then pipelines and then port. Receive location is here as a separate artifact. Configuration of receive location is important to initiate service. Here we define what adapter will be used to get messages. Further we can introduce pipeline here. Pipeline is used to perform any operation prior to sending message to message box. Normally we use it to disassemble any file.
Then inbound maps are faced, here we can talk about map operation. BizTalk Mapper is a tool ship with BizTalk Server with vast variety of mapping operations.
Orchestration is an implementation of your business logic. Microsoft provides a BizTalk template that will install in Visual Studio having GUI interface for orchestration, map and another components.
Message is sent to orchestration on the basis of subscription and then again to Message Box to note down the changes done in orchestration and finally to send port. On send port we also have map, pipeline and adapter to perform any changes at the sending end. This execution occurs in reverse order as compared to receive port.
This is execution of any message through BizTalk.
Summary
In this article we learned about BizTalk server, understood what it is, and its four key components, which were Receive Port, Message Box, Send Port and Orchestration. In the next article we’ll cover some more points about BizTalk server. If there's anything specifically that you want me to cover with respect to BizTalk Server please let me know.