狠狠撸

狠狠撸Share a Scribd company logo
.NET 7 家族新成員:
Microsoft Orleans v7
Microsoft Orleans快速簡介
Microsoft Orleans 是什麼?
? RPC + Virtual Actor Model 分散式運算框架,
為 .NET 基金會所有(MIT授權)
? GitHub: https://aka.ms/orleans
? Doc: https://aka.ms/orleans-docs
? 原 Microsoft Research 專案,用在 Xbox Halo
即時網路遊戲後端分散式運算框架
? 從.NET 7開始跟 ASP.NET Core 7整合,提供
ASP.NET Core的跨主機狀態同步服務
Build 2022: https://youtu.be/-4BelRbFOVo
Orleans 適用場景
https://learn.microsoft.com/training/modules/orleans-product-introduction/4-when-to-use-orleans
Orleans的使用方法
? Virtual Actor Model:
? Orleans 運算單元(Grains)的 RPC(Remote
Procedure Call) 方法不會同時執行
? Virtual Actor Model 讓應用開發者不必自行管理
Actor Model運算單元(在 Orleans 術語叫
『Grain』)的物件生命週期
? 本機/遠端Grain的RPC呼叫方式均相同:
1. DI注入 IGrainFactory / IGrainClient 物件
2. 利用上述DI注入物件呼叫
GetGrain<IGrainInterface>(identity)
以取得”特定Grain”的RPC呼叫參考實體
3. 呼叫RPC參考實體提供的非同步方法
.NET 7 家族新成員:Microsoft Orleans v7
Orleans的開發方法 – 定義Grain
? Grain 程式碼分為:
? RPC 介面宣告
(Grain Interface)
? RPC方法實作類別
(Grain Class)
? Grain Class在 Orleans v3.x 一定得繼承自
Orleans.Grain 類別
? 在 Orleans v7+ 可使用 POCO
(Plain Old CLR Object) 類別來定義,不過Grain
Class必需實作 IGrainBase 介面的
GrainContext 屬性
? Grain Class 內可用 .NET Core/5+ 內建
Dependency Injection取得各種服務物件
? Grain生命週期可以有 IGrainBase 介面方法實作,
週期狀態轉移時由Orleans框架呼叫
Orleans的開發方法 – Grain狀態(State)儲存
? Grain 本身可為無狀態或有狀態設計,如有狀態
變數,需使用注入的 IPersistentState 物
件,搭配 Silo 配置搭配的資料庫或雲端儲存體
Persistence provider,以便 Grain 休眠前將狀
態變數資料寫入儲存
? 開發者需自己呼叫 WrtieStateAsync()才會
儲存資料
? Grain 生命週期啟動時 Orleans Runtime 自動
呼叫 ReadStateAsync()將儲存資料載入
? ClearStateAsync()可清除Grain存於資料庫/
雲端儲存體的資料
https://dotnet.github.io/orleans/docs/grains/grain_persistence/index.html
Orleans的運營環境配置元件 - Silo
? 『Silo 裝著 Grains』,即 Grains 實際在執行時是跑在叫
Silo 的執行環境上
? 萬一 Grains 在某 Silo上執行時當掉,Orleans會負責在
別的 Silo 上把當時正執行的 Grains重新復活
? Silo 有單獨 Generic Host 或合併在 ASP.NET Core 的
Web服務一起執行(Co-Host)的方式
? Silo 負責提供一堆 Grains 的 Orleans API 功能所需底層
服務,由加入/設定 Provider 的方式寫在ASP.NET Core
Builder配置程式碼(Program.cs / Startup.cs)的
“SiloBuilder”
Orleans範例 - 短網址服務
? 原本MS Learn課程的程式碼範例:
https://learn.microsoft.com/training
/modules/orleans-build-your-first-
app
? 課程範例的上雲補完版,增加 第三方
OrleansDashboard( https://github.c
om/OrleansContrib/OrleansDashbo
ard )整合、部署至 Azure App Service
的 Bicep IaC(Infra as Code) scripts、
OpenTelemetry 收集遙測資料至
Azure Application Insight:
https://github.com/windperson/Orle
ansNet7UrlShortener
? Bicep教學可看IThome 30天鐵人賽
Microsoft Orleans雲原生開發框架從
小白到大神系列 第 37 篇:
https://ithelp.ithome.com.tw/articles
/10309646
短網址服務的架構 - Smart Cache Pattern
? https://github.com/OrleansContrib/DesignP
atterns/blob/master/Smart%20Cache.md
? 利用 Orleans 的 Grain 可有狀態且保持在記憶
體上存活一陣子的特性,達到 Redis Cache /
Memcached 的替代功能
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7
相關進階參考資源
? GitHub: aka.ms/orleans
? Contributor's repo: github.com/OrleansContrib
? Discord: aka.ms/orleans-discord
? Official Docs: aka.ms/orleans-docs
? MS Learn tutorial:
learn.microsoft.com/en-us/training/modules/orleans-product-introduction
learn.microsoft.com/en-us/training/modules/orleans-build-your-first-app
? Microsoft Orleans雲原生開發框架從小白到大神:
https://ithelp.ithome.com.tw/users/20130498/ironman/5259
? YouTube video:
https://youtu.be/WUZw78P-Zg8
https://youtu.be/7OVU9Mqqzgs
https://youtu.be/3NT7uMV8GhQ
? Book: Concurrent Patterns and Best Practices:
https://www.packtpub.com/product/concurrent-patterns-and-best-practices/9781788627900
? Book: Distributed .NET with Microsoft Orleans:
https://www.packtpub.com/product/distributed-net-with-microsoft-orleans/9781801818971
? Book:
Orleans:构建高性能分布式 Actor 服务 https://www.tenlong.com.tw/products/9787111691099

More Related Content

What's hot (20)

twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
Traffic Control with Envoy Proxy
Traffic Control with Envoy ProxyTraffic Control with Envoy Proxy
Traffic Control with Envoy Proxy
Mark McBride
?
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Takahiko Ito
?
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
Hideki Takase
?
そんなトランサ?クションマネーシ?ャて?大丈夫か?
そんなトランサ?クションマネーシ?ャて?大丈夫か?そんなトランサ?クションマネーシ?ャて?大丈夫か?
そんなトランサ?クションマネーシ?ャて?大丈夫か?
takezoe
?
Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in Kubernetes
Rafa? Leszko
?
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
?
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
?
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
Masahiko Sawada
?
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
暁 三宅
?
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーションアーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
Masahiko Sawada
?
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
?
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
?
Keystone fernet token
Keystone fernet tokenKeystone fernet token
Keystone fernet token
Yuki Nishiwaki
?
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
wata2ki
?
谤蝉测苍肠のちょっとイイ话
谤蝉测苍肠のちょっとイイ话谤蝉测苍肠のちょっとイイ话
谤蝉测苍肠のちょっとイイ话
Kazuhiro Oinuma
?
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
Traffic Control with Envoy Proxy
Traffic Control with Envoy ProxyTraffic Control with Envoy Proxy
Traffic Control with Envoy Proxy
Mark McBride
?
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Elasticsearch の検索精度のチューニング ?テストを作って高速かつ安全に?
Takahiko Ito
?
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
狈别谤惫别蝉が开拓する「贰濒颈虫颈谤で滨辞罢」の新世界
Hideki Takase
?
そんなトランサ?クションマネーシ?ャて?大丈夫か?
そんなトランサ?クションマネーシ?ャて?大丈夫か?そんなトランサ?クションマネーシ?ャて?大丈夫か?
そんなトランサ?クションマネーシ?ャて?大丈夫か?
takezoe
?
Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in Kubernetes
Rafa? Leszko
?
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
?
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
?
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
今秋リリース予定の笔辞蝉迟驳谤别厂蚕尝11を彻底解説
Masahiko Sawada
?
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
谤别补肠迟-蝉肠谤颈辫迟蝉は飞别产辫补肠办で何をしているのか
暁 三宅
?
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーションアーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
アーキテクチャから理解する笔辞蝉迟驳谤别厂蚕尝のレプリケーション
Masahiko Sawada
?
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
?
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
wata2ki
?
谤蝉测苍肠のちょっとイイ话
谤蝉测苍肠のちょっとイイ话谤蝉测苍肠のちょっとイイ话
谤蝉测苍肠のちょっとイイ话
Kazuhiro Oinuma
?

Similar to .NET 7 家族新成員: Microsoft Orleans v7 (20)

DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang
?
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
Gelis Wu
?
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
Ko Ko
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
?
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
國昭 張
?
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
Will Huang
?
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
基于厂测尘蹿辞苍测框架下的快速公司级应用开发
基于厂测尘蹿辞苍测框架下的快速公司级应用开发基于厂测尘蹿辞苍测框架下的快速公司级应用开发
基于厂测尘蹿辞苍测框架下的快速公司级应用开发
mysqlops
?
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
q3boy
?
Big Java, Big Data
Big Java, Big DataBig Java, Big Data
Big Java, Big Data
Kuo-Chun Su
?
使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式
Gelis Wu
?
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
Bo-Yi Wu
?
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
Yu Lung Shao
?
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
Qiangning Hong
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
Train.IO 【第六期-OpenStack 二三事】
Train.IO 【第六期-OpenStack 二三事】Train.IO 【第六期-OpenStack 二三事】
Train.IO 【第六期-OpenStack 二三事】
inwin stack
?
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure
Bruce Chen
?
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
?
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang
?
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
Gelis Wu
?
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
Ko Ko
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
國昭 張
?
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
Will Huang
?
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
基于厂测尘蹿辞苍测框架下的快速公司级应用开发
基于厂测尘蹿辞苍测框架下的快速公司级应用开发基于厂测尘蹿辞苍测框架下的快速公司级应用开发
基于厂测尘蹿辞苍测框架下的快速公司级应用开发
mysqlops
?
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
q3boy
?
使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式
Gelis Wu
?
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
Bo-Yi Wu
?
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
Yu Lung Shao
?
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
Qiangning Hong
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
Train.IO 【第六期-OpenStack 二三事】
Train.IO 【第六期-OpenStack 二三事】Train.IO 【第六期-OpenStack 二三事】
Train.IO 【第六期-OpenStack 二三事】
inwin stack
?
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure
Bruce Chen
?
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
?

More from twMVC (20)

twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
?
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
?
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
?
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
?
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
?
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
?
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
twMVC
?
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
?
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
?
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
?
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
?
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
?
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
?
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generator
twMVC
?
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
?
迟飞惭痴颁#36颁#的美丽与哀愁
迟飞惭痴颁#36颁#的美丽与哀愁迟飞惭痴颁#36颁#的美丽与哀愁
迟飞惭痴颁#36颁#的美丽与哀愁
twMVC
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
?
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
?
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
?
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
?
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
?
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
?
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
?
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
?
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
twMVC
?
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
?
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
?
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
?
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
?
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
?
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
?
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generator
twMVC
?
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
?
迟飞惭痴颁#36颁#的美丽与哀愁
迟飞惭痴颁#36颁#的美丽与哀愁迟飞惭痴颁#36颁#的美丽与哀愁
迟飞惭痴颁#36颁#的美丽与哀愁
twMVC
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
?
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
?

.NET 7 家族新成員: Microsoft Orleans v7

  • 1. .NET 7 家族新成員: Microsoft Orleans v7 Microsoft Orleans快速簡介
  • 2. Microsoft Orleans 是什麼? ? RPC + Virtual Actor Model 分散式運算框架, 為 .NET 基金會所有(MIT授權) ? GitHub: https://aka.ms/orleans ? Doc: https://aka.ms/orleans-docs ? 原 Microsoft Research 專案,用在 Xbox Halo 即時網路遊戲後端分散式運算框架 ? 從.NET 7開始跟 ASP.NET Core 7整合,提供 ASP.NET Core的跨主機狀態同步服務
  • 5. Orleans的使用方法 ? Virtual Actor Model: ? Orleans 運算單元(Grains)的 RPC(Remote Procedure Call) 方法不會同時執行 ? Virtual Actor Model 讓應用開發者不必自行管理 Actor Model運算單元(在 Orleans 術語叫 『Grain』)的物件生命週期 ? 本機/遠端Grain的RPC呼叫方式均相同: 1. DI注入 IGrainFactory / IGrainClient 物件 2. 利用上述DI注入物件呼叫 GetGrain<IGrainInterface>(identity) 以取得”特定Grain”的RPC呼叫參考實體 3. 呼叫RPC參考實體提供的非同步方法
  • 7. Orleans的開發方法 – 定義Grain ? Grain 程式碼分為: ? RPC 介面宣告 (Grain Interface) ? RPC方法實作類別 (Grain Class) ? Grain Class在 Orleans v3.x 一定得繼承自 Orleans.Grain 類別 ? 在 Orleans v7+ 可使用 POCO (Plain Old CLR Object) 類別來定義,不過Grain Class必需實作 IGrainBase 介面的 GrainContext 屬性 ? Grain Class 內可用 .NET Core/5+ 內建 Dependency Injection取得各種服務物件 ? Grain生命週期可以有 IGrainBase 介面方法實作, 週期狀態轉移時由Orleans框架呼叫
  • 8. Orleans的開發方法 – Grain狀態(State)儲存 ? Grain 本身可為無狀態或有狀態設計,如有狀態 變數,需使用注入的 IPersistentState 物 件,搭配 Silo 配置搭配的資料庫或雲端儲存體 Persistence provider,以便 Grain 休眠前將狀 態變數資料寫入儲存 ? 開發者需自己呼叫 WrtieStateAsync()才會 儲存資料 ? Grain 生命週期啟動時 Orleans Runtime 自動 呼叫 ReadStateAsync()將儲存資料載入 ? ClearStateAsync()可清除Grain存於資料庫/ 雲端儲存體的資料 https://dotnet.github.io/orleans/docs/grains/grain_persistence/index.html
  • 9. Orleans的運營環境配置元件 - Silo ? 『Silo 裝著 Grains』,即 Grains 實際在執行時是跑在叫 Silo 的執行環境上 ? 萬一 Grains 在某 Silo上執行時當掉,Orleans會負責在 別的 Silo 上把當時正執行的 Grains重新復活 ? Silo 有單獨 Generic Host 或合併在 ASP.NET Core 的 Web服務一起執行(Co-Host)的方式 ? Silo 負責提供一堆 Grains 的 Orleans API 功能所需底層 服務,由加入/設定 Provider 的方式寫在ASP.NET Core Builder配置程式碼(Program.cs / Startup.cs)的 “SiloBuilder”
  • 10. Orleans範例 - 短網址服務 ? 原本MS Learn課程的程式碼範例: https://learn.microsoft.com/training /modules/orleans-build-your-first- app ? 課程範例的上雲補完版,增加 第三方 OrleansDashboard( https://github.c om/OrleansContrib/OrleansDashbo ard )整合、部署至 Azure App Service 的 Bicep IaC(Infra as Code) scripts、 OpenTelemetry 收集遙測資料至 Azure Application Insight: https://github.com/windperson/Orle ansNet7UrlShortener ? Bicep教學可看IThome 30天鐵人賽 Microsoft Orleans雲原生開發框架從 小白到大神系列 第 37 篇: https://ithelp.ithome.com.tw/articles /10309646
  • 11. 短網址服務的架構 - Smart Cache Pattern ? https://github.com/OrleansContrib/DesignP atterns/blob/master/Smart%20Cache.md ? 利用 Orleans 的 Grain 可有狀態且保持在記憶 體上存活一陣子的特性,達到 Redis Cache / Memcached 的替代功能
  • 21. 相關進階參考資源 ? GitHub: aka.ms/orleans ? Contributor's repo: github.com/OrleansContrib ? Discord: aka.ms/orleans-discord ? Official Docs: aka.ms/orleans-docs ? MS Learn tutorial: learn.microsoft.com/en-us/training/modules/orleans-product-introduction learn.microsoft.com/en-us/training/modules/orleans-build-your-first-app ? Microsoft Orleans雲原生開發框架從小白到大神: https://ithelp.ithome.com.tw/users/20130498/ironman/5259 ? YouTube video: https://youtu.be/WUZw78P-Zg8 https://youtu.be/7OVU9Mqqzgs https://youtu.be/3NT7uMV8GhQ ? Book: Concurrent Patterns and Best Practices: https://www.packtpub.com/product/concurrent-patterns-and-best-practices/9781788627900 ? Book: Distributed .NET with Microsoft Orleans: https://www.packtpub.com/product/distributed-net-with-microsoft-orleans/9781801818971 ? Book: Orleans:构建高性能分布式 Actor 服务 https://www.tenlong.com.tw/products/9787111691099