狠狠撸

狠狠撸Share a Scribd company logo
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
藉由 Akka.NET 來認識一個打
動圖靈獎得主的程式設計模型
- Actor Model
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
主講人:軟體主廚 Johnny
? 連任 5 年微軟最有價值專家(MVP)
? 經歷產業
? 系統整合
? 媒體
? 金融投資
? 現任「主廚的軟體廚房有限公司」創辦人
? 粉絲專頁 https://www.facebook.com/appcookhouse
? 部 落 格 https://www.dotblogs.com.tw/supershowwei
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
什麼是 Actor Model?
? 萬物皆 Actor,Actor 之間以 Message 來做溝通。
? 三種行為
? 傳送 Message 給其他 Actor
? 建立新的 Actor
? 指定如何處理下一個 Message
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Akka.NET
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Actor vs actor
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
貼近真實世界的程式設計方式
? 每個人是獨立的個體(Isolation)
? 透過訊息在溝通(Message)
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Order
Product
Application Endpoints
Inventory
Payment
Logistics
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Presentation Layer
Business Layer
Data Access Layer
Product Order Payment ……
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
切割!Why?
? 清楚的職責
? 關注點分離
? 避免大泥球
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Order Product Payment
Order
DataAccess
Performance Issue
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Application ActorSystem
actor
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
actor
Message 1
Message 2
Message 0
訊息緩衝
Mailbox
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Send a message to an actor
? Tell, don’t ask.
? Command, Event, Document
? Message is immutable.
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Forward
Customer
Payment
Inventory
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Event Bus
Payment
Order
EventStream
OrderPaid
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Order
Product
Application Endpoints
Paym
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Routing
Sender Router
Routee
Routee
Routee
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Routing
? Pool
? 擁有相同行為的 actor 群組
? Group
? 不一定擁有相同行為的 actor 群組
? Strategy
? RoundRobin、Broadcast、Random、…etc,大概 7~8 種。
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Recap
? actor > ActorSystem > Application
? Mailbox
? Tell, don’t ask.
? Forward
? Event Bus
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
言有未逮
? Event Sourcing
? Scheduler
? Circuit Breaker
? Remoting
? Clusteing
? Monitoring
? Testing
? Service Discovery
? ……
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
整合 .NET 不同 UI 框架
? Windows Application
? 以 .NET Framework 4.8 的 WinForms 為例
? ASP.NET Core MVC
? Regular Web App
? SignalR Web App
? ASP.NET Core Blazor
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Actor Model with DDD
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Ports & Adapters Architecture
參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Complexity Stack
參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
Simplicity Stack
參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
軟 體 廚 房
appcookhouse
軟體設計| 技術顧問| 人力支援
DDD Distilled

More Related Content

藉由 Akka.NET 來認識一個打動圖靈獎得主的程式設計模型 - Actor Model

  • 1. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 藉由 Akka.NET 來認識一個打 動圖靈獎得主的程式設計模型 - Actor Model
  • 2. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 主講人:軟體主廚 Johnny ? 連任 5 年微軟最有價值專家(MVP) ? 經歷產業 ? 系統整合 ? 媒體 ? 金融投資 ? 現任「主廚的軟體廚房有限公司」創辦人 ? 粉絲專頁 https://www.facebook.com/appcookhouse ? 部 落 格 https://www.dotblogs.com.tw/supershowwei
  • 3. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 什麼是 Actor Model? ? 萬物皆 Actor,Actor 之間以 Message 來做溝通。 ? 三種行為 ? 傳送 Message 給其他 Actor ? 建立新的 Actor ? 指定如何處理下一個 Message
  • 4. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Akka.NET
  • 5. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Actor vs actor
  • 6. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 貼近真實世界的程式設計方式 ? 每個人是獨立的個體(Isolation) ? 透過訊息在溝通(Message)
  • 7. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Order Product Application Endpoints Inventory Payment Logistics
  • 8. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Presentation Layer Business Layer Data Access Layer Product Order Payment ……
  • 9. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 切割!Why? ? 清楚的職責 ? 關注點分離 ? 避免大泥球
  • 10. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Order Product Payment Order DataAccess Performance Issue
  • 11. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Application ActorSystem actor
  • 12. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 actor Message 1 Message 2 Message 0 訊息緩衝 Mailbox
  • 13. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Send a message to an actor ? Tell, don’t ask. ? Command, Event, Document ? Message is immutable.
  • 14. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Forward Customer Payment Inventory
  • 15. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Event Bus Payment Order EventStream OrderPaid
  • 16. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Order Product Application Endpoints Paym
  • 17. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Routing Sender Router Routee Routee Routee
  • 18. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Routing ? Pool ? 擁有相同行為的 actor 群組 ? Group ? 不一定擁有相同行為的 actor 群組 ? Strategy ? RoundRobin、Broadcast、Random、…etc,大概 7~8 種。
  • 19. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Recap ? actor > ActorSystem > Application ? Mailbox ? Tell, don’t ask. ? Forward ? Event Bus
  • 20. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 言有未逮 ? Event Sourcing ? Scheduler ? Circuit Breaker ? Remoting ? Clusteing ? Monitoring ? Testing ? Service Discovery ? ……
  • 21. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 整合 .NET 不同 UI 框架 ? Windows Application ? 以 .NET Framework 4.8 的 WinForms 為例 ? ASP.NET Core MVC ? Regular Web App ? SignalR Web App ? ASP.NET Core Blazor
  • 22. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Actor Model with DDD
  • 23. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Ports & Adapters Architecture 參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
  • 24. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Complexity Stack 參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
  • 25. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 Simplicity Stack 參考自 /Lightbend/using-the-actor-model-with-domaindriven-design-ddd-in-reactive-systems-with-vaughn-vernon
  • 26. 軟 體 廚 房 appcookhouse 軟體設計| 技術顧問| 人力支援 DDD Distilled