不會 JavaScript 沒關係
用 Blazor 來解決前端需求
成為 Full Stack .NET 開發者吧
Alan Tsai
@Alan Tsai 的學習筆記
簡單自我介紹
• Alan Tsai
• 蔡孟玹
• 後端工程師
• .NET 技術爲主
• 喜歡學習不同東西
• Azure
• Data Science、Chatbot
• DevOps、Container
• 架構、加强開發的 Tools
• 翻譯文章/軟體
• 看小說
@Alan Tsai 的學習筆記
教就是最好的學習方式 - 喜歡考證驗證所學
@Alan Tsai 的學習筆記
喜歡技術分享
• 2020 Global Azure
• Azure API Management
協助邁向Open API及Micro Service架構的好用服務
• 2020 Microsoft Online Tech Forum
• Keep Azure cost down
• 2019 Microsoft Insider DevTour Taipei
• Future proof your desktop apps with .NET core
• .NET Conf 2019
• 用 Bot Framework 開發 Chatbot = 支援多平臺 + 包含平臺客制功能 - 以Line爲例
@Alan Tsai 的學習筆記
喜歡技術分享
• Trainocate
• AZ-104、AZ-204、AZ-400、DP-200、DP-201
• 台灣智慧自動化與機器人協會
• 運用Python進行大數據分析
• 機器學習基礎理論課程及人工智慧 – ML.NET
• 中華電信學院
• 使用Azure AI打造有人工智能的Line聊天機器人
• DevOps與CI/CD實務研習班
• 聖森内部教育訓練
• Azure DevOps CI/CD 應用
@Alan Tsai 的學習筆記
歡迎訂閲、按贊 + 分享
@Alan Tsai 的學習筆記
contact@alantsai.net
• Alan Tsai 的學習筆記
• https://blog.alantsai.net
• FB粉絲頁
• http://fb.alantsai.net
• Youtube
• http://yt.alantsai.net
Agenda
• Why Blazor?
• What is Blazor?
• How to develop Blazor?
• Future of Blazor
@Alan Tsai 的學習筆記
Why Blazor?
@Alan Tsai 的學習筆記
人對於網頁的操作體驗要求越來越高
@Alan Tsai 的學習筆記
@Alan Tsai 的學習筆記
還是自己來好了
@Alan Tsai 的學習筆記
問題是什麼?
• .NET 就學不完了
• 這麼多前端框架
• 還有大魔王 JavasScript
• TypeScript
@Alan Tsai 的學習筆記
總結
• 技術不一致
• 開發環境不同
• 生態不同
• 到底是要 PascalCase 還是 CamalCase 就搞死你
• 維護困難
• 共用物件要定義兩次
@Alan Tsai 的學習筆記
用 JavaScript 統一世界
@Alan Tsai 的學習筆記
@Alan Tsai 的學習筆記
@Alan Tsai 的學習筆記
What is Blazor
@Alan Tsai 的學習筆記
https://...
JS
.NET
@Alan Tsai 的學習筆記
Blazor
• 使用 .NET 作為前端 Web UI 的操作 – 取代 JavaScript
• 可以呼叫 JavaScript 或者瀏覽器的 API
• 用 C# 和 Razor 開發出可以重複使用的 UI – Component
• 讓前端和後端程式碼可以共用
@Alan Tsai 的學習筆記
Blazor History
2018
Experiment
2019/04
Preview
2019/09
Release
Sever
2020/05
Release
WebAssembly
Later
Other
Platform
模式
Blazor WebAssemblyBlazor Server
ASP.NET Core Blazor hosting models
@Alan Tsai 的學習筆記
Blazor Server
• 優點
• 啟動速度快
• 完整 ASP.NET Framework
• 不需要 WebAssembly
• 機敏訊息存在 Server
• 缺點
• 不能離線使用
• 需要伺服器執行 Server
• 程式跑相對較慢 – 網路傳輸 SignalR ServiceApp Service
@Alan Tsai 的學習筆記
Blazor WebAssembly
• 優點
• 速度快 – 接近原生
• 可以離線使用
• 不用伺服器 – 靜態網站
• 大部分新瀏覽器原生支援
• 缺點
• 瀏覽器做所有的事情 – 慢
• 啟動比較慢 – 下載檔案
• 需要 WebAssembly
Azure Static Web App Azure Blob Statice Site
@Alan Tsai 的學習筆記
速度提升
A talk for trailblazers - Blazor in .NET 5
@Alan Tsai 的學習筆記
Debug 變得簡單
• 下中斷點
• 可以看當下的參數
Debug ASP.NET Core Blazor WebAssembly
@Alan Tsai 的學習筆記
應該用 Server 還是 WebAssembly?
@Alan Tsai 的學習筆記
@Alan Tsai 的學習筆記
Server vs WebAssembly
@Alan Tsai 的學習筆記
Try .NET
Introduction to C#
• 全面使用 Blazor
• 節省了大量的 Server
資源需求
@Alan Tsai 的學習筆記
@Alan Tsai 的學習筆記
DiabloBlazor
• 雙 WebAssembly
• C# WebAssembly PWA
• C++ WebAssembly Game
• https://github.com/n-stefan/diabloblazor
• https://n-stefan.github.io/diabloblazor/
@Alan Tsai 的學習筆記
How to develop Blazor?
@Alan Tsai 的學習筆記
環境準備
• 開發工具
• Visual Studio
• Visual Studio Code
• 任何喜歡的編輯器
• 安裝
• Visual Studio + Web Development
• Visual Studio Code + C# Extension
• .NET Core SDK
@Alan Tsai 的學習筆記
Visual Studio 建立新專案
@Alan Tsai 的學習筆記
dotnet cli
dotnet new blazorwasm
dotnet new blazorserver
@Alan Tsai 的學習筆記
Demo:建立 Blazor App
@Alan Tsai 的學習筆記
全部 C# 控制
@Alan Tsai 的學習筆記
Demo:建立 ToDo App
@Alan Tsai 的學習筆記
建立一個 ToDo 頁面
@Alan Tsai 的學習筆記
Demo:
在 ASP .NET Core 用 Component
@Alan Tsai 的學習筆記
Future of Blazor
@Alan Tsai 的學習筆記
Blazor Server Web app
Every interaction handled on server
Prerendered HTML (optional)
Blazor WebAssembly Web app with client-side execution
Loaded from web server
Can work offline via Service Worker
Blazor PWA – OS installed Appears as native app (own window)
Works offline or online
Blazor Hybrid Native .NET renders to Electron / WebView
Appears as native app (own window)
Works offline or online
Web
Desktop
+ Mobile
Blazor Native Same programming model, but
rendering non-HTML UI@Alan Tsai 的學習筆記
Meet WebWindow, a cross-platform webview library for .NET Core
@Alan Tsai 的學習筆記
Meet WebWindow, a cross-platform webview library for .NET Core
@Alan Tsai 的學習筆記
結語
@Alan Tsai 的學習筆記
總結
• C# 才是王道
• 還是可以透過 Interop 操作 JavaScript
• 不要糾結是 Server 還是 WebAssembly 版本
• 用就對了 -可以直接轉
• 注意寫法
@Alan Tsai 的學習筆記
下一步
• 如果有在用 ASP .NET Core MVC
• 可以直接使用 Component
• Integrating Blazor Components into Existing Asp.Net Core MVC
Applications
• 有很多 Component Boundle
• 再不行自己做
@Alan Tsai 的學習筆記
參考資料
• Awesome Blazor
• 影片
• .NET Conf 2020
• Main
• Focus on Blazor
• Introduction to ASP.NET Core Blazor
• 官方文件
• Microsoft Learn
@Alan Tsai 的學習筆記
特別感謝

不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020 Stud4.TW

Editor's Notes

  • #57 Thanks for joining us! Have a great conference!