In this post I will cover the process of creating an orchestration and consuming it as a WCF service. It is a popular process but it's one that has a number of steps I think should be shown together.
1)Your orchestration, ideally, should have just a single
request/response port for the WCF wizard to consume. Other ports don’t need to
be public but the one that is going to be consumed needs to be;
Or you can create a single receive port(here the other ports shown
are just to files for testing);
You can just have a single port with only a request on it but then
your service gets called and the calling program blindly continues after that. In other
words it starts an instance of biz when the service is called but it doesn’t wait till that instance successfully
completes.
At this point, before you go into the WCF wizard be sure to build and deploy your app(give it a name and sign it as well, obviously). But don’t try to finish the binding for the public port that you want the WCF wizard to create.
At this point, before you go into the WCF wizard be sure to build and deploy your app(give it a name and sign it as well, obviously). But don’t try to finish the binding for the public port that you want the WCF wizard to create.
2)Next, to set up the WCF service go to Tools in Visual Studio or you can go
to Biztalk and look for ‘Biztalk WCF Service Publishing Wizard’. Once you are
in the wizard click through to get here:
Metadata is things like schema info for the wsdl so be sure to
click that. You want it to create the biztalk receive location too so you can bind
your applications receive location to it, so be sure to check that as well. The
Biztalk App name is the name for the app you deployed containing your
orchestration.
The next few screens are for publishing an orchestration or
schema(you want orchestration), selecting the dll for the orchestration, selecting the
port you want binding info created for, giving the schemas a unique namespace,
and finally, picking a location for your service (http://localhost/<nameofapp>
is a good one if you’re hosting locally).
Anonymous access is not something you want for production but for
testing it may be easiest. I’d leave it unchecked at first and if you can’t get
things working because of perms, go back and check it.
Click through to create the service, and finish.
3)Next, you can import the BindingInfo.xml file (in the
inetpub/wwwroot/<WebSiteName> folder) in your biztalk app. Then you can
start it. Once it’s started you should be able to browse there from
IIS(assuming your perms are okay; you will need perms to get to Biztalk and the
SQL DB as well I believe. So make sure to put this site under the correct
AppPool, for example DefaultAppPool didn’t work for me). By ‘there’ I mean
something like
Http://localhost/<nameofbizapphere>/<nameofbizapphere>_<nameoforchestrationhere>_<nameofrecieveporthere>.svc
This site will give you a good tip on how to fire off your service
once you’ve referenced it. I don’t bother generating code the way that site recommends
but it can be done. Below is an example of a consumed biz app called
PublishAsWCF_OnePort;
4) When you want to add this WCF service to your c# project go to
‘add service reference’ and then just click on the address and type in the
address of your wsdl, which is
http://localhost/<nameofbizapphere>/<nameofbizapphere>_<nameoforchestrationhere>_<nameofrecieveporthere>.svc?wsdl
For example:
http://localhost/PublishAsWCF_OnePort/PublishAsWCF_OnePort_OnePortOrch_Recv.svc?wsdl
Click Go. From here you basically give the service a namespace,
whatever you like, add it to the ‘usings’ in your project and go ahead and
build your project. Below is an example of two apps I consumed, and loaded into
a project. The input message is called Birth and the response (which exists
only for ServiceReference1) is called Lifetime. They both work when the Biztalk
app is running. Notice the default operation to start this is ‘Operation_1’.
An excellent walk through of step two, actually most of the stuff I covered here, for Biz 2009 is at
If you have any questions beyond what is there or here try
this link:
No comments:
Post a Comment