четверг, 25 ноября 2010 г.

“Реактивные расширения” и асинхронные операции

  • Прежде чем переходить непосредственно к работе с асинхронными операциями с помощью библиотеки Reactive Extensions (или Rx), важно понять причины возникновения этой библиотеки, и какие основные принципы положили разработчики в ее основу.

    Одним из наиболее типичных отношений между двумя классами является отношение использования (“uses a” relationship), когда один класс используют функциональность других классов для решения своих задач. Мы с подобным отношением сталкиваемся ежедневно, даже не задумываясь о нем: наши классы используют строки, целые числа, классы работы с консолью, сетью, файлами и другими ресурсами. Говорят, что объект класса A взаимодействует (interact) с объектом класса B и получает (вытягивает, pulls) у него необходимые данные; такая модель взаимодействия называется pull-моделью (или интерактивной моделью) (рисунок 1а). С другой стороны, часто возникает ситуация, когда объект класса A не знает, когда будут доступны необходимые ему данные в классе B, и в таком случае гораздо удобнее, чтобы объект класса B «сказал» об этом самостоятельно и «вытолкнул» (push) некоторые данные, когда они станут доступны. В этом случае говорят, что объект класса А реагируют (react) на возникшие событие и соответствующая модель называется push-моделью или реактивной моделью (рисунок 1б) [Meijer RX1].

     Rx1
    Рисунок 1а. Класс A взаимодействует с классом B

     Rx2
    Рисунок 1б. Класс A реагирует на события от класса B

    среда, 3 ноября 2010 г.

    Pragmatic Podcast с Робертом Мартином

    Pragmatic PodcastsУ меня неоднозначное отношение к техническим подкастам. С одной стороны, если вы хорошо знакомы с темой, то вы вряд ли узнаете много нового, а если тема для вас нова, то, познакомиться с ней нормально за час аудиоматериала весьма сложно. Кроме того, далеко не каждую тему из области разработки ПО возможно описать без примеров кода, диаграмм и рисунков. Но тем не менее, время от времени попадаются достаточно интересные подкасты, в которых рассказывается о новинках в той или иной области, или проводится интервью с интересным и, зачастую, известными товарищами, которые даже в столь жестких рамках умудряются поведать много чего интересного.

    Вот и мне совсем недавно попался “прагматичный” подкаст с Робертом Мартином, "товарищем" достаточно известным, автором принципов S.O.L.I.D. (точнее этой аббревиатуры), нескольких книг, ну и вообще человеком с более чем сорокалетним стажем в нашей с вами области. Поскольку немалая толика этой известности приходится именно на аббревиатуру S.O.L.I.D. не удивительно, что в каждом интервью с участием "дядюшки" Боба ему задается этот вопрос. Но в данном случае мой интерес вызвало не то, что Роберт все таки помнит об этих принципах, а то, что этим принципам уже без малого 20 лет. По словам Роберта этот термин появился где-то в 1993 году в результате общения в USENET. Получается, что самому понятию понадобилось без малого десятилетие на то, чтобы обрести известность.