> 文档中心 > 全程回顾 Blazor Day in China 精彩分享

全程回顾 Blazor Day in China 精彩分享

2022年3月19日,Blazor Day in China 在线上精彩落幕。

7位 Blazor 技术大咖围绕什么是 Blazor,什么是 MAUI,如何使用 .NET MAUI 即将推出的 Blazor Hybrid 支持来构建跨平台原生应用,Blazor 全局异常处理的实现逻辑,什么是 Orleans,如何用 Orleans 与 Blazor 实现反应式物联网应用,什么是 ABP 框架,如何扩展模块 UI 并更改 UI 框架到 Ant Design,如何将 JavaScript 控件封装为 Blazor 组件等 Blazor 相关技术话题,用代码与在线观众进行了一场思维碰撞。

活动在某知名投资银行开发工程师董彬的主持下进行。

点击观看完整视频

本次活动分享资料下载,请进入 .NET Conf 官网获取.NET Conf 官网http://netconfchina.front.milisx.xyz/#/detail?id=c93de7b8-1780-45ee-83cd-72263bcc3736

使用 Blazor Hybrid 的原生客户端应用

活动开篇,作为微软 ASP.NET 团队 Principal Program Manager,Daniel Roth 用清晰简明的实际操作,向我们演示了如何使用 .NET MAUI 即将推出的 Blazor Hybrid 支持,来构建适用于移动端和桌面的跨平台原生应用程序。

分享的最后,他也为我们预告了即将在2022年第二季度发布的 Blazor Hybrid 支持,同时,.NET MAUI 及 Blazor 也是 .NET 7的一部分,它将在今年11月与大家见面。

Daniel Roth 也隔着时差回答了线上观众的提问,针对在线观众提出的 MAUI Blazor 怎样生成 exe 文件在 Windows 上运行,Mobile Blazor Binding 以及 Blazer Web Window 是否还在继续,MAUI 能否支持 AOT,PWA 在 Blazor 上的支持如何,是否有相关的教程,MAUI 能否在 Linux 上运行等问题,给出了他的回答。

 Blazor webasm 有没有针对 PWA 开发教程?

答 Blazor WebAssembly PWAs: 

https://docs.microsoft.com/aspnet/core/blazor/progressive-web-app

问 MAUI 发布的具体时间有确定吗?如果确定是哪个时间?

.NET MAUI 将于 5月份 发布

Blazor 中的全局异常处理

北京磐石桓雅科技 CTO 张广坡,平时喜欢自己造轮子,在本次分享中,他针对我们在使用 Blazor 进行日常项目开发过程中,最常遇到的全局异常处理的问题,分享了他自己在实践中探索出的一套解决方案框架,并在线 coding,向我们展示了这一实现逻辑。

线上观众也在观看这一演示中提出了一些疑问,如 OnParameterSet 会执行很多次的问题是否有比较好的解决办法,长链接对 Web 页面会不会是一个缺点,Blazor 能否用中间件进行全局拦截,平时是否会用 Mac 系统开发 Blazor,有没有权限相关的模板可以使用,能否解释一下 Blazor 的生命周期等,张广坡老师一一给出了自己的解答。

Blazor 记录日记的时候,有没有 Webapi 中 Requestld 的概念,方便追溯当前请求中记录的所有日志?

目前设计中没有 RequestId。

有模板权限吗?

目前 Gitee 平台开源项目 BootstrapAdmin 中有完整的 Blazor 权限模板,地址是:https://gitee.com/LongbowEnterprise/BootstrapAdmin

在线演示地址:https://admin.blazor.zone/

Github 开源权限模板示例:https://github.com/ArgoZhang/IdentitySample

长连接对于 web 页面会不会是缺点?

是缺点还是优点是相对的,主要还是看设计与需求的契合度,看应用场景是否匹配。

有没有左边树结构,右边内容的推荐?

左侧树状结构其实就是菜单,上面提到的例子中都是这种设计。

Blazor 有没有中间件,全局拦截报错?

Blazor 中中间件只有管道建立时运行一次,建立链接开始 Blazor 应用后中间件就不起作用了,所以使用中间件或者过滤器来做全局拦截在 Blazor 中是无法实现的。

MAC不支持 Blazor 吗?为什么在 MAC 电脑上还要开 WIN 来运行 Blazor?

Mac 系统支持 Blazor 开发,vscode/vs for mac/rider 均可以使用,演示中我是本机与云服务器的切换,并不是我本机安装了 Windows 云服务的性能比我本机更强大。

有模板权限吗?Blazor 的应用拓展性怎么样?有移动 UI 组件库了吗?

不太理解这个扩展性具体指的那个方面,不好回答,目前 Blazor 移动端组件库不是很多,很多解决思路都是走通用化然后移动端适配,并不想以前有很多 js 的移动端 UI 库。

能不能解释一下 Blazor 的生命周期?

文字解释比较多,我给一个地址链接,可以通过微软文档进行系统学习,地址如下:https://docs.microsoft.com/en-us/aspnet/core/blazor/components/lifecycle?view=aspnetcore-6.0&WT.mc_id=DT-MVP-5004174

Blazor 适合做什么项目?

强烈建议不要使用 Blazor 做互联网这种高并发项目,强烈推荐做企业内部系统或者类似餐饮业店铺内的点单系统。

有没有代码更新后页面实时更新方案推荐?

代码更新后页面实时更新是什么需求?是动态编译吗?目前 Blazor 本身并无此功能。

开源的 Blazor 管理后台模板

来自温州数闪科技有限公司的技术总监谷首道,本次分享他带来的是他参与设计与搭建的开源项目 MASA Framework Admin,向我们详细介绍了基于 MASA Blazor 和 MASA Framework 实现的 .Net 6 管理后台模板,包括用户、组织架构、多点登录互斥、RBAC 等功能。

对于观众咨询的 Pro 是否收费的问题,谷老师也表示 MASA Stack 放出的一些开源产品,除协议可能不同外,功能类的产品全部都是免费的;针对其他诸如在使用 Blazor 的过程中对于性能有怎样的感受和见解,有没有考虑做移动端的组件库,有没有关于 Dapr 的教程,MASA Framework Admin 是否是已经发布正式版本的状态等问题,谷老师也结合在线演示,给出了详尽的回答。

有考虑出一个移动端组件库吗?

我们是基于 vuetify 尽量1:1还原的,理论上支持移动端,通过响应式布局来兼容。我们的文档站点已经兼容移动端,可以看这里 https://blazor.masastack.com/

Pro 是收费的吗?

免费的,但这只是个纯前端的样式库。包括注册,rbac 等功能可以看一下 MASA.Framework.Admin

有没有 Dapr 的相关推荐?

国内很多大佬都出过 Dapr 系列文章,大家写的都蛮好。但是我们的手把手教你学 Dapr 系列是经过没有编程经验的运营小姐姐手敲认证的简单 ^_^,传送门:https://www.cnblogs.com/doddgu/p/dapr-learning-3.html

能不能聊一下性能的问题?

Blazor 有两种模式,Server 的话注意不要跟前端频繁交互,保证网络畅通的话,其实影响不大。而 Wasm 模式下要注意的性能优化会相对较少,但如果动画类效果需要在.net和js中超频繁交互也可能会存在一些问题。总而言之,你可以在 js 或 .NET 中任意选择一个地方集中处理问题而不要让他们过于频繁交互即可,在这方面 wasm 的容忍性会比 server 高很多。

authing 只有 SaaS 版吧?

身份云平台是个不错的方向,但云计算方面大家为什么要自建的问题同样问到身份云,那可能只有每个人心中才能有答案了。

Hello!MAUI Blazor!

来自正泰集团,同时也是微软 MVP 的陈超超首先为我们带来 MAUI Blazor 的话题。他为我们介绍了 MAUI Blazor 可以帮助我们解决哪些问题,MAUI 是如何工作的,并在线 coding,用现有项目存在的需求,采用 MAUI 做了演示。由于网络配置原因,演示的最后出现了一点小问题,超超老师也在结束之后找到了原因,并进行了运行和调试演示。

随后的答疑环节,超超老师也为在线观众提出的 MAUI 项目是否可以直接创建出一个使用 Blazor 的初始项目,MAUI 和 Xamarin 有什么区别,Xamarin 之后是否还会维护等问题进行了解答。

演示代码:https://github.com/TimChen44/Hello-MAUI-Blazor

Blazorwebview 有预装环境吗?

不清楚问题中预装环境的具体意思,如果是开发环境,在 VS 安装工具中选择 MAUI 后,工具会帮我们安装完整的开发与调试环境,如果是运行环境,你只需要按照要求进行打包,安装包里会包含必要的运行环境。

MAUI 和 Xamarin 有什么区别?

MAUI 基于 Xamarin.Forms 技术演变过来的,很多组件功能和 Xamarin.Forms 完全相同,只是更换了命名空间,但是 MAUI 提供了更多的支持,就比如本次主题 Blazor 的支持。

Xamarin 还会维护不?

目前微软没有给出这方面的信息,我个人认为微软会继续维护 Xamarin 的 bug,但是新功能可能不会添加了。

Blazorbrowser 能加载网页吗?

问题中 Blazorbrowser 指的是 BlazorWebView,那当然支持加载网页,Blazor 应用就是一个网页,如果只想载入网页建议使用 WebView 更加合适。

BlazorWebView:https://docs.microsoft.com/zh-cn/dotnet/maui/user-interface/controls/blazorwebview

WebView:https://docs.microsoft.com/zh-cn/dotnet/maui/user-interface/controls/webview

MAUI 安卓如何命令行启动 SO 库?

这属于安卓平台特性,目前文档库中 MAUI 的资料还没添加,你可以参考 Xamarin.Android 的资料 https://docs.microsoft.com/en-us/xamarin/android/platform/native-libraries

ABP 框架主题系统与 Ant Design

Volosoft 软件工程师梁士伟,他向我们介绍了 ABP 这一基于 ASP.NET Core 的开源应用程序框架,以及 ABP 框架中的主题系统这一特性的设计,并通过他基于 Ant Design Blazor 制作的一套 ABP 的主题,展示了如何快速的替换基础主题模块到Ant Design主题模块,并且两种常见扩展模块 UI的方式 。

之后,他也对线上的 Ant Design Blazor 和 ABP 的架构是如何集成的,以及其他 ABP 框架相关的问题作了解答。

有没有 Ant Design 的组件呢?

Ant Design 主题模块全部使用的 Ant Design 组件编写,ABP抽象了一些通用的服务,比如通知,消息,curd 基类组件等,这些都使用 Ant Design 重新实现。你也可以在项目中使用任何的 Ant Design Blazor 组件。

梁老师的项目地址是多少 ?是否可以提供一个相关的联系方式公众号等?

项目地址 https://github.com/realLiangshiwei/presentations/tree/master/2022-03-19-Blazor-Day, 微信公众号是 abp framework。

探讨 Orleans 与 Blazor 实现反应式物联网应用

Ant Design Blazor 项目作者、微软 MVP 杨舜杰向我们分享的是 Orleans 这一基于 .NET 的反应式框架,与大家探讨了用 Orleans 与 Blazor 来构建一款物联网采集服务的开发方式,并通过一个 Demo 对其实际表现进行了演示。

之后,杨老师也解答了线上观众对于 Orleans 和 Dapr 有什么不同,Orleans 在分布式的场景下如何解决一致性的问题,Grain 是否有容量限制,超出限制会怎么处理,Azure IOT/Service Bus/Eventhub 是否是采用 Orleans 做的等疑问。

这个不会是每个设备有一个状态服务负责吧?

是每个设备的状态和操作都由一个 .NET 对象来维护,与设备的状态同步,方便系统实时获取设备的信息,以及控制这个设备。这与一般的信息系统每次交互都通过数据库表来维护信息有很大的不同。

奥尔良不是微服务架构吗?

Orleans 是对象粒度的分布式框架,而且是有状态的。跟一般的无状态微服务有多不同点。

Orleans 和 Dapr 有什么区别?

Orleans 是基于.NET的框架,可以使用 BCL 和所有类库,集群通讯是用 tcp 和 gossip,性能和扩展性更好,还有流的功能。

而 Dapr 是多语言的、基于sidecar模式做多语言集成的,基于 http2 和 grpc 通讯,性能相比 Orleans 低一些。另外,Dapr 可以方便地与中间件做集成(只需要中间件与 dapr 集成,各语言的服务都能使用)Dapr 的 Actor 部分是侵入式的,依赖特定语言SDK的实现。当然 .NET SDK 的功能是最完整的。如果是 .NET 团队想用 Actor,又没有多语言的场景,更加推荐 Orleans。

Orleans 在分布式场景下,如何解决多节点数据 CAP 问题?

内置了点对点通讯机制和 Paxos 分布式一致性算法,能保证节点下线后 Grain 的重新激活。详情可以看文档https://dotnet.github.io/orleans/docs/implementation/cluster_management.html

微软目前已经退出了 Dapr,将 Orleans 很多概念迁移过去,日后微软重点是否转移到Dapr,OELeans 是否会被边缘化?

自从 Orleans 基于.NET Core发布 3.0版本后,渐渐走到.NET的门面。目前已经在微软文档上线 https://docs.microsoft.com/zh-cn/dotnet/orleans/?WT.mc_id=DT-MVP-5003987

也加入了ASP.NET 7 的路线图中 https://github.com/dotnet/aspnetcore/issues/39504,很可能会成为 ASP.NET 众多编程模型的一员。其实现在 Orleans 已经很方便地集成到 ASP.NET 中,通过 WebAPI 公开对 Actor 模型的操作。

将 JavaScript 控件封装为 Blazor 组件

Ant Design Blazor Organization 成员孙皓为我们分享的是如何将 JavaScript 控件封装为 Blazor 组件。将这些使用 JS 编写的优秀的控件库用于 Blazor,能够极大地丰富 Blazor 生态。在分享的同时,孙皓老师也在线演示了这一实现方式。

最后,孙老师也回答了线上观众的一些疑问,如对于现在已经有的比较成熟的 Vue 或者 React 的组件库,有没有什么方法能够把他们很好地封装成 Blazor 的组件库,以及 Blazor 有没有针对 WebGL 的操作库等。

对于现在已经有的比较成熟的 Vue 或者 React 的组件库,有没有什么方法能够把他们很好地封装成 Blazor 的组件库?

没有特别好的办法。通过调用 js 的方式来创建 vue 或 react 的组件是可行的,但是不推荐这样做。

Vue React 的组件好集成吗?

同上,能够集成,但是不推荐。

请问 Blazor 有没有针对 WebGL 的操作库?

不太了解这方面有没有人做过封装,通过原生js方式操作是可以的。

Blazor 开发者调研

欢迎参与 Blazor 开发者调研,一起更好地建设 Blazor 中文社区以及 Blazor 生态。

奖品说明

由于不可控原因,我们暂定在五月中旬安排奖品邮寄。如有突发情况无法及时寄出,我们将在群内另行通知。感谢大家的支持,请大家耐心等待。

主办方

Blazor 中文社区

协办方

微软 Reactor

微软最有价值专家

支持伙伴

abp Community

B站:超超TimChen44

BootstrapBlazor 社区

MASA Blazor

近期活动分享

.NET社区联合主办.NET 20周年学习挑战赛 火热进行中

.NET 20周年学习挑战赛-CSDN社区https://bbs.csdn.net/topics/605229434

UCloud