「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[ASP.NET]]
--[[Single-page application]]
--[[WebAssembly]]

* 目次 [#h95bdc31]
#contents

*概要 [#r7bd8e46]
-新しい[[SPA>Single-page application]]フレームワーク
--[[WebAssembly]]で動作する
--C#、Razor、およびHTMLに基づく

-C#で開発するので、
--(特にBlazor Serverにおいて)[[Visual Studio]]によって[[ASP.NET]]と強く結合している。
--昨今、 フロントとバックは様々な言語で開発される「統合」より「分離」が主流なので流行っていない。
--現時点、C#採用時点で、その必要性は薄いか。そして、一応、[[Visual Studio]]の販売の目的もありそう。

*詳細 [#pfc8f5c1]

**特徴 [#vddc66e1]
-Apache License, Version 2.0
-[[.NET Core]]の一部

***開発環境 [#webbcb86]
-前提環境
--[[.NET Core]] 2.1 以降
--[[Visual Studio]] 2017 以降
--Blazor Language Services Extensions

-開発スタイル
--HTMLベースであり、コンポーネントベース
---[[ASP.NET Web Forms]]的な方式
---[[ASP.NET Web Forms]]、[[ASP.NET MVC]]的な方式
---*.cshtmlは原則、BlazorComponentを継承
---カスタム・コントロールはBlazorComponentを継承して開発

--豊富な IntelliSense とツール
--開発中のブラウザでのライブリロード
--ブラウザと IDE の両方で完全な .NET デバッグ
--パブリッシュとアプリサイズのトリミング

***フレームワーク [#xa66f75a]
-Blazor WASM:[[SPA>Single-page application]]フレームワーク
--レイアウト
--ルーティング
--フォーム
--バリデーション
--[[DI]]: Dependency Injection(依存性の注入)
--JavaScript interop
--サーバーサイドレンダリング

-Blazor Server:ASP.NET の Update Panelの差分更新をSignalRで実現するようなアーキテクチャ
--上記の[[SPA>Single-page application]]フレームワーク機能は同梱される。
--大きな差異は、サーバーサイド実装が中心で、フロントエンド処理とWebAPIに依存しない点。
--(Blazor WASMの初回アクセス時の静的サーバーサイドレンダリングが動的化されている)
--[[.NET 8]] 以降の「Blazor Web App」では「SSR / Interactive Auto」という挙動が可能になった。~
(≒ 最初はサーバで描き、裏でWASMをDLし、準備ができたらクライアント側に切り替える)

***ハイブリッド化が可能 [#e18ce032]
-[[SPA>Single-page application]]フレームワークなので、[[PWA>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PWA%EF%BC%88Progressive%20Web%20Apps%EF%BC%89]]などで側(皮)ネイティブ的にラップして、ハイブリッド化が可能。
-[[.NET 6]]から、デスクトップアプリの開発にも対応する「Blazor desktop」が加わり、
-以降、Blazor Hybrid や [[.NET 8]] で Blazor United という俗称で呼ばれる新しい Blazorが登場(Blazor + [[Windows Forms]] or [[WPF]] or [[MAUI>.NET MAUI]])

**マークアップ言語 [#u10cd9a3]
特に、外(皮)ネイティブのハイブリッド化で複雑化した。

***Blazor WASM [#w1c6f8fe]
-Blazor単体を見ると、SPAフレームワークと言いつつ、ほぼ、JS代替のWASMなので、マークアップはHTML/CSS。
-SPAフレームワークっぽく見せているのは、ASP.NET MVCから輸入されたMicrosoft 製のテンプレート構文のRazor。

***Blazor Server [#na079885]
[[Blazor WASM>#w1c6f8fe]]と同じだが、実体は動的サーバーサイドレンダリングでSPAではない。

***Blazor + [[Windows Forms]] [#b920f808]
-マークアップはWebView内のHTML/CSSのみ。
-(ただし、C#で画面定義を行うコードUIは可能)

***Blazor + [[WPF]] [#ce8c2667]
-[[WPF]]自体はネイティブで、マークアップはXAMLのみ。
-(ただし、C#で画面定義を行うコードUIは可能)
-マークアップはWebView内のHTML/CSSと外側のXAML

***Blazor + [[MAUI>.NET MAUI]] [#c8f3be02]
-[[MAUI>.NET MAUI]]自体はネイティブで、マークアップはXAMLのみ。
-(ただし、C#で画面定義を行うコードUIは可能)
-Blazor + で、WebView内のHTML/CSSも必要になる。

**[[Silverlight]]っポイが、 [#nfb79697]

***同じ点 [#k3d4956e]
-クロスプラットフォーム
-ブラウザ実行 ≒ 通常実行
-[[ブラウザ外実行>Silverlight#c3bdbd4d]] ≒ [[ハイブリッド化>#e18ce032]]

***異なる点 [#tbe00343]
-[[XAML]]ではない。
-プラグイン・アプローチではない。
-従って、[[Silverlight]]やFlashのように、~
主要ブラウザにプラグインをクローズされて使えなくなることはない。

*参考 [#c6e275d5]
-Blazor - Wikipedia~
https://en.wikipedia.org/wiki/Blazor

-aspnet/Blazor:~
Blazor is a .NET web framework using C#/Razor and HTML~
that runs in the browser with WebAssembly~
https://github.com/aspnet/Blazor

-WebAssemblyとBlazor: 何十年の問題を解決する~
https://www.infoq.com/jp/articles/webassembly-blazor/

-マイクロソフトが提供する「クラウドネイティブ」に欠かせない技術で、~
より効率的な開発を実現しよう【デブサミ2019】 (1/2):CodeZine(コードジン)~
https://codezine.jp/article/detail/11400

**microsoft.com [#pcb04849]
-Blazor | Build client web apps with C# | .NET~
https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor

-ASP.NET Blog | Blazor 0.7.0 experimental release now available~
https://devblogs.microsoft.com/aspnet/blazor-0-7-0-experimental-release-now-available/

-ASP.NET Core での Blazor の概要 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/blazor/

----
Tags: [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]], [[:ASP.NET SPA]], [[:JavaScript]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS