Я не уверен, где вы застряли, поскольку все ServiceStack's C# Service Clients реализуют то же самое IServiceClient
, чтобы их можно было использовать одинаково. Вот пример всех ServiceStack встроенных клиентов C# службы calling the same Hello World service:
[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, это не-общее, чтобы использовать его таким образом, потому что, если вы в состоянии используйте общий клиент службы SOAP SOAP, который, вероятно, также может использовать любой из других клиентов службы, которые все быстрее, более устойчивы и более доступны для версий, чем SOAP, - который не имеет эффективного качества для других форматов, кроме своих возможностей генерировать клиентские прокси, которые, как вы сказали, вы не хотите делать.
Если вы не определились с какой конечной точкой или форматом вы должны использовать I recommend reading my Interview on InfoQ, в котором обсуждаются недостатки SOAP и преимущества использования других форматов.
Старый вопрос, но мне было интересно сделать то же самое - использовать SOAP-клиент ServiceStack для вызова внешней конечной точки SOAP вместо того, чтобы использовать раздутые, созданные прокси-серверы Visual Studio. После небольшого проб и ошибок я заметил, что Soap11ServiceClient ServiceStack и Soap12ServiceClient имеют жестко закодированные конечные точки «/ Soap11» и «/ Soap12». Так, к сожалению, это невозможно. – PatrickSteele