为动态调用工作流创建自定义通道

时间:2011-06-23 13:30:17

标签: wcf dynamic workflow-foundation-4 channelfactory

我需要创建一个客户渠道工厂来调用IIS中托管的WCF Wrokflow服务。在运行时,我只能知道应该调用哪个工作流以及需要调用哪个方法。 任何人都可以帮助一个例子吗?

2 个答案:

答案 0 :(得分:2)

您在客户端有关工作流程服务的哪些信息?如果你有合同(服务合同,例如当指向xamlx服务时由svcutil / add service reference生成的服务合同)和端点地址,那么你可以直接使用channel工厂。例如,默认的“WCF工作流服务应用程序”使用basicHttpBinding在xamlx地址声明一个端点。

string address = "http://localhost:27962/Service1.xamlx";
Binding binding = new BasicHttpBinding();
ChannelFactory<IService> factory = new ChannelFactory<IService>(binding, new EndpointAddress(address);
IService proxy = factory.CreateChannel();
var result = proxy.GetData(new GetDataRequest { @int = 1234 });

如果你没有合同/绑定,你只有xamlx地址,并且你想在运行时动态创建一个代理,你可以使用Vipul's dynamic proxy之类的东西在运行时创建代理,以及使用动态代理方法调用服务操作。

答案 1 :(得分:0)

Vipuls动态代理(http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx)完美运作.. 谢谢你......