按照官网的示例创建第一个Dapr程序。创建一个控制台程序,安装程序包Dapr.Client,修改代码如下:
using Dapr.Client;
const string storeName = "statestore";
const string key = "counter";
var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync<int>(storeName, key);
while (true)
{
Console.WriteLine($"Counter = {counter++}");
await daprClient.SaveStateAsync(storeName, key, counter);
await Task.Delay(1000);
}
然后,在项目目录下,打开控制台运行:
dapr run --app-id DaprCount dotnet run
会显式很多提示信息,和运行结果,应用输出结果显式的颜色不同。现在我们可以做一下试验,通过试验了解一下Dapr的运行。
首先,直接运行dotnet run。结果会报错,无法连接Dapr。也就是说,应用必须和Dapr一起运行,也就是SideCar必须同时运行。
然后,我们进入编译完成目录,运行dapr run --app-id DaprCount DaprCount.exe,发现可以正常运行,也就是dapr不管具体的应用是什么,只要app-id和代码中的storeName和key一致,就可以保存和获取状态。
接下来,我们换个id试试,dapr run --app-id DaprCountNew dotnet run。与我们猜想的一样,计数器从零开始。如果再次运行dapr run --app-id DaprCount dotnet run,会继续原来的计数。
最后,我们新编写一个应用,使用相同的stroeName和key,看一下运行时是否能够获取同样的值:
using Dapr.Client;
const string storeName = "statestore";
const string key = "counter";
var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync<int>(storeName, key);
Console.WriteLine($"Counter = {counter}");
counter = 200;
await daprClient.SaveStateAsync(storeName, key, counter);
运行dapr run --app-id DaprCountNew dotnet run,会发现,可以获取值。那么,如果在两个app 中传递数据呢?这是下步需要搞清楚的。
网友评论