WCF Microsofts легок работать с тем, когда Вы создаете веб-сервисы, где каждое сообщение имеет свой собственный веб-метод. WCF генерирует весь WSDL, и все легко.
То, что я хочу сделать, имеют один веб-метод, который принимает несколько различных сообщений (я не хочу добавлять метод чайки каждый раз, когда я добавляю новый тип сообщения). Сами сообщения будут иметь информацию заголовка, которые определяют тип сообщения. После того как я знаю тип сообщения, я буду знать структуру остальной части сообщения.
Единственным путем я нашел, чтобы сделать, это с WCF должно иметь метод, принимают строку, в которой я анализирую как XML и и использование. Однако я не вижу ясного способа опубликовать различные типы сообщений в WSDL; таким образом целый сервис чрезвычайно не документирован.
Кто-либо знает о технике для использования в WCF?
Вы можете написать контракт операции, который принимает любое сообщение, установив для Action значение * и заставив его принимать объект Message:
[ServiceContract]
public interface IMessageContract
{
[OperationContract(Action = "*", ReplyAction = "*")]
Message ProcessRequest(Message request);
}
Объект Message предоставляет вам доступ к заголовкам и имеет методы десериализовать тело.
Чтобы экспортировать собственный WSDL, вам необходимо реализовать IWsdlExportExtension в поведении контракта или операции и присоединить его к своей службе. Это даст вам доступ к WsdlExporter , и вы можете создать ContractDescription самостоятельно и вызвать ExportContract, чтобы он появился в сгенерированном WSDL.