我對Aspect Orientated Programming(Spring,PostSharp等)非常感興趣。我可以想到我會採用這種方法的幾種方法,主要是記錄或惰性負載。我希望看到其他人都用它做什麼?你使用AOP嗎?和什麼?
請列出您使用AOP解決的senarios。 (hopfully它可能激發一些別人把它撿起來太)
歡呼
骨頭
我對Aspect Orientated Programming(Spring,PostSharp等)非常感興趣。我可以想到我會採用這種方法的幾種方法,主要是記錄或惰性負載。我希望看到其他人都用它做什麼?你使用AOP嗎?和什麼?
請列出您使用AOP解決的senarios。 (hopfully它可能激發一些別人把它撿起來太)
歡呼
骨頭
屬性在C#中可以AOP的例子 - 例如,在AuthorizeAttribute ASP.NET MVC應用授權跨屬性修飾的方法或類的需求。
2007/2008我在一個主要項目中使用了AOP。我工作的公司讓我開發一個定製的CMS來管理他們的客戶。它被集成到我們開發的定製框架中,並可以通過我們的規則引擎根據用戶的元數據有條件地呈現內容。
我們的環境被分爲傳統的開發/質量保證/階段/生產。我們需要一種在環境之間遷移實體的方式,無論是內容還是其他數據。我使用AOP來跟蹤對屬性值的更改,主要是記錄和版本化在下層環境中對實體所做的所有更改。使用反射,通過在目標環境中「重播」源環境中所做的更改來複制實體。我將系統稱爲ChangeFlow,因爲它已集成到工作流系統中。內容批准者可以批准當前版本,以啓動遷移。任何對象都可以通過派生一個公共基類並向需要跟蹤的方法和屬性添加一些屬性來實現「啓用ChangeFlow」。
記錄經常被援引作爲一個例子,但在實踐中我發現這不是很有用。方法內部的日誌記錄往往更有價值。
如上所述,向類或方法添加屬性,然後使用AOP來內省元數據並執行邏輯,這是將該邏輯與代碼分離的好方法。您也可以在單獨的工件(XML)中創建聲明,但我發現該屬性方法非常強大。
dupe http://stackoverflow.com/questions/325558/aspect-oriented-programming-examples – 2008-12-20 16:10:10