Мне поступило задание разобраться с веб-сервисами в принципе и узнать о возможностях написания
сервиса (не клиента сервиса) на PHP, к которому можно будет обращаться в соответствии со стандартами WS и WS-Security. Также требовалась совместимость с .NET-клиентами (в моём случае бескостыльной работы с WCF было достаточно).
После непродолжительного гугления стало ясно, что ни стандартная библиотека PHP SOAP, ни Zend Framework, ни что-то ещё, кроме WSF/PHP, не поддерживают WS-Security без напильника, а найденные на скорую руку напильники предлагали только определённое решение, например, UsernameToken с plaintext-паролем (в идеале нужны и подписи, и шифрование, и сертификаты, и так далее и тому подобное).
Данное решение не описывает все возможности фреймворка WSF/PHP, такие как генерация WSDL, так как всё это описано в документации и не требует каких-то нетривиальных с точки зрения документации решений. Работать будем с версией библиотеки
2.1.0.
Читать дальше →
В качестве вступления
Модель push-нотификаций является распространённой моделью для обмена сообщениями. Она подразумевает не получение информации по запросу, а немедленную её передачу отправителю при появлении этой информации на сервере.
Стандартный подход с ипользованием wsDualHttpBinding
Возможность создания push-механизма предоставляет и WCF. Этот фреймворк позволяет создать push-сервис с использованием wsDualHttpBinding контракта. Такой контракт позволяет для каждого запроса определить метод обратного вызова, который будет вызван при наступлении какого-либо события.
Если применить этот механизм к системе обмена сообщениями, то получим следующий алгоритм:
Читать дальше →