Message Framing

Topics: Developer Forum, User Forum
Mar 7, 2007 at 2:20 PM
Hi All,

I managed to implement request-response scenario as well using your guidance, my question now is can we get rid of the message framing (start and end delimiters) from messages. As there is in the documentation the adapter identifies the start and end of message using those delimiters. But is there any other way of doing this, like giving it the length or any other mean?

Actually our scenario is currently that the vendor application that will send the messages to tcpip port is already sending the xml to it. We can create schemas for those XMLs in biztalk and get up and running with this adapter. But if the delimiters are necessary then the client application would need to change itself and thats time consuming and costly, so if there is a work around for this, that wouuld be great for us!

Waiting for your reply,
Regards,
Sajid.
Coordinator
Mar 8, 2007 at 8:55 PM
You have to remember that we are talking about a TCPIP adapter, and that essentially means that the Adapter is dealing with a byte stream passed to it from the network stack. It has no notion of any payload or its content. So the question is for pure byte stream, how does any target system understand when your application started the transmission of a message and when it finished sending that message, such that it can assume it now has the payload.

Remember, TCP is just a transmission protocol - in other words, it just shifts data. Without a higher level protocol for the application to define message boundaries, you can't determine the start and end of a message from just receiving data on the wire. In addition TCP does not guarantee all data in one go. You are guaranteed to receive the data, you might have to get it on the next loop, or there might be a pause and the TCP receive times out. Either way, without a framing protocol - how does the adapter know when to stop receiving and then submit the data to BizTalk?

So for your scenario for XML, i suggest that you find some kind ot TCP Trace utility to act as a proxy between your client application and the BizTalk Receive location and actually observe the byte stream on the wire to see if you can identify a particular byte or sequence of bytes that you can determine is the beginning of the transmission and the end.
Coordinator
Mar 8, 2007 at 8:56 PM
Also have a look here...

http://blogs.msdn.com/joncole/archive/2006/03/20/555721.aspx
Mar 9, 2007 at 6:17 AM
Thanks alot plummer for your explanation, It really clears the point. It seems that we'd need to made some changes in our client application. Actually we are looking to use this adapter for our IVR application because it needs fast synchrnous response and the SOAP and Http adapters lack that kind of speed. So we need real speed and reliability, we've used it and its quiet fast, but cant say much about reliability, what do you have to say about this, is this adapter reliable enough to be used in a live production environment? and also is there any way of load balancing the requests to it, like we can do for SOAP and Http adapters using NLB?
Mar 9, 2007 at 6:32 AM
Thanks alot plummer for your explanation, It really clears the point. It seems that we'd need to made some changes in our client application. Actually we are looking to use this adapter for our IVR application because it needs fast synchrnous response and the SOAP and Http adapters lack that kind of speed. So we need real speed and reliability, we've used it and its quiet fast, but cant say much about reliability, what do you have to say about this, is this adapter reliable enough to be used in a live production environment? and also is there any way of load balancing the requests to it, like we can do for SOAP and Http adapters using NLB?
Coordinator
Mar 10, 2007 at 7:31 PM
When it comes to reliability, then you are going to have to make that judgement yourself by ensuring you perform enough testing based on your scenario, data and endpoints. If you find issues post them here and as always will do my best to assist.
Coordinator
Mar 11, 2007 at 6:37 PM
Forgot to add, we did test using windows NLB and it worked fine
Mar 11, 2007 at 9:47 PM
Edited Mar 5, 2008 at 11:36 AM
Thanks,
Sajid