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

时间:2016-11-24 22:20:56

标签: asp.net .net rest wcf restful-architecture

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

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

但是现在我想在运行时添加两个额外的operationContracts:比如getAdress和GetNumber。

1 个答案:

答案 0 :(得分:0)

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

1)使用某些“静态”的双工方法(服务于客户呼叫方向)。维护服务 - 以自定义格式将服务元数据提供给客户端;

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

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

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

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

6)使用这些方法的组合。

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