Мы довольно долгое время использовали аспектJ в одном из моих больших проектов. Проект состоял из нескольких веб-служб, каждая из которых выполняла несколько функций, которые служили интерфейсом для сложной системы обработки / запросов документов. Где-то около 75 тысяч строк кода. Мы использовали аспекты для двух относительно незначительных частей функциональности.
Во-первых, отслеживание потока приложений. Мы создали аспект, который запускался до и после каждого вызова функции, чтобы распечатать «вошла 'функция'» и «вышла из 'функции'». С помощью селектора функций (может быть, pointcut? Я не помню правильного имени) мы смогли использовать его как инструмент отладки, выбирая только те функции, которые мы хотели отслеживать в данный момент. Это было действительно хорошее использование аспектов в нашем проекте.
Второе, что мы сделали, - это метрики для конкретных приложений. Мы помещаем аспекты в методы наших веб-сервисов для сбора времени, информации об объектах и т. Д. И выгружаем результаты в базу данных. Это было хорошо, потому что мы могли фиксировать эту информацию, но при этом хранить весь этот код захвата отдельно от «реального» кода, который выполнял эту работу.
Я читал о некоторых хороших решениях, которые аспекты могут предложить, но я все еще не уверен, что они действительно могут сделать то, что вы не смогли бы сделать (может быть, лучше) с «нормальной» технологией. Например, я не мог придумать ни одной важной функции или функциональности, которые требовались для любого из наших проектов, которые не могли бы быть выполнены так же легко без аспектов - где я нашел полезные аспекты, это те второстепенные вещи, о которых я упоминал. .
person
Matt McMinn
schedule
21.08.2008