我正在创建与ServiceStack的客户端/服务器应用程序相互通信,并且运行良好,但我还需要访问外部SOAP Web服务。
我尝试使用Soap12ServiceClient
来访问它,但我找不到任何示例,然后我去了实际工作的添加服务引用WCF方式,但创建了大量代码。
是否可以使用Soap12ServiceClient
以同样简单的方式使用JsonServiceClient
发送消息/请求并接收消息/响应?如果是这样,你能帮忙或指点我一个样本吗?
答案 0 :(得分:1)
由于ServiceStack's C# Service Clients的所有IServiceClient
都实现了相同的[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!"));
}
}
,因此我们无法确定您在哪里被卡住,因此可以以相同的方式使用它们。以下是ServiceStack所有内置C#服务客户端calling the same Hello World service的示例:
{{1}}
虽然SOAP的工作方式类似于任何其他C#客户端,但以这种方式使用它并不常见,因为如果您能够使用通用的C#SOAP服务客户端,那么您也可能使用任何其他服务客户端比SOAP更快,更有弹性,更具版本性 - 除了能够生成客户端代理之外,它实际上没有其他格式的兑换质量,无论如何你都不想这样做。
如果你没有决定使用哪个端点或格式,我应该使用I recommend reading my Interview on InfoQ来讨论SOAP的缺点以及使用其他格式的好处。