欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Policy Injection Application Block - Bruce Zh...

Microsoft Patterns & Practices團隊在2007年發(fā)布的Enterprise Library 3.0 February 2007 CTP中,我們驚喜地發(fā)現了AOP的蹤跡,其名為Policy Injection Application Block(PIAB)。Enterprise Library的產(chǎn)品經(jīng)理Tom Hollander和架構師Edward Jezierski都相繼在自己的博客上介紹了PIAB。從特征與功能來(lái)看,已經(jīng)基本具備了AOP的要求。

從技術(shù)實(shí)現來(lái)看,PIAB并沒(méi)有特別的創(chuàng )新,沿用了大多數致力于.NET平臺AOP研究人員的思路,采用了Remoting Proxy技術(shù)。PIAB定義了特殊的工廠(chǎng)類(lèi),通過(guò)它添加Policy,然后創(chuàng )建代理對象實(shí)例。受到Remoting Proxy技術(shù)的限制,所謂的代理對象必須繼承自MashalByRefObject。例如:
public class LoggingTarget : MarshalByRefObject
{
    public string DoSomething(int one, string two, double three)
    {
        return string.Format("{1}: {0} {2}", one, two, three);
    }
}

添加Policy與創(chuàng )建Aspect對象的方法如下:
private PolicySet GetLoggingPolicies()
{
    PolicySet policies = new PolicySet();

    Policy simpleInputsPolicy = new Policy("simpleInputsPolicy");
    simpleInputsPolicy.RuleSet.Add(new MatchByNameRule("MethodWithSimpleInputs"));
    simpleInputsPolicy.Handlers.Add(new SignatureCheckingHandler(new Type[] { typeof(int), typeof(string) }));
    policies.Add(simpleInputsPolicy);
    return policies;
}
private LoggingTarget CreateTarget()
{
    InterceptionFactory factory = new InterceptionFactory();
    factory.AddPolicies(GetLoggingPolicies());
    return factory.CreateNew<LoggingTarget>();
}

代理對象(Proxy Object)會(huì )通過(guò)Handler鏈定位到真實(shí)對象(Real Object),而Policy則被注入到代理對象和真實(shí)對象中。整個(gè)流程如圖:

在Policy中,包含了一個(gè)Matching Rules集合以及Handlers Pipeline。從AOP技術(shù)的角度來(lái)看,代理對象所指代的真實(shí)對象就是“Aspect”,而Policy則是切入點(diǎn),它可以通過(guò)Matching Rules來(lái)定位代理對象的方法,至于Handler則近似于A(yíng)dvise。

Authorization橫切關(guān)注點(diǎn)(Cross-Cutting Concerns)的處理方式如圖所示:

PIAB目前預定義的Handler包括Validation Handler、Logging Handler、Exception Handling Handler、Authorization Handler、Caching Handler。這些Handler與Enterprise Library中的其他Application Block幾乎是一一對應的。事實(shí)上,權限認證、日志、異常處理、緩存等,恰恰都是AOP技術(shù)最重要的關(guān)注點(diǎn)。在February 2007 CTP版本之前的Application Block,實(shí)際上已經(jīng)具備了AOP的雛形。然后,由于它在“橫切”與“注入”方面的缺乏,始終無(wú)法達到AOP所要求的重用目的。Policy Injection Application Block正好彌補了這樣的缺憾。

本人也曾利用Remoting Proxy技術(shù)開(kāi)發(fā)了.NET平臺下的AOP組件,基本實(shí)現了AOP的主要功能。然后因為兩個(gè)困惑,使得這一工作沒(méi)有繼續進(jìn)行下去。

1、使Aspect對象繼承自MarshalByRefObject是否過(guò)于專(zhuān)制?鑒于許多語(yǔ)言都具備單繼承的特性,如果剝奪了一個(gè)類(lèi)繼承的能力,就使得程序的設計者多了很多約束。這是否是明智的選擇呢?

2、繼承自MarshalByRefObject后,效率究竟如何?我曾經(jīng)做個(gè)這樣的測試,發(fā)現繼承自MarshalByRefObject類(lèi)的對象比沒(méi)有繼承MarshalByRefObject類(lèi)的對象,在性能上相差了幾十倍。PIAB采用Remoting Proxy技術(shù),是否在性能上有所考慮呢?

posted on 2007-03-20 17:58 Bruce Zhang 閱讀(1404) 評論(4)  編輯 收藏 引用 網(wǎng)摘 所屬分類(lèi): AOP

評論

# re: Policy Injection Application Block 2007-03-20 21:30 呂震宇

好!功能越來(lái)越強大了!  回復  更多評論   

# re: Policy Injection Application Block 2007-03-21 09:36 dali

透明代理,這個(gè)2003年就有人實(shí)現了吧  回復  更多評論   

# re: Policy Injection Application Block[未登錄](méi) 2007-03-21 10:04 fly_bluewolf

必須繼承MarshalByRefObject基類(lèi),嚴重制約了它的可使用性,
估計這種方式能接受的人很少了
  回復  更多評論   

# re: Policy Injection Application Block 2007-03-21 10:09 Bruce Zhang

all:
這是我粗略看過(guò)PIAB后得出的結果。我也對這樣的實(shí)現方式感到奇怪,但不知是否在理解上有所偏差?之所以post這個(gè)帖子,也是希望更多的AOP的研究者能夠看看PIAB的功能與SourceCode。  回復  更多評論   

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
SAP UI5 Diagnostics工具里一個(gè)使用面向切片編程(AOP)的一個(gè)例子
PostSharp Blog | Aspect
Part 7 - Interrupt locking and unlocking policy
ASP.NET底層的初步認識與理解
Python for .NET
Wildcard script mapping and IIS 7 integrated ...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久