要与 WCF 服务(端点)通信,您需要知道三件事 (ABC):端点的地址、它使用的绑定以及通信中使用的协定。如果您拥有所有这三样东西,则无需使用任何工具与服务进行交互。
地址只是端点的 URI。绑定由抽象System.ServiceModel.Channels.Binding
类的一个实例表示(例如System.ServiceModel.BasicHttpBinding
,System.ServiceModel.WSHttpBinding
等等)。而合约通常由一个用[ServiceContract]
属性修饰的接口来表示。如果您拥有所有这三个,则可以使用ChannelFactory<T>
该类创建自定义代理,如下所示。
public static void TalkToService(Binding binding, Uri endpointAddress) {
// Assuming that the service contract interface is represented by ICalculator
var factory = new ChannelFactory<ICalculator>(binding, new EndpointAddress(endpointAddress));
ICalculator proxy = factory.CreateChannel();
Console.WriteLine(proxy.Multiply(45, 56));
}