我目前正在开发一个WCF客户端,以便与一组WCF服务引用进行交互。我正在开发c#。
我不想遵循使用svc util生成服务引用或手动向类库添加服务引用的方法。
我还有其他选择吗?我正在考虑在ServiceModel库中使用ServiceClient类。
我有点困惑,例如与端点相关的请求和响应对象,这些对象是在哪里创建的,或者它们是如何创建的?在之前的项目中,我使用了T4映射和DTO,但我觉得这些都是过度杀戮。我确实希望我可以在不同的服务端点之间共享相同的对象。我的目标是创建一个通过自定义书面代理进行通信的自定义客户端对象。我想就此发表一些指示。
答案 0 :(得分:0)
要与WCF服务(端点)通信,您需要了解三件事(ABC):端点的地址,它使用的绑定,以及<通信中使用的em>合同。如果您拥有这三件事,则无需使用任何工具与服务进行交互。
地址只是端点的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));
}