<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ASP.NET Core MVC 入門到精通 - 3. 使用MediatR

      ASP.NET Core MVC 入門到精通 - 3. 使用MediatR

      環境:

      • .NET 5
      • ASP.NET Core MVC (project)

      1. MediatR

      MediatR .NET中的簡單中介者模式實現,一種進程內消息傳遞機制(無其他外部依賴)。支持以同步或異步的形式進行請求/響應,命令,查詢,通知和事件的消息傳遞,并通過C#泛型支持消息的智能調度。

      Simple mediator implementation in .NET
      In-process messaging with no dependencies.
      Supports request/response, commands, queries, notifications and events, synchronous and async with intelligent dispatching via C# generic variance.

      另:中介者模式 - 定義一個中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合松散,且可以獨立地改變它們之間的交互。中介者模式又叫調停模式,它是迪米特法則的典型應用。

      2. 安裝 & 配置

      對于.NET5 (.net core), 使用nuget 安裝MediatR.Extensions.Microsoft.DependencyInjection.

      配置:

      public void ConfigureServices(IServiceCollection services)
      {
          services.AddControllersWithViews();
          services.AddMediatR(typeof(Startup));
      }
      

      3. MediatR消息類型

      3.1. Notifications 通知模式

      Notifications 通知模式用于生產者發送通知,消費者(可以多個)接收到通知后,進行后續處理。
      例:一個APS.NET 頁面,訪問時,發送Notifications通知;消費者簡單記錄收到通知的時間。

      3.1.1. 定義基于INotification的通知類

      public class Ping : INotification { }
      

      3.1.2. 定義消費者(關注通知的處理方法)

      public class Pong1 : INotificationHandler<Ping>
      {
          public Task Handle(Ping notification, CancellationToken cancellationToken)
          {
              Debug.WriteLine($"Pong1, {DateTime.Now}");
              return Task.CompletedTask;
          }
      }
      
      public class Pong2 : INotificationHandler<Ping>
      {
          public Task Handle(Ping notification, CancellationToken cancellationToken)
          {
              Debug.WriteLine($"Pong2, {DateTime.Now}");
              return Task.CompletedTask;
          }
      }
      

      3.1.3. 發送消息通知

      // 基于dotnet core的依賴注入,注入IMediator對象
      private readonly IMediator _mediator;
      public HomeController(ILogger<HomeController> logger, IMediator mediator)
      {
          _logger = logger;
          _mediator = mediator;
      }
      
      
      public async Task<IActionResult> IndexAsync()
      {
          // e.g. 訪問首頁時,發送通知
          await _mediator.Publish(new Ping());
          return View();
      }
      

      3.1.4. 輸出

      Pong1, 5/27/2021 4:37:18 PM
      Pong2, 5/27/2021 4:37:18 PM
      
      

      3.2. Request/Response 請求響應模式

      request/response用于命令和查詢的場景。

      3.2.1. 創建請求類:

      public class RequestModel: IRequest<string>
      {
      }
      

      3.2.2. 創建請求處理類

      不同于通知模式,request/response只能有一個請求處理。

      public class RequestHandeler : IRequestHandler<RequestModel, string>
      {
          public Task<string> Handle(RequestModel request, CancellationToken cancellationToken)
          {
              return Task.FromResult($"Pong {DateTime.Now}"); // 測試,返回內容給request
          }
      }
      

      3.2.3. 頁面中發送請求

      private readonly ILogger<HomeController> _logger;
      private readonly IMediator _mediator;
      
      public HomeController(ILogger<HomeController> logger, IMediator mediator)
      {
          _logger = logger;
          _mediator = mediator;
      }
      
      public async Task<IActionResult> IndexAsync()
      {
          // send request, and show Response
          var response = await _mediator.Send(new RequestModel());
          Debug.WriteLine("Got response in controller: " +response);
      
          return View();
      }
      

      3.2.4. 輸出

      Got response in controller: Pong 5/28/2021 2:04:26 PM
      

      4. 總結

      • MediatR是一種進程內消息傳遞機制
      • 支持以同步或異步的形式進行請求/響應,命令,查詢(CQRS),通知和事件的消息傳遞,并通過C#泛型支持消息的智能調度。
      • 其核心是消息的解耦。
      • 應用場景: 實現CQRS、EventBus等。

      5. 參考 & 代碼

      posted on 2021-05-28 14:33  Jack Niu  閱讀(924)  評論(0)    收藏  舉報

      Affiliate Marketing and Web Technology?
      主站蜘蛛池模板: 中国熟女仑乱hd| 少妇又爽又刺激视频| 国产亚洲精品日韩香蕉网| 国产精品欧美福利久久| 偷拍一区二区三区在线视频| 国产目拍亚洲精品二区| 久久se精品一区精品二区国产| 精品国产欧美一区二区五十路| 国产成人综合色在线观看网站 | 国产福利酱国产一区二区| 两个人免费完整高清视频| 国产亚洲一区二区三区四区| 亚洲精品www久久久久久| 熟女精品视频一区二区三区| 欧美裸体xxxx极品| 亚洲区一区二区激情文学| 欧美高清freexxxx性| 国产 麻豆 日韩 欧美 久久| 男女xx00xx的视频免费观看| 免费国产一区二区不卡| 妺妺窝人体色www看美女| 中文字幕无码成人免费视频| 亚洲人成电影在线天堂色| 全免费A级毛片免费看无码| 九九热在线视频精品免费| 奶头又大又白喷奶水av| 男女啪啪网站| 亚洲中文字幕无码爆乳APP| 欧美xxxx做受欧美.88| 日本九州不卡久久精品一区| 精品无码人妻一区二区三区| 欧洲人与动牲交α欧美精品| xbox免费观看高清视频的软件 | 日本道之久夂综合久久爱| 欧洲一区二区中文字幕| 会昌县| 亚洲av永久无码精品网站 | 影音先锋人妻啪啪av资源网站| 免费无码久久成人网站入口| 国产成人高清亚洲一区二区| 亚洲va中文字幕无码久久不卡 |