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

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

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

開(kāi)通VIP
(6).NET CORE微服務(wù) Micro

AOP 框架基礎

要求懂的知識:AOP、Filter、反射(Attribute)。

如果直接使用 Polly,那么就會(huì )造成業(yè)務(wù)代碼中混雜大量的業(yè)務(wù)無(wú)關(guān)代碼。我們使用 AOP (如果不了解 AOP,請自行參考網(wǎng)上資料)的方式封裝一個(gè)簡(jiǎn)單的框架,模仿 Spring cloud 中的 Hystrix。

需要先引入一個(gè)支持.Net Core 的 AOP,我們用.Net Core 下的 AOP 框架是AspectCore(國產(chǎn),動(dòng)態(tài)織入),其他要不就是不支持.Net Core,要不就是不支持對異步方法進(jìn)行攔截 MVC Filter。

GitHub:https://github.com/dotnetcore/AspectCore-Framework

Install-Package AspectCore.Core -Version 0.5.0

這里只介紹和我們相關(guān)的用法:

1、編寫(xiě)攔截器CustomInterceptorAttribute 一般繼承自AbstractInterceptorAttribute

public class CustomInterceptorAttribute:AbstractInterceptorAttribute{ //每個(gè)被攔截的方法中執行  public async override Task Invoke(AspectContext context, AspectDelegate next)  {
    try    {      Console.WriteLine('執行之前');
      await next(context);//執行被攔截的方法    }    catch (Exception)    {      Console.WriteLine('被攔截的方法出現異常');
      throw;    }    finally    {      Console.WriteLine('執行之后');    }  }}

2、編寫(xiě)需要被代理攔截的類(lèi)

在要被攔截的方法上標注CustomInterceptorAttribute 。類(lèi)需要是public類(lèi),方法如果需要攔截就是虛方法,支持異步方法,因為動(dòng)態(tài)代理是動(dòng)態(tài)生成被代理的類(lèi)的動(dòng)態(tài)子類(lèi)實(shí)現的。

public class Person{    [CustomInterceptor]              public virtual void Say(string msg)    {         Console.WriteLine('service calling...'+msg);    }}

3、通過(guò)AspectCore創(chuàng )建代理對象

ProxyGeneratorBuilder proxyGeneratorBuilder = new ProxyGeneratorBuilder(); using (IProxyGenerator proxyGenerator = proxyGeneratorBuilder.Build()){ Person p = proxyGenerator.CreateClassProxy<Person>(); p.Say('rupeng.com');}Console.ReadKey();

注意p指向的對象是AspectCore生成的Person的動(dòng)態(tài)子類(lèi)的對象,直接new Person是無(wú)法被攔截的。

研究AOP細節

攔截器中Invoke方法下的參數AspectContext的屬性的含義:

Implementation  實(shí)際動(dòng)態(tài)創(chuàng )建的Person子類(lèi)的對象。

ImplementationMethod就是Person子類(lèi)的Say方法

Parameters 方法的參數值。

Proxy==Implementation:當前場(chǎng)景下

ProxyMethod==ImplementationMethod:當前場(chǎng)景下

ReturnValue返回值

ServiceMethod是Person的Say方法

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
干貨分享:ASP.NET CORE(C#)與Spring Boot MVC(JAVA)異曲同工的編程方式總結
hytrix.net 熔斷降級
ASP.NET Core 3.0 使用AspectCore-Framework實(shí)現AOP
C#關(guān)于虛方法和重寫(xiě)的實(shí)例說(shuō)明(virtual 和override)
C#虛方法和抽象方法
淺析繼承關(guān)系中的方法調用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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