Как мне выполнять операции ввода-вывода в точках расширения WCF? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть служба REST WCF, для которой мне нужно выполнить некоторую обработку перед каждым вызовом метода.Примеры того, что я ищу:

  • Проверка токена ответа Google ReCaptcha, который требует вызова API Google;

  • Извлечение данных изслужбы и вставки извлеченных данных в параметры, передаваемые методу.

Поскольку эта служба доступна в Интернете и вызывается непосредственно из кода JavaScript, запущенного в клиентских браузерах через AJAX, для безопасностипричин, по которым мне действительно необходимо выполнять такую ​​обработку на уровне сервисов.

Я думал об использовании одной из точек расширяемости WCF, таких как инспекторы сообщений или параметров, однако все они предоставляют только синхронные интерфейсы и, в идеале,вызовы службы должны быть асинхронными.

При поиске решения я обнаружил следующее утверждение Николаса Аллена :

Инспекторы сообщений являются синхронной расширяемостьюпункт обслуживания отправка.Вы не должны выполнять операции ввода-вывода или любые другие виды блокирования через инспектора сообщений, иначе масштабируемость вашего сервиса будет серьезно ограничена.

Он дает некоторые советы о том, как действовать:

Асинхронные операции могут быть либо перенесены на уровень обмена сообщениями путем их реализации в канале, либо перенесены на уровень приложений, реализовав их как часть операции службы.Синхронные операции блокировки предпочтительнее, чем переход на уровень приложения.

Если я правильно понимаю, реализуя их как часть операции службы , значит, я быЯ должен выполнять обработку вручную в начале каждого метода, что я и стараюсь избегать.

Я не очень знаком с каналами WCF, но из того, что я видел, кажется, чтоэто потребует много работы ... Это действительно путь или есть более простая альтернатива для того, чего я пытаюсь достичь?

...