SlideShare a Scribd company logo
Static Web AppsとBlazor
WebAssemblyのすすめ
株式会社SAKURUG
エンジニアリングユニット
草場 友光
.NET ラボ 2021年12月
自己紹介
• 普段は主にWebFormsアプリ
の保守のお仕事をしてます。
• 古めのシステムが多いので時
代に取り残されぬよう新しい技
術を一つでも入れるよう日々努
力しています。
• tomo_kusaba
宣伝
【VISION】ひとの可能性を開花させる企業であり続ける
VISIONに共感できる仲間募集中。
注意
• 個人の見解・解釈が多分に入っています。
• 見解の相違・事実誤認などありましたらご指摘ください。
• #dotnetlabでtweetすると右側に表示されます
今日の目的
• AppServiceとStatic Web Apps、Blazor ServerとBlazor
WebAssemblyを比較しながら優位点を探っていきます
主なトピック
• ホスティングモデルの違い
• DBアクセスがあるアプリケーションの構築
• プロジェクト構造の違い
• AppServiceとStatic Web Appsの価格
ホスティングモデルの違い-
Blazor WebAssembly
• Blazor WebAssemblyはブラウザのクライアント側で
WebAssemblyベースの.NETランタイム上で実行される
• 通常、Web API呼び出しまたはSignalRやgRPCなどを使用す
るネットワークを通じてバックエンドとのやりとりを行う
Browser
UI Thread
Blazor
ホスティングモデルの違いー
Blazer Server
• ASP.NET Coreアプリ内からサーバ上で実行
• UIの更新、イベント処理、JavaScriptの呼び出しはSignalR接
続経由で処理される
Browser
dotnet.exe
ASP.NET.Core
Blazor
SignalR
常に、サーバとブラウザ
との間にSignalR接続があ
ることに注意が必要
ホスティングモデルそれぞれの利点
Blazor WebAssembly Blazor Server
• サーバ側に依存関係がなくブラウザにロード
されたあと完全に機能する
• 作業がクライアント側にオフロードされる
• アプリをホストするのにASP.NET Core Web
サーバが必要ない
• CDNからアプリを提供するなどのサーバレス
シナリオが可能
• ダウンロードサイズが小さく、アプリの読み
込み時間が短い
• .NET Coreと互換のあるAPIの使用を含めて
サーバの機能を最大限に活用できる
• サーバ上でアプリが実行されるためデバッグ
などの.NETツールが想定通りに動作する
• WebAssemblyがサポートされていないブラウ
ザやリソースが制限されたデバイスで動作す
る
ホスティングモデルそれぞれの制限
Blazor WebAssembly Blazor Server
• アプリがブラウザの機能に制限される
• ブラウザはWebAssemblyのサポートが必要
• ダウンロードサイズが大きくなりアプリの読
み込みに時間がかかる
• ユーザのすべての操作にネットワークホップ
が関与するので遅延時間が長くなる
• オフラインサポートがない
• サーバーとの接続が切れるとアプリの動作が
停止する
• ユーザが多くいるアプリでスケラービティが
課題となる
• サーバではユーザ分のクライアント接続を管
理してクライアントの状態を処理する必要あ
る
• アプリを提供するのにASP.NET Coreサーバ
が必要
ホスティングモデルまとめ
• Blazor Serverはフル機能を使える反面、サーバと常に通信で
きる必要がある
• Blazor WebAssemblyはブラウザの制限によって制約を受ける
がASP.NET Coreサーバは必要なく可搬性に優れる
DBアクセスがあるアプリケーションの
構築
• Static Web Appsにホストする場合、Functionが使用できる
• FunctionでDBアクセスをし、APIを提供する
Browser
UI Thread
Blazor
Azure Function/
Container Apps/
ASP.NET Core
WebAPI
DB
JSON/
gRPC
もう少し細かく。。。
• バックエンドとのやりとりがシリアライズ化されることにより
画面オブジェクトとDBオブジェクトの分断がされる
Browser
UI Thread
Blazor Azure Function/
Container Apps/
ASP.NET Core
WebAPI
DB
JSON/
gRPC
razor.cs
razor
view
object
ここでのBlazor WebAssemblyの利点
• バックエンドと分離して疎結合の形で開発できる
• バックエンド側もFunctionやコンテナなどマイクロサービスな
開発ができる
• 大人数での大規模開発に向きやすい
プロジェクト構造の違い
Blazor WebAssembly Blazor Server
• フロントエンドとバックエンドを分割して開
発することも可能
• フロントエンド側のみの部分のみのプロジェ
クトなのでバックエンドは様々なテクノロ
ジーを選択できる
• フロントエンドとバックエンドは一体
• モノシリックな構造
• 1つのアプリケーションが1つのプロジェクト
AppServiceの価格 (Windows)
F1(無料) D1(共有) B1(開発・テスト) S1(実運用) P1v3(ハイパ
フォーマンス)
P2v3
コア数 共有(60CPU分/日) 共有(240CPU分/日) 1 1 2 4
RAM 1GB 1GB 1.75GB 1.75 8GB 16GB
ストレージ 1GB 1GB 10GB 50GB 250GB 250GB
カスタムドメイン - ○ ○ ○ ○ ○
自動スケール - - - ○ ○ ○
従量課金 ¥0 ¥1289.4/月/サイト ¥7458.3/月 ¥9944.4/月 ¥29327.6/月 ¥58655.2/月
価格は東日本リージョン 調査当時の価格です。
実際の価格は各自調査をお願いします。
Static Web Appsの価格
Free Standard(本番用)
含まれる帯域幅 サブスクリプションあたり100GB サブスクリプションあたり100GB
帯域幅の超過 なし ¥23/GB/サブスクリプション
カスタムドメイン アプリ用2 アプリごとに5
SSL証明書 無料 無料
カスタム認証 なし ○
Azure Function Managed Managedまたは持ち込み
価格 無料 ¥1039/月/アプリ
Functionは100万実行回数まで無料
価格は東日本リージョン 調査当時の価格です。
実際の価格は各自調査をお願いします。
価格面で優位
• バックエンドにFunctionを利用できるのなら圧倒的に価格優位
参考
• App Service のドキュメント
• Azure Static Web Apps のドキュメント
• ASP.NET Core Blazor の概要
• Azure Functions
• App Service
• Static Web Apps
告知
• C# Tokyoイベントに登壇します
おしまい
おしまい

More Related Content

PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PDF
Github codespaces すごく良い。もうこれで 十分なんじゃという話
PDF
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
PPTX
Visual Studio Code で C# でのアプリ開発
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
IoT のシナリオを変える Azure SQL Edge
PDF
O/Rマッパーによるトラブルを未然に防ぐ
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
Visual Studio Code で C# でのアプリ開発
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
IoT のシナリオを変える Azure SQL Edge
O/Rマッパーによるトラブルを未然に防ぐ

What's hot (20)

PDF
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
PPTX
自宅インフラの育て方 第2回
PDF
AWSでDockerを扱うためのベストプラクティス
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
PPTX
初心者向けMongoDBのキホン!
PDF
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
PDF
AWSのログ管理ベストプラクティス
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PDF
PostgreSQL10徹底解説
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
PPTX
Oracleからamazon auroraへの移行にむけて
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PPTX
Zabbix概論
PDF
Ansible AWXを導入してみた
PPTX
Ansible ではじめるインフラのコード化入門
PDF
S3 を単純ストレージとして 利用する手段の比較
PPTX
Dockerからcontainerdへの移行
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PDF
kube-system落としてみました
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
自宅インフラの育て方 第2回
AWSでDockerを扱うためのベストプラクティス
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
初心者向けMongoDBのキホン!
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
AWSのログ管理ベストプラクティス
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
PostgreSQL10徹底解説
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
Oracleからamazon auroraへの移行にむけて
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Zabbix概論
Ansible AWXを導入してみた
Ansible ではじめるインフラのコード化入門
S3 を単純ストレージとして 利用する手段の比較
Dockerからcontainerdへの移行
Dockerfile を書くためのベストプラクティス解説編
インフラエンジニアの綺麗で優しい手順書の書き方
kube-system落としてみました
Ad

Similar to Static Web AppsとBlazor WebAssemblyのすすめ (20)

PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
New Features of DotNet 6 Blazor WASM
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PPTX
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
PDF
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
PPTX
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
PDF
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
PPTX
Blazor WebAssembly と Windows Forms でのロジック共有例
PPTX
Blazor Web Assembly (C#) を触ってみた
PPTX
7 つの Blazor
PPTX
Interoperability of webassembly with javascript
PPTX
burikaigi2023
PDF
.NET Framework アプリケーションの NET 5 への 移行を考える
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
PDF
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
PPTX
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
PDF
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
New Features of DotNet 6 Blazor WASM
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Blazor でアプリを作ろう! ~テンプレートインストールから最初のデバッグ実行まで~
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor Web Assembly (C#) を触ってみた
7 つの Blazor
Interoperability of webassembly with javascript
burikaigi2023
.NET Framework アプリケーションの NET 5 への 移行を考える
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
モノづくりBlazor勉強会1回目資料_Blazorについて.pptx
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Ad

More from TomomitsuKusaba (18)

PDF
.NET 7におけるBlazorの新機能
PDF
ASP. NET Core 汎用ホスト概要
PDF
Web開発者にお勧め .NET MAUI Blazor App
PDF
Microsoft MVPとは?コミュニティ活動のすすめ
PDF
.NET 7期待の新機能
PDF
NET 6で実装された新しいLINQ API
PDF
.NET6新機能の振り返り
PDF
Web開発者が始める .NET MAUI Blazor App
PDF
BlazorにSwaggerを導入してみよう
PDF
MuseLoid規格の音源自作について
PDF
Entity Framework(Core)についての概要を学ぼう
PDF
.NET Lab2022年2月
PDF
保守性の高いアプリケーション設計について
PDF
リモートワークで買ってよかったもの
PDF
.NET 6の期待の新機能とアップデート
PPTX
.NETラボ2021年10月 .NETの過去と現在
PPTX
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
PPTX
.Netlab202107
.NET 7におけるBlazorの新機能
ASP. NET Core 汎用ホスト概要
Web開発者にお勧め .NET MAUI Blazor App
Microsoft MVPとは?コミュニティ活動のすすめ
.NET 7期待の新機能
NET 6で実装された新しいLINQ API
.NET6新機能の振り返り
Web開発者が始める .NET MAUI Blazor App
BlazorにSwaggerを導入してみよう
MuseLoid規格の音源自作について
Entity Framework(Core)についての概要を学ぼう
.NET Lab2022年2月
保守性の高いアプリケーション設計について
リモートワークで買ってよかったもの
.NET 6の期待の新機能とアップデート
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
.Netlab202107

Static Web AppsとBlazor WebAssemblyのすすめ