最常見的依賴注入(Dependency Injection)方式,就是從建構式上面,將依賴的服務一一注入,但是實務上多多少少會有一部分的 Instances,在服務被釋放之前都沒有被用到,雖然一般來說,產生 Instance 的成本不大,不過我還是想試一下,能不能將依賴注入這件事移到執行的目標方法裡面,在方法裡面有用到的服務才注入,所以就有了「延遲依賴注入(Lazy Dependency Injection)
」這個題目。
[料理佳餚] C# 一個 Open Source 的 Compile-time AOP 框架 - AspectInjector
看到 Bill 叔在 twMVC#39 講的 Compile-time weaving 的 AOP 框架 - PostSharp,勾起了我的 AOP 魂,隨手 Google 了一下,讓我找到了一個 Open Source 的框架 - AspectInjector(看名字我還以為是某個 Dependency Injection 的套件),看它在 GitHub 的介紹裡面下了 postsharp 的標籤,似乎有向 PostSharp 看齊的目標。
[料理佳餚] Castle.DynamicProxy 非同步方法的攔截器
有使用 Castle DynamicProxy(Autofac.Extras.DynamicProxy 也是相依於它)實作 AOP 的朋友應該對 IInterceptor
這個介面不陌生,實作這個介面就能得到一個攔截方法的攔截器,但是目前 IInterceptor 只提供同步的版本,如果攔截的對象是非同步方法,事情就會變得麻煩一些,我們來看看該怎麼做?
[料理佳餚] gRPC 服務也有支援 AOP(Aspect-Oriented Programming)的實作
- 1075
- 0
- ASP.NET Core
這幾天在把玩著 ASP.NET Core 的 gRPC 服務,正當思索著要怎麼實作 AOP(Aspect-Oriented Programming)時,我就看到了 GrpcServiceOptions
有一個 Interceptors
屬性,看到 Interceptor 這個關鍵字就知道 gRPC 服務天生就支援 AOP 的實作。
[料理佳餚] FluentValidation + Autofac.Extras.DynamicProxy2 實現參數條件檢查的 AOP 攔截器
之前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章有提到我想要用 AOP 的方式來把參數的條件檢查分離出來,當時還沒有什麼好的做法,但是在遇到 FluentValidation 之後有了新的想法,只要搭配 Autofac 及 Autofac.Extras.DynamicProxy2 就可以實現參數條件檢查的 AOP 攔截器。
[創意菜色] 每個軟體設計師的心中都有一張設計圖
- 2004
- 0
- Architecture
- 2017-02-16
軟體設計師隨著開發的經驗越來越多,累積的經驗會轉化成一個 Pattern,這個 Pattern 也會經由解決問題、學習新技術…等經驗的餵食而慢慢地進化,當累積到一定的豐富程度之後,我們就可以用一張圖來把它給表達出來,大概就像這樣。
- 1