真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在ASP.NET中使用gRPC攔截器-創(chuàng)新互聯(lián)

怎么在ASP.NET中使用 gRPC攔截器?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括西和網(wǎng)站建設(shè)、西和網(wǎng)站制作、西和網(wǎng)頁(yè)制作以及西和網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西和網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到西和省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Interceptor 類介紹


Interceptor類是gRPC服務(wù)攔截器的基類,是一個(gè)抽象類,它定了幾個(gè)虛方法,分別如下:

public virtual TResponse BlockingUnaryCall();
public virtual AsyncUnaryCall AsyncUnaryCall();
public virtual AsyncServerStreamingCall AsyncServerStreamingCall();
public virtual AsyncClientStreamingCall AsyncClientStreamingCall();
public virtual AsyncDuplexStreamingCall AsyncDuplexStreamingCall();
public virtual Task UnaryServerHandler();
public virtual Task ClientStreamingServerHandler();
public virtual Task ServerStreamingServerHandler();
public virtual Task DuplexStreamingServerHandler();

各個(gè)方法作用如下:


方法名稱作用
BlockingUnaryCall攔截阻塞調(diào)用
AsyncUnaryCall攔截異步調(diào)用
AsyncServerStreamingCall攔截異步服務(wù)端流調(diào)用
AsyncClientStreamingCall攔截異步客戶端流調(diào)用
AsyncDuplexStreamingCall攔截異步雙向流調(diào)用
UnaryServerHandler用于攔截和傳入普通調(diào)用服務(wù)器端處理程序
ClientStreamingServerHandler用于攔截客戶端流調(diào)用的服務(wù)器端處理程序
ServerStreamingServerHandler用于攔截服務(wù)端流調(diào)用的服務(wù)器端處理程序
DuplexStreamingServerHandler用于攔截雙向流調(diào)用的服務(wù)器端處理程序

在實(shí)際使用中,可以根據(jù)自己的需要來(lái)使用對(duì)應(yīng)的攔截方法。

客戶端攔截器

基于前面兩篇文章使用的Demo。

在客戶端項(xiàng)目新建一個(gè)類,命名為ClientLoggerInterceptor,繼承攔截器基類Interceptor。

我們?cè)谇懊媸褂玫腄emo,定義了擼貓服務(wù),其中SuckingCatAsync方法為異步調(diào)用,所以我們重寫(xiě)攔截器的AsyncUnaryCall方法

public class ClientLoggerInterceptor:Interceptor
{
  public override AsyncUnaryCall AsyncUnaryCall(
    TRequest request,
    ClientInterceptorContext context,
    AsyncUnaryCallContinuation continuation)
  {
    LogCall(context.Method);

    return continuation(request, context);
  }

  private void LogCall(Method method)
    where TRequest : class
    where TResponse : class
  {
    var initialColor = Console.ForegroundColor;
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine($"Starting call. Type: {method.Type}. Request: {typeof(TRequest)}. Response: {typeof(TResponse)}");
    Console.ForegroundColor = initialColor;
  }
}

注冊(cè)攔截器:

var channel = GrpcChannel.ForAddress("https://localhost:5001");
var invoker = channel.Intercept(new ClientLoggerInterceptor());
var catClient = new LuCat.LuCatClient(invoker);
var catReply = await catClient.SuckingCatAsync(new Empty());
Console.WriteLine("調(diào)用擼貓服務(wù):"+ catReply.Message);

然后運(yùn)行:

怎么在ASP.NET中使用 gRPC攔截器

可以看到成功的在客戶端攔截到了調(diào)用,并記錄了調(diào)用信息。

服務(wù)端攔截器

在服務(wù)端項(xiàng)目新建一個(gè)類,命名為ServerLoggerInterceptor,繼承攔截器基類Interceptor。

我們?cè)诜?wù)端需要實(shí)現(xiàn)的方法是UnaryServerHandler

public class ServerLoggerInterceptor: Interceptor
{
  private readonly ILogger _logger;

  public ServerLoggerInterceptor(ILogger logger)
  {
    _logger = logger;
  }

  public override Task UnaryServerHandler(
    TRequest request,
    ServerCallContext context,
    UnaryServerMethod continuation)
  {
    LogCall(MethodType.Unary, context);
    return continuation(request, context);
  }

  private void LogCall(MethodType methodType, ServerCallContext context)
    where TRequest : class
    where TResponse : class
  {
    _logger.LogWarning($"Starting call. Type: {methodType}. Request: {typeof(TRequest)}. Response: {typeof(TResponse)}");
  }
}

注冊(cè)攔截器:

public void ConfigureServices(IServiceCollection services)
{
  services.AddGrpc(options =>
  {
    options.Interceptors.Add();
  });
}

運(yùn)行:

怎么在ASP.NET中使用 gRPC攔截器

可以看到服務(wù)端成功攔截到了,客戶端的調(diào)用。

看完上述內(nèi)容,你們掌握怎么在ASP.NET中使用 gRPC攔截器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


新聞標(biāo)題:怎么在ASP.NET中使用gRPC攔截器-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://weahome.cn/article/dcssoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部