Динамические «трубы и фильтры» или «декоратор» - PullRequest
0 голосов
/ 30 сентября 2018

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

Есть также некоторые более сложные условия, такие как.Все запросы пользователя 2 должны быть направлены в int, но запросы к одной конкретной части приложения должны быть направлены в тестовую среду.

Мой первый подход был основан на формулировке, использованной клиентом и архитектором.проекта хотел иметь более общий подход.Мы вместе разработали альтернативу, используя 2 типа «фильтров».У каждого фильтра есть имя, и при его выполнении возвращается имя фильтра, которое должно быть выполнено следующим.Также каждый фильтр имеет карту (пары ключ-значение) в качестве входных данных, которые он использует для чтения или записи.Фильтр первого типа позволяет выполнять ветвление на основе одного или нескольких ключей из карты (в основном оператор switch-case).Второй фильтр считывает значение с карты (необязательно), выбирает некоторую информацию из значения с помощью регулярных выражений (необязательно), определяет выходной формат или значение и присваивает результат ключу на карте.Этот фильтр может иметь несколько таких действий.

Эти фильтры могут быть определены в базе данных и загружены и сохранены, так что контроллер может легко найти их по имени.Когда контроллер получает новый запрос, он извлекает пары ключ-значение на карту и выполняет первый фильтр.Затем он выполняет фильтр, возвращенный предыдущим фильтром, до тех пор, пока не получит имя_файла для выполнения следующего.

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

Заранее спасибо.

...