АОП можно использовать для обмена данными между различными запущенными потоками в процессе приложения?

ОБНОВЛЕНИЕ: мне не ясно, в каком контексте АОП должен использоваться? Поскольку мы можем использовать AOP для целей ведения журнала, безопасности (аутентификации), предложите несколько других сценариев, в которых мы можем использовать преимущества AOP.

Можно ли использовать AOP для обмена данными между различными запущенными потоками в процессе приложения?

2 ответа

Решение

Аспектно-ориентированное программирование идеально, когда вам нужно уменьшить "сквозную" функциональность в вашей базе кода. Это означает, что у вас есть общий код (ведение журнала, безопасность), который должны реализовать классы, но вы не можете абстрагировать эту функциональность в базовые классы.

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

Ресурсы

В настоящее время AOP не встроен в C#, но следующие платформы могут создавать AOP:

АОП для данных потока

Как правило, использование AOP для обмена данными между потоками не является подходящим способом. Для этого есть другие методы, доступные разработчикам:

  • [ThreadStaticAttribute] Добавьте этот атрибут к полям, чтобы указать среде выполнения.NET, что следующее поле будет уникальным для нескольких потоков.

  • Синхронизация (наиболее распространенная техника) Использование Mutexes, Semaphores, ReaderWriter замки и EventWaitHandles синхронизировать доступ к локальным или глобальным данным из нескольких потоков. В C# lock утверждение является синтаксическим сахаром для Monitor класс, который можно использовать для "блокировки" доступа к объекту из одного потока.

Мне нравится думать о AOP как об умном закулисном генерировании кода (время компиляции) / выполнении (время выполнения), так что вы можете делать практически все. Он имеет все преимущества (и даже больше) традиционной генерации кода без недостатков (например, удобство сопровождения).

Другие вопросы по тегам