最近blazor的WebAssembly 正式版出来了,正好手头有一个项目采用的前后端分离模式做的,后端用的abp vnext(.net core 的一个很著名的框架)框架开发的,其实前端之前考虑的使用vue来做,但是看到了blazor的相关技术文章。就仔细看了下这个技术,也算是刚开始接触学习,这里呢就边学习边开发,把开发过程给大家分享出来。

blazor分为 Server 和 WebAssembly 版,先给看一下官方的说明,然后我再结合项目具体说下,两个版本官方的说明如下:

1、WebAssembly

Blazor WebAssembly 是单页应用框架,用于使用 .NET 生成交互式客户端 Web 应用。 Blazor WebAssembly 使用开放的 Web 标准(没有插件或代码置换),适用于包括移动浏览器在内的各种新式 Web 浏览器。通过 WebAssembly(缩写为 wasm),可在 Web 浏览器内运行 .NET 代码。 WebAssembly 是针对快速下载和最大执行速度优化的压缩字节码格式。 WebAssembly 是开放的 Web 标准,支持用于无插件的 Web 浏览器。WebAssembly 代码可通过 JavaScript(称为 JavaScript 互操作性或 JavaScript 互操作)访问浏览器的完整功能。 通过浏览器中的 WebAssembly 执行的 .NET 代码在浏览器的 JavaScript 沙盒中运行,沙盒提供的保护可防御客户端计算机上的恶意操作。

当 Blazor WebAssembly 应用生成并在浏览器中运行时:

* C# 代码文件和 Razor 文件将被编译为 .NET 程序集。

* 该程序集合 .NET 运行时将被下载到浏览器。

* Blazor WebAssembly 启动 .NET 运行时,并配置运行时,以为应用加载程序集。 Blazor WebAssembly 运行时使用 JavaScript 互操作来处理 DOM 操作和浏览器 API 调用。

已发布应用的大小(其有效负载大小)是应用可用性的关键性能因素。 大型应用需要相对较长的时间才能下载到浏览器,这会损害用户体验。 Blazor WebAssembly 优化有效负载大小,以缩短下载时间:

* 在中间语言 (IL) 链接器发布应用时,会从应用删除未使用的代码。

* 压缩 HTTP 响应。

* .NET 运行时和程序集缓存在浏览器中。

2、Server

Blazor 将组件呈现逻辑从 UI 更新的应用方式中分离出来。 Blazor Server在 ASP.NET Core 应用中支持在服务器上托管 Razor 组件。 可通过 SignalR 连接处理 UI 更新。运行时处理从浏览器向服务器发送 UI 事件,并在运行组件后,将服务器发送的 UI 更新重新应用到浏览器。Blazor Server用于与浏览器通信的连接还用于处理 JavaScript 互操作调用。

以上是两个版本官方的说明区别,具体到项目来说,我这边项目选用了WebAssembly的模式,理由如下:

1. WebAssembly虽然第一次加载比较慢,但是一旦缓存到客户端后,速度就很快,因为本质上是执行的C#编译后的代码。

2. WebAssembly有个缺点就是目前不是全部浏览器都支持,IE是不支持的,但是我的项目面向的用户不是大众,而是部分使用人员,这块可以通过要求用户升级更新浏览器来使用,而且目前大多数用户使用的浏览也已经是chrome内核的浏览器了,所以这块不是问题。

3. WebAssembly虽然目前不支持对DOM的操作。但是可以通过调用js的方式来操作,这块也不是问题。

4. 很多人可能觉得这不是sliverlight改头换面了吗,其实不然,sliverlight是需要对浏览器安装插件的,就是电脑上要安装sliverlight才行。这就降低了用户使用的便利性。但是WebAssembly 是开放的 Web 标准,目前主流的浏览器基本都已支持这一标准。

5. 对于那些开发网站的目前建议不要用这个模式,毕竟使用ie的人员还是有一部分的,ie是打不开的,但是可以用server的模式(就算是server,就我目前的了解对于低版本的ie也是支持不好的),两个模式互相修改也并不复杂。

本次就先说到这里,主要是大体介绍了下blazor的基本的两个模式相关的信息和区别,下篇文章就开始创建一个项目来具体讲一下基本的结构。

一起学Blazor WebAssembly 开发(1)的更多相关文章

  1. 一起学Blazor WebAssembly 开发(3)

    接着上篇,本篇开始讲下实现登录窗口,先看下大概的效果图: 打开的效果,没有美工美化 点登录校验得到不能为空 我在做blazor时用到了一个ui框架,这个框架名叫Ant Design blazor(ht ...

  2. 一起学Blazor WebAssembly 开发(2)

    上篇文章讲了Blazor的两种模式的区别及各自的使用场景,本篇就开始学习WebAssembly模式,本篇主要学习的是创建项目及认识项目结构: 创建项目 选择Blazor应用 选择WebAssembly ...

  3. 从零开始一起学Blazor WebAssembly 开发(4)

    登录模块基本完成了,登录主要用了以下几个点: 1.后端采用的Abp Vnext 框架,这个框架自带的IdentityServer4用户角色权限控制,这个框架登录研究了好一阵子,有几个坑这里说下: 1) ...

  4. Blazor Webassembly多标签页开发

    最近准备用Blazor Webassembly做后台开发要用到多标签页,找了半天发现绝大多数都是Blazor Server的多标签没有Webassembly.没办法只能自己想办法造轮子了. 查了许多资 ...

  5. 浏览器中的 .Net Core —— Blazor WebAssembly 初体验

    前言 在两年多以前就听闻 Blazor 框架,是 .Net 之父的业余实验性项目,其目的是探索 .Net 与 WebAssembly 的兼容性和应用前景.现在这个项目已经正式成为 Asp.Net Co ...

  6. ASP.NET Core Blazor 初探之 Blazor WebAssembly

    最近Blazor热度很高,传说马上就要发布正式版了,做为微软脑残粉,赶紧也来凑个热闹,学习一下. Blazor Blazor是微软在ASP.NET Core框架下开发的一种全新的Web开发框架.Bla ...

  7. 通过 Serverless 加速 Blazor WebAssembly

    Blazor ❤ Serverless 我正在开发 Ant Design 的 Blazor 版本,预览页面部署在 Github Pages 上,但是加载速度很不理想,往往需要 1 分钟多钟才完成. 项 ...

  8. Blazor WebAssembly 3.2.0 Preview 4 如期发布

    ASP.NET团队如期3.16在官方博客发布了 Blazor WebAssembly 3.2.0 Preview 4:https://devblogs.microsoft.com/aspnet/bla ...

  9. Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架

    最美人间四月天,春光不负赶路人.在充满无限希望的明媚春天里,一路风雨兼程的.NET团队正奋力实现新的突破. 根据计划,新一代基于WebAssembly 技术研发的前端SPA框架Blazor 将于5月1 ...

随机推荐

  1. DataFrame索引和切片

    import numpy as np import pandas as pd from pandas import DataFrame, Seriesdf = DataFrame(data=np.ra ...

  2. python 3内置函数

    2018-07-14 enumerate() 用于指定下标 例: m = ['a','b','c'] for i,j in enumerate(m,1): print(i,j) 输出: 1 a 2 b ...

  3. 小技巧:如何快速开启一个静态 HTTP 服务?

    静态 HTTP 服务的几个用途: 静态网页的 HTTP 服务,以访问浏览 如:生成的文档.博客等 公开文件的 HTTP 服务,以访问下载 如:分享的文档.安装包等 以下会介绍目前我了解的方式中,最推荐 ...

  4. crm项目开发之架构设计

    CRM customer relationship management 客户管理系统 1. 干什么用的? 管理客户 维护客户关系 2. 谁去使用? 销售 班主任 项目经理 3. 需求: 1. 登录 ...

  5. hive的简单操作语句

    **1.create table**1.1创建分区表create [external] table [if not exists] dcx1234(    cookieid string,    cr ...

  6. 基本 Docker 命令列表

    docker build -t friendlyname .# 使用此目录的 Dockerfile 创建镜像 docker run -p 4000:80 friendlyname # 运行端口 400 ...

  7. web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!

    前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...

  8. 解决Centos 6.4 下安装WPS 出现 新建/打开文件闪退的问题

    #  wget http://archives.fedoraproject.org/pub/archive/fedora/linux/updates/17/i386/freetype-2.4.8-4. ...

  9. XDocument常用属性

    XDocument常用属性: 1) BaseUri 获取此 XObject 的基 URI. (继承自 XObject.) 2) Declaration 获取或设置此文档的 XML 声明. 3) Doc ...

  10. 要想数组用的 6,怎能不懂 java.util.Arrays

    java.util.Arrays 类就是为数组而生的专用工具类,基本上常见的对数组的操作,Arrays 类都考虑到了,这让我由衷地觉得,是时候给该类的作者 Josh Bloch.Neal Gafter ...