在运行时休息服务 .net 操作合同

Rest service .net operation contracts during runtime

是否可以在运行时向休息服务添加操作合同?

例如,我们有一个在端点下可用的服务:www.mywebsite.com 已经有一个操作合约:getName。

但现在我想在运行时添加两个额外的操作合约:比如 getAdress 和 GetNumber。

主要问题是如何让客户知道新的服务合同。 我认为您可以通过创建 ServiceHost 个实例在 运行 时间添加新的服务端点。服务会监听一些不同的地址。这些端点将使用不同的服务契约(接口)。 我认为您不会动态地构造和实现接口(但您可以在 .net 中)。您可能会使用一些预定义的接口。在这种情况下,您应该以某种方式通知客户新的服务合同和地址。要传递和使用此类元数据,您可以:

1) 使用某些 'static' 维护服务的双工方法(服务到客户端调用方向)- 以自定义格式将服务元数据带到客户端;

2) 对此维护服务使用定期客户端调用(轮询)- 出于相同目的;

3) 使用定期网络扫描(按地址范围)并在 运行 时间解析 wsdl 以构建客户端代理。您可以在 运行 时 运行 "svcutil /sc ..." 生成代码或使用自定义技术(this or this 可以提供帮助);

4) 使用中间服务来协调服务和客户端(复杂但强大的方法,this 可以提供帮助);

5) 另外使用 wcf discovery(也不是简单的方法);

6) 组合使用这些方法。

p.s。您可以使用一个接口,但在服务支持(实现)某种方法时通知客户端。这将是最简单的方法。