记事本怎样做网站,wordpress设置访问密码,网站优化百度,怎么把视频制作成链接题记#xff1a;上篇介绍了Dapr的环境配置#xff0c;这次我们来动手尝试一下Dapr应用的开发Hello WorldDapr应用的Hello World其实和其他的Hello World一样简单#xff1a;首先用你喜欢的语言和框架创建一个Hello World程序。比如在.NET 5下#xff0c;就可以简单的这样实… 题记上篇介绍了Dapr的环境配置这次我们来动手尝试一下Dapr应用的开发Hello WorldDapr应用的Hello World其实和其他的Hello World一样简单首先用你喜欢的语言和框架创建一个Hello World程序。比如在.NET 5下就可以简单的这样实现 dotnet new console -o dapr-hello-world只是运行这个Hello World不是直接启动程序而是通过Dapr来启动dapr run --app-id hello-dotnet-dapr -- dotnet run上面这个命令通过传入一个app-id参数来指明这个Dapr应用的名称为“hello-dotnet-dapr”当然你也可以忽略这个参数那么Dapr会自动分配一个如docker运行容器实例那样而“--”之后就是应用程序本身的启动命令行PS对于dapr run更多的帮助信息可以通过 dapr run --help 来查看服务调用的Hello World接下来我们来做一个服务调用的Hello World。我还是基于.NET 5中的ASP.NET Core来作为开发框架在命令行中输入如下命令来创建一个ASP.NET Core的Web API项目dotnet new webapi -o dapr-service-invocation --no-https --no-openapi然后就可以使用Dapr CLI来运行这个服务了dapr run --app-id dotnetapp --app-port 5000 --dapr-http-port 13501 -- dotnet run其中通过app-port参数指明了这个Web API服务的侦听端口为5000让Dapr知道如何和你的应用进行配对使用dapr-http-port参数指明了Dapr边车暴露的http端口为13501方便外部或者其他Dapr边车知道如何和你的应用边车进行交互。Dapr应用起来之后就可以使用VS Code的REST Client插件来访问其中的地址了GET http://localhost:13501/v1.0/invoke/dotnetapp/method/WeatherForecast示例代码可以参见这里https://github.com/heavenwing/dapr-dotnet-quickstarts/tree/main/ServiceInvocation状态管理的Hello World状态管理的Hello World稍微复杂一点。你可以把对Dapr状态管理接口的访问代码添加到第一个示例当中控制台程序也可以添加到第二个示例当中Web应用程序。我们来基于控制台程序访问状态管理接口1新建或者打开现有的一个dotnet控制台程序首先创建如下实体类public class Order
{public int Id { get; set; }public int Amount { get; set; }
}
2在Program中添加如下常量或静态字段static string daprPort Environment.GetEnvironmentVariable(DAPR_HTTP_PORT) ?? 3500;
const string stateStoreName statestore;//default state store name
const string stateKey order-17;
static string stateUrl $http://localhost:{daprPort}/v1.0/state/{stateStoreName};
其中第1句从环境变量中得到Dapr边车暴露的http端口第2句设置状态存储空间名称Dapr本地开发环境会提供一个默认的statestore给你第4句定义了Dapr状态管理的访问地址3为了保存状态值需要先定义状态内容var state new Listobject
{new{key stateKey,value new Order{Id 17,Amount 1}}
};
4通过Post方法把序列化后的状态值提交到Dapr的接口上var request new HttpRequestMessage(HttpMethod.Post, stateUrl);
request.Content new StringContent(JsonSerializer.Serialize(state));
var response await httpClient.SendAsync(request);
5使用Get方法从Dapr中获取状态值需要传入你需要获取的状态keyrequest new HttpRequestMessage(HttpMethod.Get, ${stateUrl}/{stateKey});
response await httpClient.SendAsync(request);
Console.WriteLine($Respone content: {await response.Content?.ReadAsStringAsync()});
6使用Delete方法从Dapr中输出状态值需要传入你需要输出的状态keyrequest new HttpRequestMessage(HttpMethod.Delete, ${stateUrl}/{stateKey});
response await httpClient.SendAsync(request);
7最后使用如下命令来运行这个Dapr应用dapr run --app-id dotnetapp --dapr-http-port 13502 -- dotnet run我们可以在控制台中看到状态值被保存、获取和删除的提示信息。完整的示例代码可以在这里查看https://github.com/heavenwing/dapr-dotnet-quickstarts/tree/main/StateManagementdotnet SDK初接触上面在应用代码当中直接使用rest api去访问Dapr的状态管理接口肯定显得稍微复杂。其实我们可以直接通过Dapr提供的dotnet SDK来方便的开发Dapr应用。dotnet SDK的源代码地址在https://github.com/dapr/dotnet-sdk在dotnet SDK中我最近还合并进去了一个pr提供如何通过gRPC来包含服务调用接口的示例。大家可以查看这里https://github.com/dapr/dotnet-sdk/tree/master/samples/AspNetCore/GrpcServiceSample当然也可以通过Nuget来引用https://www.nuget.org/packages?qTags%3ADapr通过sdk我们要访问状态管理就非常简单了比如如下的示例代码实现一个简单的deposit操作var state await _daprClient.GetStateEntryAsyncAccount(StoreName, transaction.Id);
state.Value ?? new Account() { Id transaction.Id, };
state.Value.Balance transaction.Amount;
await state.SaveAsync();
后续与.NET Conf 2020接下来的文章我将会开始逐一介绍Dapr中的各个构件块。如果对Dapr感兴趣又希望快点跟着我深入了解的。可以参加本周末12月19日在苏州举行的2020中国.NET开发者峰会我在这个会议上会分享一个关于Dapr的主题《Dapr开启微服务应用开发新世界》欢迎到现场或者线上和我交流讨论。关于2020中国.NET开发者峰会的信息可以看这里2020 . NET大会日程公布行程亮点全曝光另外我这里送现场票5张先到先得 dotNETZHYGXH dotNETZHYGCZ dotNETZHYGcU dotNETZHYGas dotNETZHYGVJ PS:请通过以下链接报名http://hdxu.cn/yzcnG操作步骤为注登录活动行先点击【我有优惠码】并输入兑换成功【合作伙伴票】变为 0 后 再进行购买。