在运行时休息服务 .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。您可以使用一个接口,但在服务支持(实现)某种方法时通知客户端。这将是最简单的方法。
是否可以在运行时向休息服务添加操作合同?
例如,我们有一个在端点下可用的服务: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。您可以使用一个接口,但在服务支持(实现)某种方法时通知客户端。这将是最简单的方法。