第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

日志記錄,面向方面的編程和依賴注入-試圖使所有事情變得有意義

日志記錄,面向方面的編程和依賴注入-試圖使所有事情變得有意義

縹緲止盈 2019-11-12 13:13:37
我知道日志記錄是AOP的主要用例。另外,日志記錄包裝器還作為您要使用DI的情況的示例,以便類不與特定的日志記錄實(shí)現(xiàn)耦合。但是,有些人認(rèn)為記錄包裝器是反模式。首先,這種觀點(diǎn)是因?yàn)樵诖蠖鄶?shù)情況下,包裝器趨于簡單化并刪除了日志記錄框架特有的許多功能。如果要實(shí)現(xiàn)這些特定功能,為什么不直接使用框架。我知道Common.Logging門面嘗試為您抽象出log4Net,EntLib和NLog的大量功能。但是,即使在這里,我們?nèi)匀粚?duì)Common.Logging有所依賴。不是以關(guān)于接口等的代碼/單元測試方式進(jìn)行的,而是如果項(xiàng)目終止(自上一個(gè)發(fā)行版以來已經(jīng)一年多了),或者您希望稍后切換到不受支持的記錄器,則可能會(huì)導(dǎo)致問題。也就是說,如果通過AOP實(shí)現(xiàn)日志記錄,是否甚至有必要使用DI作為日志記錄依賴項(xiàng)(即,為什么不直接引用NLog)呢?是的,代碼的AOP部分將緊密耦合,但是一個(gè)人要進(jìn)行單元測試的類的邏輯沒有日志依賴(至少在編織發(fā)生之前)。在這一點(diǎn)上,我有點(diǎn)迷茫(我還沒有嘗試過AOP)。編織后,未將DI用于AOP代碼是否會(huì)對(duì)單元測試被測方法造成問題?還是可以在不編寫AOP代碼的情況下進(jìn)行一次單元測試?除非軟件用戶需要日志記錄,否則我不確定測試使用模擬進(jìn)行日志記錄有多大用處。我認(rèn)為被測方法的業(yè)務(wù)邏輯是大多數(shù)測試所感興趣的。最后,如果要使用TDD / BDD,是否就不必使用DI來記錄AOP代碼中的日志依賴項(xiàng)?還是只是不試駕 AOP呢?如您所見,我正在嘗試了解最實(shí)際的方法是開發(fā)一種應(yīng)用程序,該應(yīng)用程序?qū)⑼瑫r(shí)使用AOP來解決交叉問題,并使用DI來進(jìn)行設(shè)計(jì)/測試。由于AOP相對(duì)較新,并且日志記錄是最常見的示例,因此推薦的方法是什么?
查看完整描述

2 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

日志記錄不是服務(wù),而是一個(gè)跨領(lǐng)域的問題。因此,最好用Decorator實(shí)現(xiàn)。但是,添加大量Decorators只是為了啟用各種不同服務(wù)的日志記錄會(huì)違反DRY,在這種情況下,您可以將這些Decorators進(jìn)一步發(fā)展為單個(gè)Interceptor。


盡管可以使用IL編織實(shí)現(xiàn)AOP,但更好的選擇是使用支持動(dòng)態(tài)攔截的DI容器,因?yàn)樗且环N輕量級(jí)的解決方案。


這使您能夠?qū)⒕唧w服務(wù)與日志完全脫鉤。那么,在這種情況下,我會(huì)說沒有理由包裝任何特定的日志記錄框架,因?yàn)槿绻敫娜罩居涗浛蚣埽瑒t只需更改單個(gè)Interceptor。


這是一個(gè)討論用于裝飾的裝飾器和攔截器的示例(非常類似于記錄)。

查看完整回答
反對(duì) 回復(fù) 2019-11-12
?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

動(dòng)態(tài)攔截也是 AOP :)但是,我將您的問題解釋為與IL編織有關(guān)的AOP有關(guān)。在那種情況下,對(duì)于一個(gè)未開發(fā)的項(xiàng)目,我絕對(duì)看不到它有任何好處,但是在遺留代碼上,它可能是可行的,因?yàn)樗试S您將方面應(yīng)用于靜態(tài),內(nèi)部和/或私有類型和成員,而動(dòng)態(tài)攔截則要求您針對(duì)接口(或基類)進(jìn)行編程。

查看完整回答
反對(duì) 回復(fù) 2019-11-12
  • 2 回答
  • 0 關(guān)注
  • 622 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)