Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Каналы и Фильтры

Читайте также:
  1. Вентиляционные каналы и воздуховоды, материалы для их изготовления, крепления к строительным конструкциям
  2. Возможности окна Сетевые фильтры
  3. Г) ножные янские каналы.
  4. Г-образные частотные фильтры на катушке индуктивности и резисторе
  5. Г-образные частотные фильтры на конденсаторе и резисторе
  6. Зертханалық жұмыс №5 (2сағат).Ақпаратты жіберу жылдамдығы мен байланыс каналының өткізу қабілетін анықтау.
  7. Каналы волатильности

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

Для достижения такой функциональности часто прибегают к инкапсуляции её полностью внутри одного компонента, что очень часто приводит к резкому усложнению компонента, затрудняет (а как правило делает вообще невозможным) его повторное использование, затрудняет отладку и тестирование, а так же снижает возможность параллельной работы нескольких разработчиков.

 

Выходом из описанной ситуации может послужить применение шаблона Цепочка ответственности (Chain of Responsibility), который применительно к системам обмена сообщениями и в соответствующих архитектурах носит названия Каналы и Фильтры (Pipes and Filters). В соответствии с этим шаблоном, функциональность разбивается на отдельные компоненты, которые называются Фильтрами. Фильтры имеют как минимум один входной и один выходной интерфейс (например, метод, который принимает один параметр и возвращает одно значение). Этот интерфейс должен быть одинаковый для всех фильтров, т.е. фильтры являются взаимозаменяемыми по интерфейсу. Фильтры объединяются в цепочки при помощи каналов (Pipe) в нужном порядке. Таким образом, в результате получается необходимая суммарная функциональность чётко декомпозированная по группам в виде отдельных фильтров.

 

Положительными особенностями такого подхода является следующее:

 

Однако такой подход не лишён недостатков. Среди них наиболее значительными являются:

 

Самым очевидной реализацией канала (Pipe) является канал передачи сообщений (Message Channel) предоставляемый инфраструктурой обмена сообщениями (Messaging Subsystem). Однако, такой подход, в случае если фильтры находятся в рамках одного адресного пространства (в рамках одного процесса) может быть заменён на более эффективный способ обмена данными. Поэтому хорошее архитектурное решение не должно делать предположение о нижележащей реализации каналов. Это позволит в случае простых однопроцессных конфигураций существенно повысить эффективность использования системных ресурсов, а так же повысить производительность.

 

В самом простом случае фильтр имеет один входной и один выходной интерфейс, однако, фильтры могут иметь так же и несколько входных и несколько выходных интерфейсов (например, в случае с фильтрами-маршрутизаторами сообщений, Message Router).

 

Цепочки фильтров могут быть организованы двумя способами:

 

 

 

 

 

Параллельная обработка (если она принципиально возможна) способна сократить время прохождения запроса (или обработки сообщения) по цепочки фильтров, а так же повысить пропускную способность. Более того, в некоторых случаях фильтры могут представлять собой некоторую функциональность, которая может быть выполнена только на определённом компьютере (например, запрос к какому либо централизованному серверу). Соответственно, если удаётся сделать несколько запросов параллельно – то это может благотворно сказаться на общей производительности решения. Параллельность, однако, возможна лишь в том случае если входные параметры фильтров выполняющихся параллельно не зависят от выходных значений друг-друга (в указанно примере входные параметры фильтров B и C завысят от выходных значений фильтра A, но они не зависят друг от друга, поэтому они в принципе могут выполняться параллельно).

 


Дата добавления: 2015-10-24; просмотров: 125 | Нарушение авторских прав


Читайте в этой же книге: Лекция 2. Основные определения ООП. | Мобильные агенты (Applets and other mobile code) | Введение в Web-приложения и сервлеты | Гранулярность (granularity) | Factory Method | Abstract Factory | Template Method | Структурные шаблоны | Аспектно-Ориентированное Программирование (Aspect Oriented Programming, AOP) | Подходы к межсистемной интеграции |
<== предыдущая страница | следующая страница ==>
Интеграция с помощью разделяемой базы данных| Уровни преобразования данных

mybiblioteka.su - 2015-2024 год. (0.008 сек.)