Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态生成或更新OperationContract_C#_Asp.net_Wcf_Rest_Soap - Fatal编程技术网

C# 动态生成或更新OperationContract

C# 动态生成或更新OperationContract,c#,asp.net,wcf,rest,soap,C#,Asp.net,Wcf,Rest,Soap,有没有办法动态生成或更新OperationContract 例如: 用户将单击控制面板屏幕上的按钮 web服务或WCF服务将使用新功能进行更新 其他用户可以从任何地方使用新功能 我已经看到了这一点,但是,我不确定如何实现这一点,我只能在Visual Studio上创建或生成OperationContract,而不能在服务已托管的情况下动态创建或生成OperationContract 请帮忙 非常感谢您可以使用System.Reflection动态构建程序集。检查此链接: 这对于SOAP服务是不可

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

例如:

  • 用户将单击控制面板屏幕上的按钮
  • web服务或WCF服务将使用新功能进行更新
  • 其他用户可以从任何地方使用新功能
  • 我已经看到了这一点,但是,我不确定如何实现这一点,我只能在Visual Studio上创建或生成OperationContract,而不能在服务已托管的情况下动态创建或生成OperationContract

    请帮忙


    非常感谢

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


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

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


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

    你在哪里看到了这一点?您也意识到您的客户机也需要更新,对吗?svcutil不是必需的。使用动态代理客户端是可行的。