WCF очень нравится мне как фрэймворк, упрощающий создание коммуникационного слоя. Но WCF's design style меня не устраивает. Я думаю, что создание нового метода для каждого DTO — это не самое хорошее решение, поэтому попытался решить эту проблему.
WCF имеет некоторые ограничения:
- Не поддерживает перегрузку методов.
- Не имеет универсального API.
- Service Contract зависит от бизнес-требований.
- Версионность должна выполняться на уровне DataContract и методов, имя операции должно быть универсальным.
- Другие не .NET клиенты должны создавать столько клиентов, сколько сервисов у вас есть.
Я думаю, что подход в стиле RPC (Remote Procedure Call) не самый подходящий. Сервис должен быть повторно используемым, а влияние бизнес-требований на него должно быть минимальным. Я думаю, что удаленное API должно соответствовать следующим требованиям:
- Обладать стабильным и универсальным интерфейсом.
- Передавать данные в соответствии с паттерном DTO.
Веб-сервис, основанный на сообщениях, преодолевает большинство ограничений WCF путем добавления абстракции сообщения.
После прочтения статьи вы узнаете, как строить повторно используемые SOAP веб-сервисы, основанные на сообщениях (и перестанете постоянно плодить новые).