gpt4 book ai didi

c# - 使用共享类型创建 Web 服务和客户端

转载 作者:太空狗 更新时间:2023-10-29 23:19:00 25 4
gpt4 key购买 nike

我创建了两个 wsdl 文件,其中包含从 xsd 架构文件导入的共享类型。

之后,我使用 wsdl.exe 工具生成的带有参数/serverInterface 的接口(interface)创建了 Web 服务。

第一个 web 服务,有 web 方法“RegisterData”,将一些复杂的对象放入队列中,由系统“A”处理。由于此方法返回 bool 值(告诉我们对象已成功注册)。

第二个 web 服务,有 web 方法“UpdateData”基于这个相同的对象更新系统“B”中的一些数据,在系统“A”上的过程中发生了变化。

所以在系统“A”中,我必须为第二个 Web 服务创建客户端,我将在其中使用这个修改后的复杂对象 us 参数调用方法“UpdateData”。

但是当我在 Visual Studio 中创建此客户端时(通过添加 Web 引用或添加服务引用),我必须为客户端创建一些命名空间。然后当我尝试调用“UpdateData”agument 时,对于从第一个 Web 服务“RegisterData”方法接收到的同一个对象有不同的命名空间。

我想创建第一个 web 服务和第二个 web 服务客户端,我可以在它们之间使用相同类型的对象。

非常感谢您的帮助。

最佳答案

我认为这对于 ASMX 网络服务是不可能的。

不过,WCF 确实支持这一点。


WCF 链接:


实际上,我想我可能误读了你的问题。我虽然你试图在客户端和服务器之间共享相同的类型。 ASMX 无法做到这一点。但是,您似乎正试图在两个客户端代理之间共享相同的类型。您可以使用 WSDL.EXE 工具轻松做到这一点。

考虑一个模式 DataTypes.xsd 和导入它的两个 WSDL 文件 ServiceA.wsdl 和 ServiceB.wsdl。要创建服务器接口(interface),请使用:

wsdl /serverInterface /n:SharedTypes.Servers /out:Services.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd

这将创建接口(interface),您可以实现这些接口(interface)来创建您的服务。这些接口(interface)都将使用一组从 DataTypes.xsd 创建的类。要创建代理类,只需使用:

wsdl /n:SharedTypes.Proxies /out:Proxies.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd

请注意,您不需要 /sharedTypes 开关。那有不同的目的。当您需要从服务下载 WSDL 和任何 XSD 时,它用于组合外部服务类型。

我已经使用像您这样的示例对此进行了尝试,ServiceA 将一条消息发布到队列中,然后客户端拾取该消息并将其发送到 ServiceB。它工作得很好。

关于c# - 使用共享类型创建 Web 服务和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3154408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com