我正在创建与 ServiceStack 的客户端/服务器应用程序互通,并且运行良好,但我还需要访问外部 SOAP Web 服务。
我尝试使用Soap12ServiceClient
来访问它,但找不到任何示例,然后我采用了实际有效的添加服务引用 WCF 方式,但创建了大量代码。
是否可以使用与发送消息/请求和接收消息/响应Soap12ServiceClient
相同的简单方式?JsonServiceClient
如果是这样,你能帮忙或给我一个样本吗?
我正在创建与 ServiceStack 的客户端/服务器应用程序互通,并且运行良好,但我还需要访问外部 SOAP Web 服务。
我尝试使用Soap12ServiceClient
来访问它,但找不到任何示例,然后我采用了实际有效的添加服务引用 WCF 方式,但创建了大量代码。
是否可以使用与发送消息/请求和接收消息/响应Soap12ServiceClient
相同的简单方式?JsonServiceClient
如果是这样,你能帮忙或给我一个样本吗?
我不确定你在哪里卡住了,因为所有ServiceStack 的 C# 服务客户端都实现了相同的IServiceClient
,因此它们可以以相同的方式使用。这是一个调用相同 Hello World 服务的所有 ServiceStack 的内置 C# 服务客户端的示例:
[TestFixture]
public class HelloWorldServiceClientTests
{
public static IEnumerable ServiceClients
{
get
{
return new IServiceClient[] {
new JsonServiceClient(Config.ServiceStackBaseUri),
new JsvServiceClient(Config.ServiceStackBaseUri),
new XmlServiceClient(Config.ServiceStackBaseUri),
new Soap11ServiceClient(Config.ServiceStackBaseUri),
new Soap12ServiceClient(Config.ServiceStackBaseUri)
};
}
}
[Test, TestCaseSource("ServiceClients")]
public void HelloWorld_with_Sync_ServiceClients(IServiceClient client)
{
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
Assert.That(response.Result, Is.EqualTo("Hello, World!"));
}
}
尽管 SOAP 与任何其他 C# 客户端的工作方式相似,但以这种方式使用它并不常见,因为如果您能够使用通用 C# SOAP 服务客户端,您也可能能够使用任何其他服务客户端所有这些都比 SOAP 更快、更有弹性和更可版本化 - 除了能够生成您说您无论如何都不想做的客户端代理之外,它实际上没有其他格式的可取之处。
如果您不确定应该使用哪种端点或格式,我建议您阅读我在 InfoQ 上的采访,其中讨论了 SOAP 的缺点和使用其他格式的好处。