日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)

發布時間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 緊接上一篇《基于Asp.Net Core打造輕量級內部服務治理RPC(一)》文章。本文主要講解基于Asp.Net Core的遠程服務設計和實現。

? ? ? ?在上一篇中講過,服務提供者提供的服務實際上就是一個Controller,那么是否在該程序中,服務都按照Asp.Net Core 中的Web Api的方式建立好Controller,再實現每個服務接口(調用方只需要引用對應的接口定義所在的程序集)供調用者調用呢?至少我不愿意這樣去設計。

? ? ? 在Asp.Net Core中,我們可以建立Poco Controller,那么我們的服務類也就完全不需要繼承Controller或者以Controller結尾來命名服務(eg:UserService)。要做到這一點,在Asp.Net Core中非常方便,只需要擴展兩個類:

1、從ControllerFeatureProvider派生出一個自己的Provider

2、實現IApplicationModelConvention接口

下面就細說一下這兩個類的作用,以及如何使用:

?派生自ControllerFeatureProvider的類ServiceHubControllerFeatureProvider主要是用來將我們自己定義的服務類(即Poco Controller)認定成Controller,重寫其里面的核心方法就是bool IsController(TypeInfo typeInfo)。下面是實現的代碼:

? ? ? ? 當我們有了ServiceHubControllerFeatureProvider這個類來把我們的服務類提供成Controller后,我們需要對我們的服務類進行路由,Filter等應用,那么這個時候IApplicationModelConvention接口的實現類ServiceHubConvention就登場了。

? ? ? ?ServiceHubConvention類實現IApplicationModelConvention接口的Apply方法在,在該類中就可以通過ApplicationModel 獲取ControllerModel,根據ControllerMode可以獲取ActionMode,進而獲取ParameterModel,是不是就是我們的Mvc的那一套結構了,通過每一層結構,我們可以通過代碼指定對應的路由等一系列設置(只是我們平時在寫Web Api Controller是直接打上的特性而已^_^)。

? ? ? ?我們重寫和派生出這兩個將一般類轉換成Asp.Net Core中的Controller類后,如何使用呢?其實很簡單。通過IServiceCollection 接口獲取到ApplicationPartManager類,然后在該類的FeatureProviders屬性Insert派生的ServiceHubControllerFeatureProvider類實例即可;ServiceHubConvention類則只需要在配置MvcOptions時將其添加到Conventions屬性即可。

? ? ? ?通過以上的擴展就可以將我們的服務類實現成Controller,就基本實現遠程調用的雛形。有興趣的朋友可以留言交流也可以加qq:418237014交流。


原文地址: https://www.jianshu.com/p/14eedf74f86a

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。