aspnetcore框架揭秘pdf下载_C Web开发全栈框架Blazor WebAssembly 预览版

作者:安迪·克拉克(Andy Clark)

Microsoft已发布Blazor WebAssembly的3.2.0预览版1,该版本增加了对SignalR客户端的支持,简化了启动并减小了下载大小。

Blazor是使用C#语言,HTML和CSS构建Web应用程序的框架。 C#代码用于客户端和服务器功能,这意味着可以避免重复的业务逻辑。 C#代码正在编译以在WebAssembly上运行。框架使用 NET Standard 2.0,,您可以用包含来自Microsoft或第三方的标准库。代码运行在We

bAssembly框架中因此无法访问APIS,例如访问文件系统

。 UI的视觉方面由使用Razor标记语言编写的Razor组件提供, Telerik等第三方已经在提供与WebAssembly一起使用的

UI组件。

大多数现代浏览器(例如Chrome,Edge,Firefox和WebKit)都支持WebAssembly(WASM)。

也可以将WebAssembly作为桌面应用程序运行。 甚至还有实验项目在微控制器设备(例如ESP32)上运行WASM,这将WASM引入物联网设备以及Web应用程序。

e3d80de3c7afd71284c9746b646579b0.png

图片来源:.NET Conf 2019 展示

要开始Blazor开发,您可以安装.NET Core 3.1 SDK然后运行以下命令来安装模板包。

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1 

运行以下代码会生成一个示例Blazor WebAssembly应用程序。

dotnet new blazorwasm dotnet build dotnet run 

33f982fbb88856f2a7f45505a19be7c7.png该示例包含三个页面,其中包括一个简单的静态页面,一个交互式计数器和一个包含天气数据的表格示例。

@page "/fetchdata"
@inject HttpClient Http

Weather forecast



This component demonstrates fetching data from the server.



@if (forecasts == null)
{

Loading...


}
else
{
DateTemp. (C)Temp. (F)Summary
@foreach (var forecast in forecasts)
{@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
}
}

@code {
private WeatherForecast[] forecasts;

protected override async Task OnInitializedAsync()
{
forecasts = await Http.GetJsonAsync("sample-data/weather.json");
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}

eccc2415ade3ede1c5ef6f308129dbd2.png

对于使用过ASP.Net Core等技术的人,该代码应该是清楚的。 但是请注意,这是与ASP.Net不同的技术。 这反映在Program.cs中的简化启动中。 WebAssemblyHostBuilder不再使用ASP.Net核心使用的启动类方法。

public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add("app");
await builder.Build().RunAsync();
}
}

由于WebAssembly是编译代码,因此与基于JavaScript的等效应用程序相比,它已经很小。该示例三页应用程序仅编译为7.7 kB。 此预览版本通过.NET IL Linker引入了对未使用代码的修剪功能,与以前的版本相比,该功能现在从传输中删除了100 kB。 它通过增加被裁剪为包括Blazor框架文件和Core文件的库的范围来做到这一点。 从瀑布图中可以看到,用于WebAssembly的IL虚拟机基于Mono。

0f95df7f909ad84564046442a7b5484d.png

最后一个新功能是SignalR客户端。 这不要与基于BlazorServer的主机混淆,后者也使用SignalR进行通信。

SignalR客户端允许您向WebAssembly应用程序添加实时功能。 它是为仪表板,聊天或协作应用程序提供最新数据的理想选择。 客户端连接到可以由您的服务器提供的集线器,该集线器将消息分发到客户端。 客户端和集线器之间的通信可以是JSON,也可以是基于MessagePack的二进制格式,这将产生较小的消息。

有一个使用SignalR的聊天应用程序示例,该应用程序可以与多个客户端进行通信。 请注意,此示例中的服务器项目确实使用启动类,因为它使用ASP.Net Core提供SignalR集线器。

4d2c2ed9b2f08bf302e4945ae024ef90.png

Blazor WebAssembly的正式版本计划于今年5月发布。

出处:https://www.infoq.com/news/2020/02/blazor-webassembly-preview/

翻译:google翻译+自译

版权申明:本文来源于网友收集或网友提供,如果有侵权,请转告版主或者留言,本公众号立即删除。

9ee69b09183f697fd7c28f76768c2927.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值