SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET最新版でASP.NET Core

C#でSPAを実現! .NET 6でASP.NET CoreのBlazorアプリケーションの基本「Blazor Server」を理解しよう

.NET最新版でASP.NET Core 第7回


  • X ポスト
  • このエントリーをはてなブックマークに追加

高速Webアプリを実現する、Blazor WebAssembly

 前述の通り、Blazorには、2つの動作モデルがあります。SPAを開発するという目的は共通ですが、ホスティングの形態がそれぞれ異なります。まずは、Blazor WebAssemblyを紹介します。Blazor WebAssemblyの動作モデルを図1に示します。

図07-02:Blazor WebAssemblyの動作モデル
図1:Blazor WebAssemblyの動作モデル

 Blazor WebAssemblyのアプリケーションは、基本的にクライアント側でWebAssemblyという技術に基づき動作します。WebAssemblyにより、C#で記述されたクライアントサイドのためのコードをWebブラウザ上で高速に実行できます。

 クライアントサイドで完結するアプリケーションを開発することもできますし、必要に応じてサーバーサイドのAPIを呼び出して利用するといったスタイルのアプリケーションの開発も可能です。クライアントサイドのみの実装なので、極論すればサーバーサイドの実装は何でもよいということです。

 ただし、アプリケーション自体はサーバーにあり、クライアントサイドにおけるアプリケーションの動作にはアプリケーション以外に関連するライブラリなども必要になるので、読み込みには時間がかかるというデメリットもあります。しかし、キャッシュの働きにより時間のかかる読み込みも初回だけなので、大きな問題ではないという考え方もあります。

開発をサーバーサイドに集中できる、Blazor Server

 次に、Blazor Serverを紹介します。Blazor Serverの動作モデルを図2に示します。

図07-01:Blazor Serverの動作モデル
図2:Blazor Serverの動作モデル

 Blazor Serverのアプリケーションは、その名称の通り基本的にサーバー側で動作します。クライアントにおけるUIコンポーネントの操作は逐次サーバーに伝えられて、サーバー側で必要な処理を行った後のレンダリング結果に基づき、クライアントのUI(DOM)を更新します。このとき、クライアントとサーバーの間はSignalRというリアルタイム通信のためのチャネルで常時接続されていて、相互の変更をもう一方に即座に反映できるようになっています。このため、クライアントとサーバーの間には常にネットワーク接続が必要となります。

 Blazor Serverでは、アプリケーションの開発をサーバーサイドに集中できるので、Entity Frameworkの利用などRazor Pagesなどの延長線上での開発が行えるというメリットがあります。また、クライアントサイドにおいてはイベントの送信やDOMの更新などの最低限のJavaScriptコードが必要となるのみなので、アプリケーションの読み込みが高速に行えるなどのメリットもあります。

 ただし、前述のようにSignalRを使ってクライアントとサーバー間が常時通信を行っているので、ネットワーク環境が常に利用可能でないとならないなどの制約もあり、これがデメリットとなる場合もあります。なお、SignalRについては本連載の後続の回で紹介する予定です。

Web技術でクロスプラットフォーム開発を実現!.NET MAUI Blazor

 最後に、.NET 6から提供が始まった.NET MAUI Blazorを紹介します。.NET MAUI Blazorは、.NET MAUIアプリケーションを、Blazor技術を用いて開発できるフレームワークです。.NET MAUIとは、.NET Multi-platform Application UIの略で、クロスプラットフォームにてアプリケーション開発を行うためのフレームワークです。

 単一のプロジェクトで、macOS、Windows、iOS、Android OSなどのネイティブアプリケーションを生成できます。.NET MAUI Blazorは、この.NET MAUIをBlazorの技術を用いて開発できるようにしたものです。つまり、Web技術でクロスプラットフォームのアプリケーション開発が行えるようになるわけです。

次のページ
Blazor Serverプロジェクトを作成して実行する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
.NET最新版でASP.NET Core連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16848 2023/05/26 17:13

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング