The two entities in BizTalk that people often find confusing are the Receive Ports and the Receive Locations for the incoming messages. Here are a few points to clarify the existence of a Receive Port.
A Receive Port is a LOGICAL container for the receive locations. Receive Locations that the ones where one specifies the details about the transport to be used, the exact address where the message is to be delivered and any other specific properties particular to that transport type. Consider, for example, various suppliers sending their Purchase Orders (PO) to your organization. Every supplier would prefer his own method of transmitting his PO across to you, some would do it using file transfer over FTP, others would prefer to do a HTTP post etc. Each of these various types, would then require a receive location on the BizTalk Server, where the server can accept these messages. Each receive location would have configuration specific to its transport-type. Now, since these locations are accepting a conceptually same message i.e. PO, they can be grouped into an additional logical layer called Receive Port. So what do I gain by adding additional layer over the receive locations? BizTalk allows you to specify message authentication, tracking and other properties that are related to PO message as such (and not dependant on the way that message is received). Besides this, there are several other advantages of Receive Ports that are listed below.
- Suppose you receive PO from ten different suppliers and assume that one of the suppliers is using a format that is different from the rest. The Receive Port allows us to specify the map that allows us to transform the inbound message to a required format before it is submitted to the MessageBox. Thus we can avoid use of orchestration and maybe some complicated logic / conditional branching just so that we transform the message in one particular case.
- The Orchestrations in BizTalk have a visibility till the Receive Ports. The receive locations are not visible to the orchestrations. This abstracts the orchestrations from the details of specific protocols and locations. Therefore, we can accept conceptually same messages from variety of locations and still treat them in the same way inside an orchestration.
Hope the information helps in understanding the Receive Ports and Receive Locations more clearly.