我想描述一下在應用程序設計中有效參與AOP的可能情況。所有我迄今遇到的是:可能的AOP用例有哪些?
- 記錄相關
- 安全檢查
- 事務管理
- 的調整遺留應用程序
還有什麼呢?
(它不必是必然Spring基於代理的AOP - 相當的JBoss AOP)
我想描述一下在應用程序設計中有效參與AOP的可能情況。所有我迄今遇到的是:可能的AOP用例有哪些?
還有什麼呢?
(它不必是必然Spring基於代理的AOP - 相當的JBoss AOP)
我可以舉兩個例子,我們使用它:
在JMX中自動註冊對象以進行遠程管理。如果一個類註解了我們的@AutoRegister
註解,我們有一個方面可以監視該類的新實例並自動將它們註冊到JMX中。
審計日誌(黃金標準AOP使用情況)。它有點粗糙,但一般的方法是註釋代表一些可審計行爲的方法。與像Spring Security的結合,我們可以得到一個不錯的主意:
除了列出的所有內容之外,AOP的有效使用還可以進行驗證。驗證用戶輸入或業務對象。你必須看
相關文章。
方法級別的緩存,如果你的方法是無狀態的(我是指返回時用相同的參數值重複調用相同的值)。這對DAO方法更有效,因爲它避免了數據庫命中。
要查看AOP的適用範圍,我真的建議您閱讀Aspect-Oriented-Software-Development-Use-Cases。本書闡述了使用AOP的功能和非功能需求的用例。之後,你會看到,方面可以用於更多的要求比日誌記錄,追蹤,安全等。
我也會推薦用於幾個方面:
隨着春的tcServer(開發者),你可以輕鬆地監視你所有的Spring Bean與 @Component註釋。你可以看到使用的時間,輸入和返回的數據,包括例外。
INotifyPropertyChanged和類似的恐懼。
基本上只要有像這樣的代碼 - 使用一個方面,你就完成了。
我們將其用於軟件許可證管理,即只有當計算機安裝了某些特定許可證時才允許軟件運行。這與您列出的用途沒有什麼不同,因爲它是一種安全檢查。
我發表了一篇博客條目描述實際執行代碼合同here
運行時檢查。 Code Contracts for .NET使用AOP爲
運行時檢查。我們的二進制重寫器通過注入契約來修改程序,這些契約被檢查爲程序執行的一部分。
我們使用AspectJ來完成AOP。除上述提到的用例如下:
「可能的情況下」?這是一個近乎*無限的*集合。然而,並非所有人都是一個好主意。把一切都可能。有什麼辦法縮小或集中這個問題嗎? – 2010-02-04 02:57:45
閱讀順利:問題包含「在應用程序設計中有效啓用AOP的可能案例」。我的意思是使用AOP是個好主意。對不起,如果問題不清楚。 – 2010-02-04 02:59:28
應該是社區維基 – skaffman 2010-02-04 09:54:00