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

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

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

      Blazor+Dapr+K8s微服務之狀態管理

       

      1         狀態管理服務器端接口

      1.1         添加Dapr.AspNetCore包

      在DaprTest1.Server項目中添加Dapr.AspNetCore包,該包實現了ASP.NET Core與Dapr的集成,例如自動依賴注入DaprClient對象,將狀態管理功能直接集成到 ASP.NET Core 模型綁定功能中等。

       

      修改DaprTest1.Server項目的Startup.cs文件,將Dapr對象依賴注入到ASP.NET Core。

       public void ConfigureServices(IServiceCollection services)
              {
      
                  services.AddControllersWithViews().AddDapr();
                  services.AddRazorPages();
                  services.AddScoped<InvocationHandler>();
      
                  // 注入httpClient
                  services.AddHttpClient("HttpClient").AddHttpMessageHandler<InvocationHandler>()
                  .AddTypedClient(client =>
                  {
                      client.BaseAddress = new Uri("http://serviceapi1");
                      return RestService.For<ICallServiceApi1>(client);
                  });
              }

      在DaprTest1.Server項目的WeatherForecastController.cs文件中注入DaprClient對象

        private readonly DaprClient _daprClient;
      
              public WeatherForecastController(ILogger<WeatherForecastController> logger, ICallServiceApi1 callServiceApi1, DaprClient daprClient)
              {
                  _logger = logger;
                  _callServiceApi1 = callServiceApi1;
                  _daprClient = daprClient;
              }

       

      1.2         狀態保存接口

      在DaprTest1.Server項目的WeatherForecastController.cs文件中增加狀態保存接口。

        [HttpPost(nameof(SaveStateValue))]
              public async Task SaveStateValue(StateModel stateModel)
              {
                  await _daprClient.SaveStateAsync("statestore", stateModel.Key, stateModel.Value);
              }

      其中 StateModel  為自定義的狀態模型對象。

      1.3         狀態刪除接口

      在DaprTest1.Server項目的WeatherForecastController.cs文件中增加狀態刪除接口。

       [HttpDelete(nameof(DeleteStateValue) + "/{stateKey}")]
              public async Task DeleteStateValue(string stateKey)
              {
                  await _daprClient.DeleteStateAsync("statestore", stateKey);
              }

      1.4         狀態獲取接口

      在DaprTest1.Server項目的WeatherForecastController.cs文件中增加兩個狀態獲取接口。

       [HttpGet("GetStateValue/{stateKey}")]
              public async Task<string> GetStateValue(string stateKey)
              {
                  return await _daprClient.GetStateAsync<string>("statestore", stateKey);
              }
      
              [HttpGet(nameof(GetStateValueFromState) + "/{stateKey}")]
              public async Task<string> GetStateValueFromState([FromState("statestore", "stateKey")] StateEntry<string> stateEntry)
              {
                  return await Task.FromResult(stateEntry.Value);
              }

      注意,第二個狀態獲取接口是通過ASP.NET Core 模型綁定實現的。

       

      2         狀態管理菜單和頁面

      在DaprTest1.Server項目的NavMenu.razor文件新增狀態管理菜單。

       <li class="nav-item px-3">
                  <NavLink class="nav-link" href="statemanage">
                      <span class="oi oi-list-rich" aria-hidden="true"></span> 狀態管理
                  </NavLink>
              </li>

      在DaprTest1.Server項目新增狀態管理頁面

      @page "/statemanage"
      @using DaprTest1.Shared
      @using System.Text.Json
      @inject HttpClient Http
      
      <h1>狀態存儲</h1>
      
      <p>This component demonstrates storing state.</p>
      
      <p>狀態鍵: TestStateKey, 狀態值:<input type="text" @bind="stateModel.Value" /></p>
      
      <button class="btn btn-primary" @onclick="SaveStateValue">保存狀態</button>
      <button class="btn btn-primary" @onclick="DeleteStateValue">刪除狀態</button>
      <button class="btn btn-primary" @onclick="GetStateValue">獲取狀態</button>
      <button class="btn btn-primary" @onclick="GetStateValueFromState">獲取狀態[FromState]</button>
      
      
      <p>獲取到的狀態值: @stateValue</p>
      
      @code {
          private StateModel stateModel = new StateModel() { Key = "TestStateKey" };
          private string stateValue = "";
      
          private async Task SaveStateValue()
          {
              await Http.PostAsJsonAsync<StateModel>("WeatherForecast/SaveStateValue", stateModel);
          }
          private async Task DeleteStateValue()
          {
              await Http.DeleteAsync("WeatherForecast/DeleteStateValue/" + stateModel.Key);
          }
            private async Task GetStateValue()
          {
              stateValue = await Http.GetStringAsync("WeatherForecast/GetStateValue/" + stateModel.Key);
          }
           private async Task GetStateValueFromState()
          {
              stateValue = await Http.GetStringAsync("WeatherForecast/GetStateValueFromState/" + stateModel.Key);
          }
      }

      3         狀態管理測試

      和上一節一樣,我們先開啟每個微服務的SideCar,然后啟動兩個微服務,訪問狀態管理頁面:

       

      我們可以查看緩存,看到狀態數據,其中緩存Key是由保存狀態的微服務ID+“||”+自定義的緩存Key組成,緩存內容Dapr自動增加了版本號。

       

      相關代碼:iamxiaozhuang/dapr-test (github.com)

      posted on 2021-08-25 17:48  小莊  閱讀(727)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产精品一码二码三码四码| 亚洲AV日韩AV高清在线观看| 性做久久久久久久| 色九九视频| 老司机精品成人无码AV| 精品日韩人妻中文字幕| 色窝窝免费一区二区三区| 中文字幕av国产精品| 鲁一鲁一鲁一鲁一澡| 日韩精品无码一区二区视频| 黑人玩弄人妻中文在线| 国产在线一区二区不卡| 日韩人妻精品中文字幕专区 | 人妻系列无码专区69影院| a男人的天堂久久a毛片| 亚洲国产精品久久久天堂麻豆宅男 | 国产欧美日韩免费看AⅤ视频| 天堂网在线.www天堂在线资源| 国产精品久久一区二区三区| 最新亚洲人成网站在线观看| 成人性生交大片免费看r链接| 麻豆麻豆麻豆麻豆麻豆麻豆| 久久久久香蕉国产线看观看伊| 日韩av综合中文字幕| 精品一区二区久久久久久久网站| 在线天堂最新版资源| 国产亚洲精品aaaa片app| 男女性高爱潮免费网站| 国产强奷在线播放免费| 鲁丝片一区二区三区免费| 久久青青草原亚洲AV无码麻豆| 国产精品黄色一区二区三区| 久久日产一线二线三线| 亚洲五月丁香综合视频| 婷婷色爱区综合五月激情韩国| 内乡县| 国产精品综合av一区二区国产馆| 亚洲偷偷自拍码高清视频| 国产偷国产偷亚洲综合av| 国产精品无码久久久久| 亚洲精品一区二区三区大|