R Raghu

Is it possible to call a web service method (authored as one-way with WCF) through BizTalk I found following article that says you can not call this from BizTalk:


I am hoping that this is not true and it will be fixed in later releases.

Why would I write a stateless web service method based on the who the consumer is There is a legitimate reason for this and that is why WCF enables it. But BizTalk can not work these methods Please tell me that this is not true.


Re: BizTalk R2 General R2 Beta - Consuming WCF Oneway OperationContract method

Jon Flanders

I can only guess - but my guess would be that having IsOneWay=true would be difficult to support considering BizTalk's guarantee of delivery sematics. If BizTalk doesn't get any response - there is no way for the BizTalk Send Adapter to know to tell the messagebox that it has successfully consumed the message.

You can of course still return void from your Operation - it doesn't affect whether your web service is "stateless" or not.

You might look at this post - http://kennyw.com/indigo/130

Re: BizTalk R2 General R2 Beta - Consuming WCF Oneway OperationContract method

R Raghu

I looked at the article and other article links in it. One of the links clearly shows how to check for a null response in http with one way method calls. So it can be done.

My argument is that BizTalk should not exclude the consumption of oneway messages. If the oneway methods are configured with reliableSession, then the reliability part can be easily achieved. WCF is elegant in that this can be the reliability can be achieved through configuration (i.e. no code change).

Therefore the decision on how to consume one way messages should be left for users and BizTalk should not dictate it. I know that I can easily add a request-response method to my contract and delegate the message to my internal method asynchronously thus simulating the oneway behavior. But the point is I should not have to do that.

Re: BizTalk R2 General R2 Beta - Consuming WCF Oneway OperationContract method

Jon Flanders

Well - first WS-RM doesn't work with reliableSession. And WS-RM with WCF isn't support in BizTalk R2 either.

BizTalk is a technology that is integrating with WCF. Anytime you integrate technology A with technology B that integration might end up using a subset of technology B. That's what happened here.

Re: BizTalk R2 General R2 Beta - Consuming WCF Oneway OperationContract method

Mick Badran - MVP

Further to add to Jon's post,

In BTS - the MsgboxDB is it's fault-tolerance mechanism.
- a WCF endpoint is purely just an end-point that ultimately will recv/send a message. How it does it, where it does it - irrelevant (here).

WCF - WS-RM, absolutely sensational feature. Streaming etc. etc couldnt live without it.

Bring the two worlds together and:
for e.g. say a BTS WCF Receive Adapter/Location has WS-RM set.
A client app is sending a msg via WS-RM over many network packets.

The problem about this with respect to BizTalk - is that even though it 'may support' WS-RM, it's only in-memory RM as the single adapter instance is running, once it gets the entire msg it then starts to stream it to the MsgBoxDB.

As you can probably guess - if BTS went poof in the middle of this, the client has got Acks back for the packets already sent, BTS memory went south....and there's trouble.

So to follow on from Jon's perspective - WCF is a great technology, BTS sensational. BTS R2 WCF support is always from the perspective of BizTalk.
e.g. there are somethings we can do in a 'traditional' wcf service but not in a BTS WCF hosted service - bts is connection oriented etc etc.

Keep up the good work - love reading your posts Raghu! (you too Jon!! Smile