Мне поступило задание разобраться с веб-сервисами в принципе и узнать о возможностях написания
сервиса (не клиента сервиса) на PHP, к которому можно будет обращаться в соответствии со стандартами WS и WS-Security. Также требовалась совместимость с .NET-клиентами (в моём случае бескостыльной работы с WCF было достаточно).
После непродолжительного гугления стало ясно, что ни стандартная библиотека PHP SOAP, ни Zend Framework, ни что-то ещё, кроме WSF/PHP, не поддерживают WS-Security без напильника, а найденные на скорую руку напильники предлагали только определённое решение, например, UsernameToken с plaintext-паролем (в идеале нужны и подписи, и шифрование, и сертификаты, и так далее и тому подобное).
Данное решение не описывает все возможности фреймворка WSF/PHP, такие как генерация WSDL, так как всё это описано в документации и не требует каких-то нетривиальных с точки зрения документации решений. Работать будем с версией библиотеки
2.1.0.
Читать дальше →
Каждый прогер наверняка использовал паттерн «Компоновщик», а большинство из нас также сталкивалось с необходимостью реализовать его в своем проекте. И часто так получается, что каждая его реализация налагает особые требования на определяемую бизнес-логику, при этом с точки зрения работы с иерархической структурой мы хотим иметь одинаково широкий набор возможностей: одних методов Add и Remove часто недостаточно, так почему бы не добавить Contains, Clear и с десяток других? А если еще нужны специальные методы обхода поддеревьев через итераторы? И вот такую функциональность хочется иметь для различных независимых иерархий, а также не обременять себя необходимостью определять реализацию таких методов в каждом из множества элементов Composite. Ну и листовые компоненты тоже не помешало бы упростить.
Чуть ниже я предложу свой вариант решения такой проблемы, применительно к возможностям C#.
Читать дальше →