BizTalk Gurus

Call Orchestration or Direct bound port..?

Latest post 10-23-2006 2:27 PM by Anonymous. 3 replies.
  • 10-16-2006 10:42 AM

    • shan
    • Top 75 Contributor
    • Joined on 09-03-2006
    • Posts 23

    Call Orchestration or Direct bound port..?

    We have two options in invoking another orchestration from a host orchestration, by using either a "call orchestration shape" or using a direct bound ports. Is there any guidelines when to use each of these..?

    Thanks,

    Shan 

     

  • 10-16-2006 5:34 PM In reply to

    Re: Call Orchestration or Direct bound port..?

    There isn’t really a guideline.  I think it boils down to what you want to do in the future.

     

    First off, Call Orchestration is a Sync call so it will wait until the next Orchestration finishes to complete the calling Orchestration.  Start Orchestration will be a ASync call.  With both of these, you need to hard code your Orchestration including the version (if I remember right). 

     

    With Direct Binding, you have a lot of flexibility if you want to change out Orchestration later on.  Plus these are always ASync except a subscription must be matched or you will be an exception. 

     

    If I didn’t need the call to be Sync, I’d probably use direct binding.

     

    Hope this helps.

    Stephen W. Thomas http://www.BizTalkGurus.com

  • 10-16-2006 6:06 PM In reply to

    • tomasr
    • Top 10 Contributor
    • Joined on 09-03-2006
    • Colombia
    • Posts 231

    Re: Call Orchestration or Direct bound port..?

    One thing to add to Stephen's response is that you can actually sort of do a "sync call" of an orchestration using direct binding, by using direct binding with a request response port, and having the call orchestration return the response message when it is finished. I've used this pattern successfully and it is quite powerful.

    One of the benefits of using direct binding is that if you use it correctly you can use it to decouple the calling orchestration from the called orchestration, and this can be a great help when versioning your solution if you design it correctly to take advantage of it. Also, because with direct binding you're using the BizTalk Pub/Sub engine to select the right orchestration to spawn, you can use it alongside custom context properties to "dynamically" choose which orchestration to call instead of having it hardcoded on the parent orchestration. There are a lot of really  cool things you can do with this capabilities.

     One sample that shows off the direct binding capabilities in BizTalk 2006 in a great way is the BPM Sample Scenario included in the SDK; check out the documentation on it to see how they enable advanced extensibility, versioning and scalability by using reverse direct binding.

    http://winterdom.com/

  • 10-23-2006 2:27 PM In reply to

    Re: Call Orchestration or Direct bound port..?

    One more thing to consider: performance.  For maximum flexiblity and reuse Direct Binding is the way to go.  But for raw speed, Call is best because it is the only way to invoke another Orchetsration without going throught the MessageBox.  Everytime you go through the MessageBox (even with Direct Binding) you introduce latency.  With the default tuning you get 1 second of latency just for the sending the initial message and receiving a response.  This can be tuned down to about 100ms.

    I usually prefer Direct Binidng because reuse and flexibility are usually important criteria, but in some cases raw performance has to be considered.

     Kent Brown

     

Page 1 of 1 (4 items) | RSS