More Related Content Similar to ASP.NETの進化とASP.NET Core Blazorの凄さ (20) ASP.NETの進化とASP.NET Core Blazorの凄さ6. ASP(Active Server Pages)
ASP.NET WebForm
ASP.NET MVC ASP.NET Core Blazor Server
ASP.NET Core MVC ASP.NET Core Blazor
WebAssembly
1996 2002 2009 2016 2019 2020
ASP.NETの歴史と進化
VBScript,JavaScript
ASP.NET 3.5SP1-4.6
MVC1-MVC5
.NET Core 3.0
ASP.NET 1.0-3.5,Ajax
VB.NET,C#
.NET Core 1.0,MVC5,SPA
.NET Core 3.1
10. ASP.NETの歴史と進化
ASP.NET WebForm
Since 2002~
<%@ Page Language="C#" Inherits="webform.Default" %>
<html>
<body>
<form id="form1" runat="server">
<asp:ScriptManager id="ScriptManager1" runat="server"></asp:ScriptManager>
<div style="background:#aaf;">
Postback:<br/>
<asp:Label id="label1" runat="server"></asp:Label>
<asp:Button id="button1" runat="server" Text="Click me!" OnClick="button1Clicked" />
</div>
<asp:UpdatePanel id="updatepanel1" runat="server">
<ContentTemplate>
<div style="background:#afa;">
UpdatePanel:<br/>
<asp:Label id="label2" runat="server"></asp:Label>
<asp:Button id="button2" runat="server" Text="Click me!" OnClick="button2Clicked" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
HTML
サイド
11. ASP.NETの歴史と進化
ASP.NET WebForm
Since 2002~
サーバー
サイド
C#で記述
using System;
using System.Web;
using System.Web.UI;
namespace webform
{
public partial class Default : System.Web.UI.Page
{
public void button1Clicked(object sender, EventArgs args)
{
label1.Text = DateTime.Now.ToLongTimeString();
label2.Text = DateTime.Now.ToLongTimeString();
button1.Text = "Postback clicked";
button2.Text = "Postback clicked";
}
public void button2Clicked(object sender, EventArgs args)
{
label1.Text = DateTime.Now.ToLongTimeString(); //Updatepanelからの実行では動作しない
label2.Text = DateTime.Now.ToLongTimeString(); //Updatepanelからの実行で動作
button1.Text = “Updatepanel clicked”; //Updatepanelからの実行では動作しない
button2.Text = "Updatepanel clicked"; //Updatepanelからの実行で動作
}
}
}
15. ASP.NETの歴史と進化
ASP.NET MVC
Since 2009~
サーバー
サイド
C#で記述
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
Namespace mvcApp.Controllers
{
public class SampleController : Controller
{
[HttpGet]
public ActionResult button1Clicked()
{
//ここにコードを書く
return View();
}
[HttpGet]
public ActionResult button2Clicked()
{
//ここにコードを書く
return View();
}
}
}
ここへJavascriptでbutton1Clickedの
Getメソッドを送る
18. ASP.NETの歴史と進化
ASP.NET Core SPA
Since 2016~
Angular(バージョン4)、React、Reduxといった
SPAフレームワークがASP.NETのプロジェクトテンプレートで登場
ASP.NET Web API + ASP.NET MVC
+ jQuery + Bootstrap + knockout.js などで複数の技術を利用して
頑張って構築されているテンプレートとなっている
サーバー側コードはNode.jsなので、TypeScript記述になる
Linuxも動作
20. ASP.NET Core Blazor Serverとは
SPAフレームワークだとTypeScriptが必要だったものが、
サーバー側コードをASP.NET Core SignalR + C#でコーディングが可能と
なった
いままでは、画面側に書けるコードはRazor構文やC#っぽい
特定のコードだけだったが、.NET Standard 2.0まで対応されたため、
ちゃんとしたC#のコードが記述可能になった
Web Formの意思を引き継いでいるということなので、うまく構成すれば、
似たような開発も可能!?
もちろんLinux(macOS)でも動作可能
ASP.NET Core Blazor Server
Since 2019~
22. ASP.NET Core Blazor Serverとは
従来のヘルパー関数ではなく、しっかりとしたコンポーネント開発に
対応しているため、再利用が可能となっている
ASP.NET Core Blazor Server
Since 2019~
Dialog.razor(コンポーネント側)
<div>
<h1>@Title</h1>
@Content
<button @onclick=“dialogClick”>押してね</button>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment Content { get; set; }
private void dialogClick()
{
Console.WriteLine(“押されたよ!");
}
}
Index.razor(コンテンツ側)
@page "/"
<h1>Blazorサンプル</h1>
<button @onclick=“ButtonClick”>ボタン</button>
<div>@InputText</div>
<Dialog Title=“testdialog” Content=“ダイアログ表示”>
押されたかな?
</Dialog>
@code {
string InputText;
void ButtonClick()
{
InputText = “ボタンが押されたよ";
}
}
31. ASP.NET Core Blazor WebAssembly
Coming Soon 2020~
ASP.NET Core Blazor WebAssemblyとは
RazorファイルにBlazor構文で、HTMLと混在して記述する
内部の@code内にC#が記述できます
C#の依存関係、.NET ランタイムがWASMファイルでダウンロードされ、
WebAssemblyの技術によりクライアント側で実行されます
完全にWeb分離した場合は初回のダウンロードだけで、
すべて完結することが可能
(現時点ではURL Rewriteなどインストールが必要)
32. ASP.NET Core Blazor WebAssembly
Coming Soon 2020~
ASP.NET Core Blazor WebAssemblyとは
.net Core 3.1を
インストールする
と選択できる
WebAssembly版はPrewiewのテンプレートを
ダウンロードすると追加される
初回実行はNuget再構築が必要なので、
何回か再実行するとうまく動作する
※要インターネット接続
33. ASP.NET Core Blazor WebAssemblyとは
ASP.NET Core Blazor WebAssembly
Coming Soon 2020~
メリット
・Blazor Serverと違い、.NETサーバー側に依存せずに単体の動作が可能
・クライアントにダウンロードされた後は、切断されてもページが完全に機能する
・クライアントのリソースと機能を完全に活用が可能(JavaScript制御)
・アプリ配布する場合では、必ずしもASP.NET CoreのWeb サーバーは必要ない
デメリット
・WebAssemblyに対応したブラウザバージョンが必要
・使える機能はクライアントのブラウザーが持っている機能までに制限される
・依存関係を使いすぎると、ダウンロードサイズが大きくなり、初回の読込みに時間がかかる
・.NETランタイムとツールのサポートやデバッグ機能に制限がある