Orleans 教程与样例导航:从 Hello World 到生产部署的完整学习路径指南

发布时间:2026/9/25 5:37:01
Orleans 教程与样例导航:从 Hello World 到生产部署的完整学习路径指南 后端微服务【免费下载链接】orleansCloud Native application framework for .NET项目地址https://gitcode.com/gh_mirrors/or/orleans点击查看免费下载本篇技术指南以官方文档 教程与样例索引 为主体脉络系统梳理 Orleans.NET 云原生应用框架的学习材料分类、起步路径、全部教程与官方样例的能力图谱并结合仓库中的samples清单机制与验证脚本深入剖析其工作原理。读完本文你将能够按需选择最适合自己的学习材料理解每个样例演示的核心技术点并掌握在本地一键验证全部样例的方法。学习材料分类Quickstart / Tutorial / Explanation / Sample官方文档将学习材料划分为四种类型各有明确的适用场景类型定位适用场景Quickstart快速入门带领你完成一个聚焦的单一任务想在最短时间内跑通一个最小可运行应用Tutorial教程逐步教会你一项完整能力想深入掌握部署、测试、流处理、自定义存储等具体能力Explanation解释描述一个完整应用是如何被建模的想理解领域建模与架构设计思路Sample示例可直接构建并运行的完整应用想阅读、运行、拆解真实可用的工程代码这四种材料在文档站点上分布于不同目录docs/site/src/content/docs/quickstarts/、docs/site/src/content/docs/tutorials-and-samples/、docs/site/src/content/docs/resources/以及仓库顶层的samples/目录。起步路径两条入门的推荐路线路线一最小化单项目应用Hello World如果只想体验最小可用的 Orleans 应用从 Hello World 快速入门 开始。它的特点是一个控制台项目同时完成三件事定义 grain 契约IHello、实现 grainHelloGrain、在同一个进程中承载 silo 并调用 grain。关键步骤对应 hello-world.mddotnet new console --name HelloWorld --framework net10.0 cd HelloWorld dotnet package add Microsoft.Orleans.Server --version 10.2.2 dotnet package add Microsoft.Extensions.Hosting --version 10.0.9其中Microsoft.Orleans.Server聚合了 Orleans 运行时、客户端 API 与 SDK 构建工具。核心配置代码通过UseOrleans将 silo 及其进程内客户端挂载到 .NET Generic Host再用UseLocalhostClustering启用仅限本地开发环境的集群配置。宿主启动后通过依赖注入解析IGrainFactory以friend作为字符串键获取 grain 逻辑引用并调用程序输出Hello, Hi friend!路线二典型的多项目结构Build your first Orleans app更贴近真实工程形态的是 Build your first Orleans app 教程。它演示了典型的大型应用项目边界划分共四个独立项目GrainInterfacesgrain 契约由调用方与实现方共享Grainsgrain 实现Silo承载 Orleans 运行时与 grain 激活Client外部进程连接 silo 并调用 grain。项目引用遵循严格的单向依赖Client只引用GrainInterfaces客户端永远不需要实现程序集Silo引用GrainsGrains引用GrainInterfaces。手工搭建时的命令序列在文档中完整给出包含dotnet solution ... slnx add、dotnet reference add与各项目对应包的安装。若希望自动生成同样边界并附带 Aspire AppHost 的工程可使用官方模板dotnet new install Microsoft.Orleans.Templates dotnet new orleans --name OrleansHelloWorld --output OrleansHelloWorld模板生成的工程改用 Azurite 支撑的 Azure Table 集群 Azure Blob grain 存储需要容器运行时来启动 Azurite与手工方式的 localhost 配置形成对照。运行验证时先在终端一dotnet run --project Silo待其打印Application started后再在终端二dotnet run --project Client客户端会打印 grain 的响应。注意GetGrainIHello(friend)返回的是逻辑引用而非对象本身——首次调用时 Orleans 才会经由 silo 网关激活对应 grain。教程Tutorials全景官方提供五篇教程覆盖从部署、测试到流恢复与自定义存储的完整能力闭环教程教授的能力部署 Orleans 应用到 Azure Container Apps运行、部署、观测并验证一个多进程 Orleans 应用端到端测试 Orleans 应用从第一个集群测试逐步进阶到可复用 fixture 与拓扑变更构建并恢复一个流式应用让事件流经真实 provider 并验证从检查点恢复自定义 grain 存储实现并注册一个Orleans.Storage.IGrainStorageprovider在 Azure 上部署与扩展将应用部署到 Azure Container Apps 并配置共享 provider测试教程的核心方法testing-walkthroughtesting-walkthrough.md 强调按边界选择测试手段纯应用逻辑用普通单元测试Orleans 运行时行为用Orleans.TestingHost.InProcessTestCluster外部契约用生产 provider 测试。其完整可构建源码位于文档grains/snippets/testing/orleans-testing工程。第一个集群测试的完整流程为创建集群 → 部署 → 从客户端获取 grain 引用 → 发起调用 → 销毁集群。这一个测试即可同时验证代码生成、序列化、激活、消息分发与 grain 实现。默认 builder 会以快速的内存测试基础设施启动两个 silo 与一个客户端。可运行dotnet test --project .\docs\site\src\content\docs\grains\snippets\testing\orleans-testing\Sample.OrleansTesting\Sample.OrleansTesting.csproj --minimum-expected-tests 1教程还给出三层进阶技巧用 builder scope 区分全部 host / 仅 silo / 仅客户端的配置注入用 xUnit collection fixture 复用昂贵的集群启动成本并强调每个测试需使用唯一 grain 标识、保持顺序无关以及拓扑变更演练——新增 silo、等待成员关系稳定、优雅停止然后验证调用仍然成功。同进程集群适合演练成员关系变化而进程崩溃、网络分区、socket 传输与生产级 membership provider 则需要独立环境。流式教程的恢复演练streaming-walkthroughstreaming-walkthrough.md 基于samples/Streaming/Simple样例先以内存 provider 跑通生产者 grain → 隐式消费者的本地路径再切换到 Azure Event Hubs 验证恢复。本地路径的观察点在 silo 日志中清晰可见首个匹配事件到达时ConsumerGrain被激活 → Orleans 提供IStreamSubscriptionHandleFactory→ grain 恢复订阅并挂接 observer →OnNextAsync记录事件与序列令牌。ImplicitStreamSubscriptionAttribute将流命名空间与标识映射到消费者 grain 标识并在匹配事件到达时激活该消费者。文档特别提醒PubSubStore这个名称具有特殊语义持久化流 provider 用它存放订阅元数据生产集群必须在该名称下注册持久化存储。切换到 Event Hubs 需要创建命名空间、名为my-path的 event hub、名为my-group的消费者组及存储账户并在样例目录放置不入库的Secrets.json。恢复验证的标准动作序列包括用固定 GUID 替换Guid.NewGuid()→ 客户端以--pause-after-checkpoint运行并停住拉取代理 → 记录冻结的消费者序列令牌与生产者侧积压事件号 → 终止 silo 进程 → 以相同 service ID、cluster ID、provider 名、hub 与消费者组重启 silo → 核对消费者从积压恢复并推进序列令牌。同时文档明确交付保证是 provider 相关的Event Hubs 场景在故障附近可能观察到重复生产 handler 应幂等或使用应用自有事件标识去重。概念解释Explanations文章解释的内容Adventure 游戏样例房间、玩家与物品如何映射为 grain 与普通值为什么选择 Orleans虚拟 actor 模型的收益与取舍Orleans 架构设计原则塑造 Orleans API 与运行时行为的设计目标以 adventure.md 为例它展示了一个多人在线文字冒险游戏如何建模玩家与房间是 grain承载状态与功能、可分布式运行而钥匙、剑等物品只是普通的不可变数据对象随房间与玩家之间流转无需成为 grain。地图由AdventureMap.json驱动房间之间互联构成迷宫。先启动AdventureServer再启动AdventureClient即可用 go north、take brass key 这类简单命令语言游玩。其为什么用 Orleans的论点值得反复体会可以用极简 C# 描述游戏同时为超大规模多人场景保留扩展空间——小规模运行时开销不大需求到来时又有信心横向扩展。官方样例库Samples全景目录与清单机制samples/目录是官方样例的规范家园canonical home。其索引 samples/README.md 并非手写维护而是由 Update-Readme.ps1 依据清单 samples/gallery.json 自动生成并且清单会与样例工程一起被验证。每个清单条目gallery entry必须符合固定 schema包含以下属性属性含义slug全局唯一标识title样例标题description功能描述path相对samples/的目录路径sourceRepository原始来源仓库image预览图可空languages使用的语言tags功能标签featured是否为推荐样例从 gallery.json 可以看到当前仓库共收录 27 个样例条目。部分样例如 Adventure、Chirper、Hello World、Shopping Cart 等来源于其他 Microsoft 仓库dotnet/samples导入时保留了原始许可另一部分如 AWS Kinesis/DynamoDB、Basic Clustering、Google Firestore、Azure 部署系列则原生来自dotnet/orleans本身。基础能力Fundamentals样例演示内容Hello World单项目集成 silo、grain 契约、实现、引用与调用Adventure用 grain 做领域建模搭配独立客户端Chirper持久化、observer 与可重入reentrantgrainSimple Streaming流生产者、消费者与订阅Web 与应用集成Web and application integration样例演示内容Shopping CartBlazor、持久化与多项目应用Blazor Server由 grain 支撑的 Blazor Server 应用Blazor WebAssembly托管型 WebAssembly 客户端 Orleans 后端GPS TrackerASP.NET Core SignalR 与 IoT 风格设备更新Presence Service游戏场景中的 observer 与协作 grain状态、调度与消息State, scheduling, and messaging样例演示内容Bank Account跨有状态 grain 的 ACID 事务Journaled Todo List基于JournaledGrain的事件溯源、log-consistency provider 与 AspireJournaling with Azure Blob JSON实验性 Journaling API 结合 Azure Blob 存储Chat Room基于 Orleans Streams 的终端聊天应用Stocksgrain 定时器、HTTP 调用与临时缓存需要特别留意两类日志/事件溯源路线的差异Azure Blob JSON 样例使用的是实验性Microsoft.Orleans.Journaling包而 Journaled Todo List 使用的是受支持的 Orleans Event Sourcing 模型。运行 Azure Blob 与 Redis durable-state 样例的完整指引见 Journaling 样例指南。部署与运维Deployment and operations样例演示内容Azure Container Apps集群、客户端、Dashboard、scaler 与 Bicep 部署Azure App ServiceApp Service 上的多实例 Orleans 应用Transport Layer SecurityOrleans 网络通信的 mutual TLSVoting面向 Kubernetes 的部署与 Orleans Dashboard专题与多语言样例除上述分类外仓库目录还收录了 F#、Visual Basic 的 Hello Worldsamples/FSharpHelloWorld、samples/VBHelloWorld、游戏类样例samples/TicTacToe、自定义流适配器samples/Streaming/CustomDataAdapter、AWS 全栈样例samples/AWS/KinesisDynamoDB、Google Firestore 样例samples/GoogleFirestore、自定义 grain 调用返回类型样例samples/CustomGrainCallReturnType以及 Durable Jobs provider 迁移样例samples/DurableJobsMigration覆盖了语言互操作、云厂商集成与进阶运行时能力。本地验证样例Validate-Samples.ps1 深入解析克隆仓库后可在仓库根目录一键验证全部样例pwsh ./samples/Validate-Samples.ps1从 Validate-Samples.ps1 的源码可以看到这条命令远不止构建一下那么简单它执行了一系列结构一致性检查顺序如下清单 schema 校验gallery.json必须非空每个条目属性集合必须与slug, title, description, path, sourceRepository, image, languages, tags, featured精确一致slug不得重复path与image必须落在samples/目录内且真实存在每个条目对应的目录下必须有README.md。索引同步检查调用Update-Readme.ps1 -Check确认 samples/README.md 与清单保持同步。仓库卫生检查递归扫描并禁止.git、.vs、node_modules、artifacts等生成/元数据目录混入。解决方案一致性samples/Samples.slnx中的项目集合必须与samples下全部*.csproj / *.fsproj / *.vbproj文件完全一致不多不少同时校验根 Orleans.slnx 与src/下项目的一致性。包依赖治理校验每个可打包的源项目声明了PackageId样例引用的Microsoft.Orleans.*包必须由Orleans.slnx产出禁止在PackageReference上写非中心化版本号。样例独立性每个样例必须自带本地的Directory.Packages.props因为样例会被复制出仓库独立构建包版本在全部样例间不得冲突且ProjectReference不得指向本样例目录之外——样例必须能 standalone 构建。实际构建最后调用Build-Samples.ps1 -Configuration Release -NoIncremental以 Release 配置全量构建Samples.slnx并检查退出码。脚本全部通过后会打印Validated N gallery entries and M projects.。关于云服务凭证官方文档明确只有运行接入云服务的样例才需要云凭证编译这些样例并不需要——这与samples/README.md中的说明一致。因此本地做结构验证与编译验证是零外部依赖的。推荐的进阶路线综合官方文档的编排一条典型的进阶路径可以是从 Hello World 建立最小闭环用 Build your first Orleans app 建立多项目工程感精读 Orleans 架构设计原则 理解运行时设计目标跑通 Simple Streaming 并跟进 流式恢复教程用 端到端测试教程 建立测试体系按业务场景从 samples 中挑选完整应用进行阅读与改造最后用pwsh ./samples/Validate-Samples.ps1验证你本地对样例的任何调整是否破坏仓库约定。赞分享后端微服务【免费下载链接】orleansCloud Native application framework for .NET项目地址https://gitcode.com/gh_mirrors/or/orleans点击查看免费下载相关推荐CANN PyPTO 官方样例代码完全指南从 Hello World 到 Attention 的分级学习路径CANN PyPTO 官方样例代码完全指南从 Hello World 到 Attention 的分级学习路径 PyPTOParallel Tensor/Ti人工智能编译器模型编译深度学习高性能计算CANNAscend揭秘TextSnatcher如何在Linux桌面秒速提取图片文字揭秘TextSnatcher如何在Linux桌面秒速提取图片文字 你是否曾遇到过这样的困扰看到一张图片中的文字信息需要复制却只能手动逐字敲打或者需要从Agent Starter Pack 视频教程全指南从 Demo 到生产环境部署的完整学习路径Agent Starter Pack 视频教程全指南从 Demo 到生产环境部署的完整学习路径 Agent Starter Pack 官方文档维护着一份精选视人工智能AI Agent开发工具代码生成LLMOps上一篇30秒装好 Starship全平台终端提示符落地手册下一篇Electron-React-Boilerplate硬件访问串口/USB设备通信实现指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考