【问题标题】:Generating or Updating OperationContract on the fly即时生成或更新 OperationContract
【发布时间】:2011-03-20 09:31:04
【问题描述】:

有没有办法即时生成或更新 OperationContract?

例如:

  1. 用户将单击控制面板屏幕上的按钮。
  2. Web 服务或 WCF 服务将使用新功能进行更新。
  3. 然后其他用户可以在任何地方使用新功能。

我已经看到了,但是,我不确定如何实现这一点,我只能在 Visual Studio 上创建或生成 OperationContract,但在服务已经托管时不能即时创建或生成.

请帮忙。

非常感谢

【问题讨论】:

  • 您在哪里看到过这种情况?而且您确实意识到您的客户也需要更新,对吗?

标签: c# asp.net wcf rest soap


【解决方案1】:

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

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

【讨论】:

  • svcutil 不是必需的。它可以使用动态代理客户端。
【解决方案2】:

这对于 SOAP 服务是不可能的。 SOAP 服务定义了作为 WSDL 公开的契约。一旦你修改了服务,你必须让你的客户知道变化,因为客户必须知道有新的操作,可能还有新的传输数据。反射不是一个选项,因为客户端通常无权访问由服务创建的程序集 => 客户端无法收到有关必须序列化和反序列化的新操作和新数据的通知。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多