是否可以在运行时将操作合同添加到休息服务?
例如,我们有一个端点下可用的服务:www.mywebsite.com已经有一个operationContract:getName。
但是现在我想在运行时添加两个额外的operationContracts:比如getAdress和GetNumber。
答案 0 :(得分:0)
主要问题是如何让客户了解新的服务合同。 我认为您可以通过创建ServiceHost实例在运行时添加新的服务端点。服务将持续到一些不同的地址。这些端点将使用不同的服务契约(接口)。 我不认为你会动态构建和实现接口(但你可以在.net中)。您可能会使用一些预定义的接口。在这种情况下,您应该以某种方式告知客户新的服务合同和地址。要传递和使用此类元数据,您可以:
1)使用某些“静态”的双工方法(服务于客户呼叫方向)。维护服务 - 以自定义格式将服务元数据提供给客户端;
2)对此维护服务使用定期客户呼叫(轮询) - 出于同样的目的;
3)使用定期Web扫描(按地址范围)并解析wsdl以在运行时构建客户端代理。你可以运行" svcutil / sc ..."在运行时生成代码或使用自定义技术(this或this可以帮助);
4)使用中间服务来协调服务和客户端(复杂但功能强大的方法,this可以提供帮助);
5)另外使用wcf discovery(也不是一种简单的方法);
6)使用这些方法的组合。
P.S。您可以使用一个接口,但在服务支持(实现)某种方法时通知客户端。这将是最简单的方法。