动态生成或更新OperationContract

时间:2011-03-20 09:31:05

标签: c# asp.net wcf rest soap

有没有办法动态生成或更新OperationContract?

例如:

  1. 用户将点击控制面板屏幕上的按钮。
  2. Web服务或WCF服务将使用新功能进行更新。
  3. 其他用户可以随时随地使用新功能。
  4. 我已经看到,在行动中,但是,我不知道如何实现这一点,我只能在Visual Studio上创建或生成OperationContract,但在服务已经托管时不能动态

    请帮忙。

    非常感谢

2 个答案:

答案 0 :(得分:0)

您可以使用System.Reflection动态构建程序集。检查此链接:

http://www.williamb.net/defining-and-hosting-wcf-service-contracts-at-runtime

答案 1 :(得分:0)

这对SOAP服务是不可能的。 SOAP服务定义作为WSDL公开的契约。修改服务后,必须让客户知道更改,因为客户端必须知道有新操作,可能还有新传输的数据。反射不是一种选择,因为客户通常无法访问由service =>创建的程序集。客户端无法通知必须序列化和反序列化的新操作和新数据。

这可以通过REST服务来完成,因为在REST服务中,您正在定义可通过其URI和HTTP方法访问的资源。但是,您必须再次通知客户端新资源可用。这通常通过浏览资源来实现。您拥有顶级资源,其中包含有关其他资源及其URI的信息。您只需将新资源的URI添加到主资源中。当前版本的WCF使得这种方法非常复杂,因为您考虑的是资源,但仍需要在操作方面工作。

我仍然不明白为什么人们仍然试图以这种方式构建动态应用程序。按下按钮并添加新方法将非常复杂。也许如果你修改你的问题并解释你想做什么,你会得到更好的想法如何实现。