WCF 服务的客户端方法说明

Client's method description for WCF service

我有一个 WCF 服务(在 windows-service 中托管)和一个客户端。

它们的交互方式如下:客户端发送请求,服务获取请求,然后 returns HTTP 200。客户端还将其地址传递给 WS-Addressing header 中的答案。目前仅此而已

几个小时后 windows-service 应该会发送该请求的结果。客户端有一个 web-method 将得到结果。所以问题是:对于将获得结果的客户端方法,应该在哪里进行描述(方法名称,其参数)?客户端应该公开其 WSDL,还是我应该将该描述放入我的 WSDL(如果它以这种方式工作)?

据我了解,您有两个服务,我们称它们为服务 A(托管在 Windows 服务中)和服务 B。服务 B 向服务 A 发送请求(换句话说,它是像客户端一样)让服务 A 启动某种长期 运行 任务。

任务完成后,服务 A 需要将结果发送给服务 B。由于它是一个长 运行 任务,使用双工绑定 不会是理想的。但是,服务 A 可以调用服务 B 公开的方法来发送结果。

像这样:

[ServiceContract]
public interface IServiceA
{

    [OperationContract]
    public void StartWork();
}

[ServiceContract]
public interface IServiceB
{

    [OperationContract]
    public void ReceiveResults(ResultData data);
}

其中 ResultData 是包含结果的某个对象(也可以是简单类型,这只是为了说明)。 ServiceA 的 StartWork 可以 return 无效(响应仍将发送到客户端,因为它没有标记为 IsOneWay=true)。半伪代码如下:

开始任务:

ServiceAClient client = new ServiceAClient();
client.Open();
client.StartWork();
client.Close();

服务A在任务完成后将结果发送给服务B:

ResultData results = new ResultData();
ServiceBClient client = new ServiceBClient();
client.Open();
client.ReceiveResults(results);
client.Close();

在这种情况下,接收结果的方法将是服务 B 的 WSDL 的一部分,因为服务 A 将调用该方法。