У нас есть сервер, который имеет несколько типов api (пользовательский XML-API на основе httplistener, SOAP API на основе WCF и REST API на основе WEB API). Мы хотим переместить все API в WEB API (есть много причин), и он должен быть обратно совместимым.Как реализовать SOAP-сервис на WebAPI
Одна из причин поддержки структуры URL: services/service1. услуги/service2. И в этом случае он должен быть на одном порту. Это приложение для интрасети, которое распространяется среди нескольких клиентов, и его следует легко развернуть, установить. Таким образом, мы не можем иметь длинную конфигурацию на стороне клиента (прокси и другие).
Есть ли простой способ для реализации SOAP-сервиса на веб-api? На первый взгляд должен быть простой способ проанализировать httprequest, чтобы набрать мыльный конверт (на основе существующего контракта) и сериализовать ответ. Конечно, в контракте много действий и типов данных.
PS: Я не хочу смотреть в servicestack :)
Update:
Проблема, которую я описал выше, может быть решена proxing запрос HTTP на мыло службы (Он может работать только с BasicHttpBinding без безопасности Если службы WCF требует проверки подлинности NTLM не будет работать):.
[HttpPost]
public async Task<IHttpActionResult> SoapAction()
{
var httpClient = new HttpClient();
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8111/soap")
{
Content = this.Request.Content
};
foreach (var header in this.Request.Headers)
{
httpRequestMessage.Headers.Add(header.Key, header.Value);
}
var responseMessage= await httpClient.SendAsync(httpRequestMessage).ConfigureAwait(false);
return ResponseMessage(responseMessage);
}
Но я все еще хочу знать, есть ли SOAP анализатор в C#, потому что мой сервер поддерживает аутентификацию NTLM.
Мы хотим иметь такую же структуру URL: services/service1. услуги/service2. И в этом случае он должен быть на одном порту. Это приложение для интрасети, которое распространяется среди нескольких клиентов, и его следует легко развернуть, установить. Таким образом, мы не можем иметь длинную конфигурацию на стороне клиента (прокси и другие). Конечно, мы можем создать внутренний прокси.Но нормальный мыльный парсер выглядит лучше. PS: Я не могу отредактировать этот комментарий. – Andection
Все API, конечно, разделяют одну и ту же логику ... – Andection
@Andection Обновите ответ. Я действительно не поклонник парсеров. Для меня это в два раза больше работы и неприятностей. – jaimetotal