0

我目前正在开发一个 WCF 客户端来与一组 WCF 服务引用进行交互。我正在用 c# 开发。

我不想遵循必须使用 svc util 生成服务引用或手动将服务引用添加到我的类库的方法。

我还有其他选择吗?我正在考虑在 ServiceModel 库中使用 ServiceClient 类。

不过,我有点困惑,例如与端点相关的请求和响应对象,它们是在哪里创建的或如何创建的?在之前的项目中,我使用了 T4 映射和 DTO,但我觉得这些都太过分了。我确实喜欢我可以在不同的服务端点之间共享同一个对象。我的目标是创建一个通过自定义编写代理进行通信的自定义客户端对象。我想对此有所了解。

4

1 回答 1

0

要与 WCF 服务(端点)通信,您需要知道三件事 (ABC):端点的地址、它使用的绑定以及通信中使用的协定。如果您拥有所有这三样东西,则无需使用任何工具与服务进行交互。

地址只是端点的 URI。绑定由抽象System.ServiceModel.Channels.Binding类的一个实例表示(例如System.ServiceModel.BasicHttpBindingSystem.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));
}
于 2012-10-30T03:06:54.180 回答