這幾天在把玩著 ASP.NET Core 的 gRPC 服務,正當思索著要怎麼實作 AOP(Aspect-Oriented Programming)時,我就看到了 GrpcServiceOptions
有一個 Interceptors
屬性,看到 Interceptor 這個關鍵字就知道 gRPC 服務天生就支援 AOP 的實作。
[料理佳餚] gRPC 服務也有支援 AOP(Aspect-Oriented Programming)的實作
- 1112
- 0
- ASP.NET Core
這幾天在把玩著 ASP.NET Core 的 gRPC 服務,正當思索著要怎麼實作 AOP(Aspect-Oriented Programming)時,我就看到了 GrpcServiceOptions
有一個 Interceptors
屬性,看到 Interceptor 這個關鍵字就知道 gRPC 服務天生就支援 AOP 的實作。
在設計中加入 AOP 著實會讓程式碼清晰度大增,讓程式的職責更清楚,Autofac 中的擴充套件 Autofac.Extras.DynamicProxy 可以輕鬆地讓我們實現 AOP 的功能,在註冊完後可以呼叫 EnableInterfaceInterceptors()
或 EnableClassInterceptors()
的其中一個方法來啟用 Interceptors,而這兩個擴充方法的區別又在哪?
之前在[料理佳餚] 使用 Decorator Pattern 分離參數檢查與資料處理這篇文章有提到我想要用 AOP 的方式來把參數的條件檢查分離出來,當時還沒有什麼好的做法,但是在遇到 FluentValidation 之後有了新的想法,只要搭配 Autofac 及 Autofac.Extras.DynamicProxy2 就可以實現參數條件檢查的 AOP 攔截器。