news 2026/9/3 5:38:49

分布式应用框架Microsoft Orleans - 2、动手实践:构建你的第一个Microsoft Orleans应用程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分布式应用框架Microsoft Orleans - 2、动手实践:构建你的第一个Microsoft Orleans应用程序

在上一章中,我们了解了Orleans的核心概念和价值。现在,让我们动手实践,一步步搭建开发环境,创建并运行一个简单的Orleans"Hello World"应用程序,获得第一手体验。

1. 环境准备与项目规划

在开始编码之前,我们需要确保开发环境就绪。你需要安装以下工具:

  • .NET 8.0 SDK​ 或更高版本(Orleans 7.x支持.NET 6.0及以上)
  • Visual Studio 2022Visual Studio Code或任何你喜欢的C#开发环境

我们的第一个Orleans应用程序将包含以下项目组件:

项目类型项目名称职责说明
类库HelloWorld.Interfaces定义Grain接口(契约)
类库HelloWorld.Grains实现Grain接口的业务逻辑
控制台应用HelloWorld.Silo托管Orleans服务端(Silo)
控制台应用HelloWorld.Client客户端应用,调用Grain

这样的分离设计符合关注点分离原则(Separation of Concerns,简称SoC),让接口与实现解耦,便于后续扩展和维护。

2.创建项目与配置依赖

首先,我们创建一个新的解决方案并添加所需的项目。你可以使用IDE的图形界面,或者使用.NET CLI命令行工具:

# 创建解决方案文件dotnet new sln -n HelloWorld.Orleans# 创建各个项目dotnet new classlib -n HelloWorld.Interfaces dotnet new classlib -n HelloWorld.Grains dotnet new console -n HelloWorld.Silo dotnet new console -n HelloWorld.Client# 将项目添加到解决方案dotnet slnaddHelloWorld.Interfaces/HelloWorld.Interfaces.csproj dotnet slnaddHelloWorld.Grains/HelloWorld.Grains.csproj dotnet slnaddHelloWorld.Silo/HelloWorld.Silo.csproj dotnet slnaddHelloWorld.Client/HelloWorld.Client.csproj

接下来,为每个项目添加必要的NuGet包和项目引用

# Interfaces项目只需要Orleans核心抽象cdHelloWorld.Interfaces dotnetaddpackage Microsoft.Orleans.Core.Abstractions# Grains项目需要引用Interfaces,并添加代码生成支持cd../HelloWorld.Grains dotnetaddreference../HelloWorld.Interfaces/HelloWorld.Interfaces.csproj dotnetaddpackage Microsoft.Orleans.Sdk# Silo项目需要引用Grains和Interfaces,并添加服务端包cd../HelloWorld.Silo dotnetaddreference../HelloWorld.Interfaces/HelloWorld.Interfaces.csproj dotnetaddreference../HelloWorld.Grains/HelloWorld.Grains.csproj dotnetaddpackage Microsoft.Orleans.Server# Client项目需要引用Interfaces,并添加客户端包cd../HelloWorld.Client dotnetaddreference../HelloWorld.Interfaces/HelloWorld.Interfaces.csproj dotnetaddpackage Microsoft.Orleans.Client

3. 定义Grain接口

HelloWorld.Interfaces项目中,我们定义Grain接口。Grain接口是客户端与Grain之间的契约,定义了可调用的方法。

// HelloWorld.Interfaces/IHelloGrain.csusingOrleans;namespaceHelloWorld.Interfaces{publicinterfaceIHelloGrain:IGrainWithStringKey{Task<string>SayHello(stringgreeting
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 14:16:29

优思学院|JIT准时制生产的核心思想

JIT 准时制生产的核心理念可以概括为&#xff1a;“在需要的时间&#xff0c;以所需的数量&#xff0c;生产所必须的产品”。其目标是通过有效的生产计划、过程控制和库存管理&#xff0c;构建一种几乎无库存或将库存降至最低的生产体系。准时生产方式&#xff08;Just In Time…

作者头像 李华
网站建设 2026/9/3 1:23:15

解密prompt系列62. Agent Memory一览 - MATTS CFGM MIRIX

记忆的两种面孔&#xff1a;LLM Memory vs Agent Memory之前我们探讨过Mem0和LlamaIndex对大模型记忆的工程化实现&#xff0c;但这两个库更侧重于LLM Memory而非Agent Memory。这两者有何不同&#xff1f;本质上Agent Memory是包含了LLM Memory的。那增量的差异来自LLM Memory…

作者头像 李华
网站建设 2026/9/2 12:07:08

ISO 19011-2018管理体系审核完整权威指南

ISO 19011-2018管理体系审核指南是质量管理领域的权威标准&#xff0c;为各类组织的审核活动提供了系统化的指导框架。本仓库提供最新中文版PDF文档&#xff0c;帮助您深入理解和应用该国际标准。 【免费下载链接】ISO19011-2018管理体系审核指南中文版下载仓库 ISO19011-2018 …

作者头像 李华
网站建设 2026/9/3 0:08:57

SSL证书的“保质期”:为什么现在只有398天?

你是否还记得&#xff0c;几年前SSL证书可以一次性购买三年甚至五年&#xff1f;但如今&#xff0c;所有公开可信的证书颁发机构&#xff08;CA&#xff09;签发的证书&#xff0c;最长有效期都已被严格限制在 398天&#xff08;约13个月&#xff09;。这一变化并非偶然&#x…

作者头像 李华
网站建设 2026/9/3 0:42:05

无限滚动插件终极指南:告别传统分页的烦恼

无限滚动插件终极指南&#xff1a;告别传统分页的烦恼 【免费下载链接】infinite-scroll &#x1f4dc; Automatically add next page 项目地址: https://gitcode.com/gh_mirrors/in/infinite-scroll 还在为网站的用户体验发愁吗&#xff1f;每次看到用户点击"下一…

作者头像 李华
网站建设 2026/9/3 4:57:15

漏洞复现能力提升:如何高效复现 CVE 漏洞并编写 PoC

漏洞复现能力提升&#xff1a;如何高效复现 CVE 漏洞并编写 PoC 引言 转行网络安全后&#xff0c;我第一次尝试复现 Log4j2 漏洞&#xff08;CVE-2021-44228&#xff09;时&#xff0c;花了 3 天还没成功 —— 要么环境搭错&#xff0c;要么 PoC&#xff08;Proof of Concept&…

作者头像 李华