Orleans 示例项目

你好,世界!

Hello World Orleans 应用的示例代码。

一个 Hello, World! 应用程序,演示如何创建和使用第一个粒度。

Hello World 演示

  • 如何开始使用 Orleans
  • 如何定义和实现粒度接口
  • 如何获取对粒度的引用并调用它

购物车

购物车 Orleans 示例应用的屏幕截图。

由Microsoft Orleans构建的经典购物车示例应用程序。 此应用显示了以下功能:

  • 购物车:一个简单的购物车应用程序,利用Orleans的跨平台框架支持和可扩展的分布式应用程序功能。

    • 库存管理:编辑和/或创建产品库存。
    • 商店库存:浏览可购买的产品并将其添加到购物车。
    • 购物车:通过删除或更改每个商品的数量来查看购物车中所有项目的摘要并管理这些项目。

购物车演示

  • 如何创建分布式购物车体验
  • 如何管理粒度持久性,因为它与实时库存更新相关
  • 如何公开跨多个客户端的用户特定项

奇遇

Adventure Orleans 应用的封面艺术。

在图形用户界面、游戏机和大型多人游戏之前,有 VT100 终端和游戏,如 巨石洞冒险ZorkMicrosoft Adventure。 可能按今天的标准显得平淡,但在当时,它是一个充满怪物、鸣叫的鸟和可以拾取物品的神奇世界。 此示例从这些游戏中汲取灵感。

Adventure 演示

  • 如何使用粒度构建应用程序(在本例中为游戏)
  • 如何将外部客户端连接到 Orleans 群集(ClientBuilder

Chirper

Chirper Orleans 应用的示例代码。

一个社交网络发布/订阅系统,用户相互发送短消息。 发布者发送简短的 “Chirp” 消息(不会因各种法律原因与 “推文” 混淆)给关注他们的其他用户。

Chirper 演示

  • 如何使用 Orleans 构建简化的社交媒体/社交网络应用程序
  • 如何使用粒度持久性在粒度中存储状态(IPersistentState<T>
  • 实现多个粒度接口的粒度
  • 可重入粒度,允许在单线程环境中以交错的方式并发执行多个粒度调用。
  • 使用 grain 观察程序 () 接收来自 grain 的推送通知IGrainObserver

GPS 跟踪器

GPS Orleans 应用的示例代码。

用于在地图上跟踪 GPS 装备的 IoT 设备的服务。 设备位置使用 SignalR 进行近实时更新,演示了与 SignalR 集成的 Orleans 一种方法。 设备更新来自设备网关,使用独立进程实现,该进程连接到主服务,并模拟多个设备以伪随机方式在旧金山某个区域周围移动。

GPS 跟踪器演示

  • 如何使用 Orleans 生成 物联网 应用程序
  • 如何共同托管 Orleans 并与 ASP.NET Core SignalR 集成
  • 如何使用 Orleans 和 SignalR 将实时更新从 grain 推送到一组客户端

HanBaoBao

HanBaoBao - Orleans 示例应用程序屏幕捕获。

English-Mandarin 字典 Web 应用程序,演示如何部署到 Kubernetes、扇出粒度调用和请求限制。

HanBaoBao 演示

  • 如何使用 Orleans 生成现实应用程序
  • 如何将基于 Orleans的应用程序部署到 Kubernetes
  • 如何将 Orleans 与 ASP.NET Core 和 单页应用程序 JavaScript 框架(Vue.js) 集成
  • 如何实现漏桶请求限制
  • 如何从数据库加载和查询数据
  • 如何惰性和临时缓存结果
  • 如何将请求扇出到许多 grain 并收集结果

在线状态服务

Presence Service Orleans 应用的输出。

一种游戏呈现服务,类似于为 Orleans 构建的基于 的服务之一。 状态服务准实时跟踪玩家和游戏会话。

Presence Service 演示

  • Orleans 的实际用法的简化版本
  • 使用 grain 观察程序 () 接收来自 grain 的推送通知IGrainObserver

Tic Tac Toe

Tic Tac Toe Orleans 示例应用中的徽标。

使用 ASP.NET MVC、JavaScript 和基于 Web 的 Orleans 游戏。

Tic Tac Toe 演示

  • 如何使用 Orleans 构建在线游戏
  • 如何构建基本游戏大厅系统
  • 如何从 ASP.NET Core MVC 应用程序访问 Orleans grain

投票

这是从投票 Orleans 示例应用中捕获的屏幕。

用于对一组选项进行投票的 Web 应用程序。 此示例演示如何部署到 Kubernetes。 应用程序使用.NET 通用主机在同一进程中托管ASP.NET Core、Orleans以及Orleans仪表板

作为投票示例应用的一部分运行的 Orleans 仪表板。

Voting 演示

  • 如何将基于 Orleans的应用程序部署到 Kubernetes
  • 如何配置 Orleans 仪表板

聊天室

正在运行的聊天室示例应用的示例输出。Orleans

使用 Orleans Streams生成的基于终端的聊天应用程序。

Chat Room 演示

  • 如何使用 Orleans 生成聊天应用程序
  • 如何使用 Orleans 流

银行帐户

正在运行的银行帐户客户端示例 Orleans 应用的输出。

模拟银行账户,使用 ACID 交易在一组帐户之间转移随机金额。

Bank Account 演示

  • 如何使用 Orleans 事务安全地执行涉及具有 ACID 保证和可序列化隔离的多个有状态 grain 的操作。

Blazor ServerBlazor WebAssembly

Blazor Orleans 示例应用截图

这两个 Blazor 示例基于 的 Blazor 介绍性教程,并改编用于 Orleans。 Blazor WebAssembly 示例使用 Blazor WebAssembly 托管模型Blazor Server 示例使用 Blazor Server 托管模型。 它们包括交互式计数器、TODO 列表和天气服务。

Blazor 示例应用演示

  • 如何将 ASP.NET Core Blazor Server 与 Orleans 集成
  • 如何将 ASP.NET Core Blazor WebAssembly (WASM) 与 Orleans 集成

股票

正在运行的 Stocks 客户端示例 Orleans 应用的输出。

一个股票价格应用程序,它使用 HTTP 调用从远程服务提取价格,并将价格临时缓存在 grain 中。 BackgroundService 会定期轮询与一组股票符号对应的各种StockGrain谷物的更新股票价格。

股票示例应用演示

  • 如何在 Orleans 中使用
  • 如何在 grain 中使用计时器。
  • 如何使用 .NET 的 HttpClient 进行外部服务调用,并在 Grain 中缓存结果。

传输层安全性

正在运行的 TLS 示例 Orleans 应用的输出。

A Hello, World! 应用程序配置为使用双向 传输层安全协议 来保护每台服务器之间的网络通信。

传输层安全性演示

  • 如何为 Orleans 配置相互 TLS (mTLS) 身份验证

Visual Basic Hello World

一个使用 Visual Basic 的 Hello, World! 应用程序。

Visual Basic Hello World 演示

  • 如何使用 Visual Basic 开发基于 Orleans的应用程序

F# Hello World

一个使用 F# 的 Hello, World! 应用程序

F# Hello World 演示

  • 如何使用 F 开发基于 Orleans的应用程序#

流式处理:基于 Azure 事件中心的 Pub/Sub Streams

使用 Orleans Streams 的应用程序,其中 Azure 事件中心作为提供者和隐式订阅者。

Pub/Sub Streams 演示

  • 如何使用 Orleans 流
  • 如何使用 [ImplicitStreamSubscription(namespace)] 属性在 grain 中隐式订阅具有相应 ID 的流
  • 如何配置 Orleans 流以用于 Azure 事件中心

流式处理:自定义数据适配器

将 Orleans Streams 与推送到粒度通过Orleans使用的流(说明Orleans如何解释流消息)一起使用的应用程序。

自定义数据适配器演示

  • 如何使用 Orleans 流
  • 如何使用 [ImplicitStreamSubscription(namespace)] 属性在 grain 中隐式订阅具有相应 ID 的流
  • 如何配置 Orleans 流以用于 Azure 事件中心
  • 如何通过提供自定义 Orleans 实现(自定义数据适配器)来使用非EventHubDataAdapter 发布者发布的流消息