4

我正在创建与 ServiceStack 的客户端/服务器应用程序互通,并且运行良好,但我还需要访问外部 SOAP Web 服务。

我尝试使用Soap12ServiceClient来访问它,但找不到任何示例,然后我采用了实际有效的添加服务引用 WCF 方式,但创建了大量代码。

是否可以使用与发送消息/请求和接收消息/响应Soap12ServiceClient相同的简单方式?JsonServiceClient如果是这样,你能帮忙或给我一个样本吗?

4

1 回答 1

1

我不确定你在哪里卡住了,因为所有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 的缺点和使用其他格式的好处。

于 2013-03-14T22:57:22.610 回答