Microsoft Build 2019レポート 2日目〜「ASP.NET Core 3.0 と Blazor を用いたフルスタック Web 開発」

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは、サイオステクノロジー 技術2部 水倉です。
Microsoft Build 2019 2日目のセッション「Full stack web development with ASP.NET Core 3.0 and Blazor」をレポートします。

.NET Core 3.0 によるフルスタック Web 開発

.NET Core 3.0 Preview 5 で C# と Blazor を用いてフルスタックな Web 開発がサポートされました。本セッションでは、クライアントサイド、フロントエンド (※1) 、バックエンド全てを .NET Core 3.0 で実装する場合の構成、実装手順について、デモを中心に紹介されました。

(※1) ここではサーバーサイドにおけるフロントエンドの意味で使われてました。

興味のある方は実装の流れはセッション動画のデモをチェックしてみてください。このブログ記事では、Blazor を取り上げます。

(※) 本記事で引用されている画像は全てセッション動画内のキャプチャです。

Blazor とは?

C# と Razor でクライアントサイドを実装できる技術です。ブラウザ上でどうやって C# を実行するのかというと、ブラウザ上でバイナリ実行を可能とする WebAssembly の技術を利用します。C# を WebAssembly へコンパイルできるようにすることで、ブラウザへの追加プラグイン不要で WebAssembly としてブラウザ上で実行されます。

Mozilla が Python を WebAssembly としてブラウザ実行させる「Pyodide」を開発中というニュースも記憶に新しいところです。OS 環境と ブラウザ環境の違いを埋めようと、WebAssembly にシステムリースへアクセスするための標準 API 仕様「WASI(WebAssembly System Interface)」を策定する動きもあり、注目ですね。

何が嬉しいのか?

さて、Blazor は何が嬉しいのでしょうか。

  • クライントサイド、サーバーサイドでコードをシェアできる。
  • ASP.NET エンジニアにとって使い慣れたサーバーサイド技術(C# と Razor)でクライアントサイドを実装できる。
  • 必要に応じて JavaScript ライブラリ やブラウザ API を呼び出すこともできる。

クライアントサイド技術はサーバーサイドよりも使いこなすツールが多く、サーバーサイドと合わせてカバーしていくのはエンジニアにとって学習コストが大きいので、やはり同じ技術を使って実装できるメリットは大きいですね。

dotnet_core3_full_stack_solution

本セッションのデモアプリの構成は下記のようなものでした。

dotnet_core3_full_stack_demo_app_architecture

サーバーサイド Blazor ?

Blazor は「C# でクライアントサイドも実装できる」という文脈で利用されることが多いですが、サーバーサイドでの実行モデルもサポートしています。ブラウザとの通信は SignalR を使用します。

server-side_blazor

これを見た時、何が嬉しいのか、今ひとつピンと来なかったので、公式ドキュメントを確認してみました。

メリット

  • クライアントサイドへダウンロードされるコード量が大幅に減るため、ページロードが非常に早くなる
  • .NET Core 互換 API の使用を含むサーバー機能を活用できる
  • サーバーの .NET Core 上で実行されるため、デバッガなど .NET ツールが使用できる。
  • WebAssembly をサポートしていないブラウザでも動作できる

デメリット

  • レイテンシーの増加。ユーザー操作の度にネットワークホップを伴う。
  • オフラインでは動作しない。クライアントとの接続に失敗すると機能しない。
  • スケーラビリティの低下。サーバーは複数のクライアントを管理し、クライアントの状態を処理する必要がある。
  • アプリを提供するには ASP.NET Core サーバーが必要。CDN からなど、サーバーなしでは展開できない。

結構無視できないデメリットもあるので、メリットとなる部分が必須要件となる局面で採用を検討する感じでしょうか。正直、使い所が見えてないので、もう少し勉強してみたいと思います。

最後に

まずはクライアントサイドを C#/Razor で実装してみると、Blazor の強力さがわかると思います。結構「おーっ」ってなると思いますので、まだ試していない方は触ってみると新鮮な驚きがあると思います。セッション中のデモアプリのソースはチュートリアル形式でこちらにアップされていますのでお試しあれ。

.NET Core 3.0 の新機能についてはこちら(英文)が詳しいです。まだ「Preview 5」の記事が見当たらなかったので、「Preview 4」のものですが、ご参考までに。

STI 水倉

アバター画像
About 水倉良明 17 Articles
biochemistryの世界からIT業界へ飛び込む。サイオステクノロジーには2014年に入社し、Hadoopベースの大規模データ処理基盤構築や、AWS、Azure基盤のWebシステム開発に従事。近年はクラウドネイティブな開発を推進中。「◯◯パターン」に目のないアーキテクト。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる