Aspnetcore: .NET 5 的 Blazor 路线图

创建于 2020-05-05  ·  38评论  ·  资料来源: dotnet/aspnetcore

本期将列出 Blazor 团队为 ASP.NET Core 5.0 版本考虑的主要交付物。 虽然我们希望解决所有这些问题,但仍有许多未知数,随着我们的进展,情况会发生变化。 请注意,这些是主要的投资领域,同时还将进行许多较小的修复和增强,包括社区贡献。

预览 7

  • [x] [将 Blazor 移至 .NET 5](https://github.com/dotnet/aspnetcore/issues/20519)

预览 8

  • [x] [CSS 隔离](https://github.com/dotnet/aspnetcore/issues/10170)
  • [x] [支持 IAsyncDisposable](https://github.com/dotnet/aspnetcore/issues/9960)
  • [x] [应用领域的懒加载](https://github.com/dotnet/aspnetcore/issues/5465)
  • [x] [为 BrowserRenderer 添加焦点支持](https://github.com/dotnet/aspnetcore/issues/17472)
  • [x] [受保护的浏览器存储](https://github.com/dotnet/aspnetcore/issues/18755)

RC1

  • [x] [Blazor 性能优化](https://github.com/dotnet/aspnetcore/issues/22432)
  • [x] [虚拟化](https://github.com/dotnet/aspnetcore/issues/23092)
  • [x] [如何在 Blazor 应用程序中上传文件](https://github.com/dotnet/aspnetcore/issues/12205)
  • [x] [JS 隔离与 JSObjectReference](https://github.com/dotnet/aspnetcore/issues/23560)
  • [x] [Blazor WebAssembly 预渲染](https://github.com/dotnet/aspnetcore/issues/24098)

    潜在削减

  • [ ] [拖放](https://github.com/dotnet/aspnetcore/issues/18754)

  • [ ] [为所需组件参数添加工具支持](https://github.com/dotnet/aspnetcore/issues/25055)

  • [ ] [构建 Blazor 的性能改进](https://github.com/dotnet/aspnetcore/issues/22566)
  • [ ] [blazor 组件所需的参数(运行时检查)](https://github.com/dotnet/aspnetcore/issues/11815)
  • [ ] [允许泛型类型约束](https://github.com/dotnet/aspnetcore/issues/8433)
  • [ ] [AoT 编译](https://github.com/dotnet/aspnetcore/issues/5466)
  • [ ] [Blazor 中的 SVG 支持](https://github.com/dotnet/aspnetcore/issues/18271)
  • [ ] [支持同一元素上同一事件的多个事件处理程序](https://github.com/dotnet/aspnetcore/issues/14365)
  • [ ] [在 blazor 中限制父子组件层次结构](https://github.com/dotnet/aspnetcore/issues/12302)
  • [ ] [添加将@typeparam传递给子组件的能力](https://github.com/dotnet/aspnetcore/issues/7268)
Done area-blazor roadmap

最有用的评论

@ pjmlp 您的批评并非没有道理,但是来吧... Blazor(以及一般的 WebAssembly)是 Web 技术中最令人惊讶、令人兴奋、令人敬畏的开发 - 至少 20 年! Roth、Sanderson 和他的朋友们让 Web 开发再次变得有趣,值得我们称赞。

为了在不学习任何新东西的情况下神奇地提高我们的就业能力……想一想!

想想我们从未做过 SPA(angular/react/vue)的 .NET 同事——aspnet 团伙只是挥舞着魔杖,将他们从“后端开发人员”转变为“全栈开发人员”。 就这样……魔法。


顺便说一句:非常高兴的 css 隔离计划。 但是请(!)也添加js 隔离。 依赖于 js 库的 UI 组件(例如 Bootstrap)应该能够在组件内声明/使用 css 和 js - 否则项目将变得难以维护。

所有38条评论

Required parameters to blazor components链接指向错误的问题。 我想应该是
https://github.com/dotnet/aspnetcore/issues/11815

@JvanderStad感谢您指出这一点! 现在应该修好了。

Blazor(服务器端)是否会在未来的 Mono 实现中不仅适用于网络核心运行时? 例如,在支持单声道的其他 CPU 架构中启动 Blazor(和其他 AspNetCore 应用程序)会很棒。

去组队! 已经很棒了,希望随着时间的推移它会变得更好!

Blazor(服务器端)是否会在未来的 Mono 实现中不仅适用于网络核心运行时?

@EntityFX除了在 .NET Core 上,我们没有任何计划支持 Blazor Server。 Blazor Server 基于 ASP.NET Core,它是 .NET Core 的一部分。 如果您希望看到支持 .NET Core 的体系结构,请通过在https://github.com/dotnet/runtime/issues 存储库中打开问题告知他们。

QBasic 会向后兼容吗? 🤪

让我们去 Blazor 5.0 吧! 🚀

RIPjs

用户管理方面会有任何改进吗? 为了处理用户登录/注销和用户创建,必须创建用户并将其重定向到 .cshtml 页面感觉有点麻烦。 如果所有这些都可以在 Blazor 组件中进行管理,那就太好了。

@KrazyTako我们没有计划围绕用户管理立即开展任何工作,但我们会根据用户和社区反馈尽最大努力确定工作的优先级,因此请针对您在这方面的任何反馈提出问题,我们会予以考虑。

我是 Blazor WASM 的忠实粉丝,最近使用 Blazor 实现了一个企业应用程序。 在基于组件的特性、完整的 C# 和 .Net 代码使用方面有巨大的功能,很棒的体验! 但是,在使用数据加载应用程序后,我遇到了一些问题,主要是性能方面的问题; 我现在正在犹豫是继续还是等到即将到来的版本中的性能提升:

  1. 在复杂的实体中,数据网格当前行的更改将需要近 5 秒才能将表单控件重新绑定到新行! (我在我的实体中使用了 INotifyPropertyChanged 模式) - 但 Angular 实现是立即执行的。
  2. 所有 3rd 方数据网格组件(至少我测试过的那些)在某些功能上都不成熟和缓慢,加载数据和单元格编辑非常缓慢,这是企业应用程序中的一个突出特点; 如果您单击一个单元格,文本框大约需要 3-4 秒才能出现并为用户输入做好准备(Telerik、Syncfusion 等)。
  3. 最终,我做了一个基准测试,比较了 Wasm Blazor 和 Angular 执行具有一系列计算的简单函数的速度(主要是在某些循环中增加表单绑定变量的值)。 Blazor Wasm 需要 2000 毫秒,而 Angular 只需要 25 毫秒! 这是一个悲惨的结果。 慢了 80 倍以上! (所有测试都用最近的官方 Blazor Webassembly 版本重新完成)

我听说使用 AoT 功能我们只会获得 5 倍的性能提升,即使是在应用程序大小增加的开销下也是如此。

因此,请帮助并说明在这些问题中我们是否会在即将发布的 .Net 5 或 6 版本中得到好消息?
谢谢

_题外话_

QBasic 会向后兼容吗? 🤪

让我们去 Blazor 5.0 吧! 🚀

RIPjs

您可以为https://github.com/microsoft/GW-BASIC提交拉取请求

@Sherweeen我们正在为 .NET 5 中的 Blazor WebAssembly 进行各种运行时性能改进。 Blazor WebAssembly 目前在基于解释器的运行时上运行,它具有我们正在努力解决的已知性能限制。 我们还与各种组件供应商合作,以帮助提高其组件实现的效率。

@danroth27
期待包含5607指令支持

目前,计划采用blazor webassembly的用户很大一部分是从原来的WinForm、WPF或者react、angular、Vue开发者转过来的,开发的产品很多都是企业级应用。 如果一套多租户用户管理、注册、登录等安全管理机制能够“开箱即用”,将大大加快blazor webaeembly的应用速度。

@199621616您是说 Azure B2C 之类的吗?

https://docs.microsoft.com/en-us/azure/active-directory-b2c/overview

@斯蒂芬斯特劳德

虽然我已经能够为我的 wasm 应用程序实现 Azure 身份验证,但它没有像服务器 Blazor 那样包含在 wasm 模板中,也许这就是所提到的,以便更容易地设置新项目?

@PylotLight Blazor WebAssembly 模板确实支持使用Azure ADAzure AD B2C ,但这些选项目前只能从命令行使用,而不是从 VS。 VS 应该在将来的更新中启用这些选项。

@PylotLight您可以在问题 #21671 中查看有关此的一些信息。 当前在 Blazor WebAssembly 中实现类似 Azure AD B2C 的过程是一个相当大的过程,因此希望他们提到的更新将改进这个过程。

@lzinga@danroth27感谢您提供的信息,但它并没有打扰我:P
我只是想帮助解释上面那个家伙在问什么。 当然,很高兴看到标准模板中包含该功能 =]。

@danroth27虽然我理解路线图决定背后的原因,但请考虑在 Silverlight、XNA、UWP(具有自己的 .NET 风格)、EF6、WCF、.NET Native、C++/CX 与 C++/WinRT 以及大量之后在其他失误中,微软已经烧毁了很多开发人员的爱,这影响了我们就技术采用向客户提供建议的决定。

@ pjmlp 您的批评并非没有道理,但是来吧... Blazor(以及一般的 WebAssembly)是 Web 技术中最令人惊讶、令人兴奋、令人敬畏的开发 - 至少 20 年! Roth、Sanderson 和他的朋友们让 Web 开发再次变得有趣,值得我们称赞。

为了在不学习任何新东西的情况下神奇地提高我们的就业能力……想一想!

想想我们从未做过 SPA(angular/react/vue)的 .NET 同事——aspnet 团伙只是挥舞着魔杖,将他们从“后端开发人员”转变为“全栈开发人员”。 就这样……魔法。


顺便说一句:非常高兴的 css 隔离计划。 但是请(!)也添加js 隔离。 依赖于 js 库的 UI 组件(例如 Bootstrap)应该能够在组件内声明/使用 css 和 js - 否则项目将变得难以维护。

@lonix1我提到我了解更改背后的原因。

然而,我也想传达一个信息,并不是每个人都对过去 10 年的持续变化感到满意,我完全知道罗斯、桑德森和朋友们不应该受到指责,但他们有能力传递信息与 Microsoft 管理层联系。

.NET Core 1.0 => .NET Core 2.0 过渡发生的方式,让我为一位决定将一些关键服务从 .NET 迁移到 Java 并将它们部署到 Linux 的客户提供了一个项目。

也许如果他更高兴,他会愿意投资于 .NET Core,因为它已经非常有能力提供所需的服务功能集。

因此,如果您愿意,请杀死消息传递者,但这不会改变某些圈子的看法。

锈红豆杉很快
https://jetli.github.io/rust-yew-realworld-example-app/#/

Blazor 太慢了! 太慢了 ! 太慢了 !
Blazor 需要性能!!!

@pjmlp我认为如果您能澄清您所指的具体决定会有所帮助。 (推迟AOT,也许?)

@chucker自 UWP 推出以来,那些碰巧使用基于 .NET 的技术的开发人员所做出的所有决定,以及随后的 .NET Core 重启。

对于多语言开发人员来说,.NET 并不是我们接触的唯一技术,只是众多技术中的另一种选择,所以如果微软管理层决定将路线图项目(如 AOT 编译)推向不确定的未来,那么我们需要重新评估我们的业务做出相应的决定,以防万一 AOT 支持 WebAssembly 永远不会到来,尽管 Daniel 和团队做了惊人的工作。

看起来 WebAssembly AOT 被推迟到 6.0 版本(2021 年 11 月)。
https://github.com/dotnet/runtime/issues/38367#issuecomment -651117373

@Sherweeen我们正在启动一个中等大小的应用程序,我很担心你说的性能。 您的应用程序是真正的数据密集型应用程序吗? 或者存在这种性能的场景是什么,也许如何避免进入那个位置? 感谢任何建议

Blazor 服务器端是 .Net 5 的一部分吗?它是否更新了?

Blazor 服务器端是 .Net 5 的一部分吗?它是否更新了?

@mg1357是的,它是 .NET 5 的一部分,并且正在获取所有组件模型更新。

在最近的一次社区站立会议中,一名实习生演示了一些虚拟化功能,这些功能有望在 ASP.NET Core 5.0 RC 候选中落地。 还是这样吗? 是否存在可以针对此功能跟踪的问题?

嗨,我看到#23560 被关闭了,这是否意味着我们正在获得 JS 隔离,或者它不会被覆盖?

PD:我在路线图中没有看到这就是我问的原因

@barahonajm - 我认为它已经完成并且将在 5.0.0 RC-1 中发布是一个安全的赌注,因为该问题同时具有Done标签和5.0.0-rc1里程碑;)

@barahonajm 是的,通过 ES6 模块的 JS 隔离将在即将发布的 .NET 5 RC1 版本中提供: tada:。

WASM AOT 有更新吗?

.NET 6 有路线图吗? 有的话给个链接

@ivanivanyuk1993还没有。 我们仍在完成 .NET 5 并刚刚开始 .NET 6 规划。

我今天在哪里可以看到文档:

  • CSS 隔离
  • 受保护的浏览器存储

@VictorioBerra官方文档仍在开发中,但您可以在此处阅读有关这些新功能的信息: https :

此页面是否有帮助?
0 / 5 - 0 等级