ASP.NET Core 2.0 Razor vs Angular/React/etc

Tch*_*Dog 84 asp.net razor reactjs angular

我和我的团队已经获得资金,开始开发企业级Web应用程序(不会详细介绍它的功能).该应用程序将有许多单独的网页,但其中两个页面更集中,非常沉重 - 在许多用户交互中很重,显示海量数据的模式,websocket连接,聊天等.

我被分配到该项目的首席架构师,所以我正在研究最新的Web框架.对于后端,我们已经做了一些测试,并决定使用Azure SQL平台.到目前为止,我喜欢使用Core 2.0对ASP.NET进行的改进.特别是Razor引擎,比以前版本的ASP.NET MVC.

我希望得到一些关于"新"Razor与Angular/React之类的专家意见.我特别关注表现.Core 2.0 Razor如何支持客户端渲染框架?这些差异是否可以忽略不计?我们的应用程序针对的是潜在的1,000,000个用户(大约100,000个并发用户).

提前致谢!

Tch*_*Dog 54

我们最终使用Azure SQL进行了Angular前端和ASP.NET Core API后端.我们测试了Core Razor,虽然比传统Razor更好,但最终Angular对我们来说要快得多.就用户体验而言,Angular(或React)在性能方面要优越得多.我们发现Angular的模型绑定方面是服务器端渲染的巨大优势.然而,使用Razor(或一般的服务器端渲染)确实可以提高数据的整体完整性,并且可以使数据从前端更好地转换到后端.前端框架和API之间存在真正的脱节.传递给服务器的所有数据都必须转换为类型化对象 - 这意味着您必须管理两个单独的POCO模型集.如果服务器对象和前端对象不对齐,这可能会导致问题.目前,Entity Framework Core还不是很成熟,因此我们在更新对象,查询对象(包括子对象)等方面存在问题.

总的来说,到目前为止,这个设置对我们来说非常有用!如果你对它更加满意,我会想象React会成为Angular的类似替代品.我必须学习Angular,这是一个非常容易的过渡,现在我喜欢它!

  • 至于使两个POCO模型集保持同步,有一个非常有用的VS扩展,可以从MVC模型创建角度接口,请查看[typewritter](https://marketplace.visualstudio.com/items?itemName=frhagn。打字机) (4认同)
  • @MosiaThabo,马克不是在谈论 Razor Pages,他在谈论 Razor。这就是我的 OP 所指的。在我最初的帖子中,我不是指 Razor Pages(或者现在称为 Blazor,我认为)。我专门讨论了客户端渲染与服务器端渲染。Razor Pages 是 Microsoft 的 Angular/React 风格,我认为他们认为这是必要的,因为你使用 Angular 和 React 具有优势。 (3认同)
  • 我无法想象在 Angular 之上选择 ASP.NET razor。过去 ASP.NET 为 .NET 开发人员提供了一些熟悉的代码,但是使用 RAZOR,学习曲线比使用 Angular 更高。MVC 将逻辑从 HTML 中分离出来。 (2认同)
  • @Mark 我不相信。Razor Pages 是完美的,特别是它们处理数据绑定的方式。他们太好了。但是他的场景 angular 非常适合。 (2认同)

Moh*_*our 36

通过在服务器端使用带有api的Angular/React:

  • 你消除了在服务器端生成HTML的过程,你节省了CPU
  • api产生小有效载荷(json)和Razor(html)的课程将会大得多,整页重新加载和回发往返.所以api和spa可以节省带宽
  • api和spa可能有不同的版本控制,扩展和部署方案
  • 通过使用api你也可以支持移动应用程序,如果你从Razor开始,你将来可能需要api

但是通过使用Angular/React你应该担心客户.

  • 客户端必须启用javascript
  • 客户必须拥有现代浏览器
  • 客户端必须有足够强大的硬件
  • SEO


Kei*_*mar 17

我没有基准.但是,我有几个项目运行JQuery,Razor,.NET MVC(C#),AJAX.不是你要解决的规模.

建议..务必考虑事情并遵循最佳实践.为了保持可维护性,请确保将控制器,视图,模型分解为更小且更有意义的组.当我开始时,我错误地将所有内容放入一个Home控制器中,并在共享文件夹中放置了大量视图.一开始很好但是当特征蠕变开始时,它变得一团糟,很难回去重新设计.

我也使用Linq2SQL.我犯了为一切创建模型的错误,然后意识到我可以将查询的结果集作为模型返回.咄.

如果您使用.NET MVC并且关注性能,那么这些是我遇到的问题:

不要返回创建大块HTML的部分视图!一定要尽量减少一切.摆脱所有的空白区域.使用较小的ID名称.花点时间创建尽可能轻的html.返回JSON并让客户端完成一些工作.

小心你如何开发你的CSS.不要使用一堆内联样式,花时间将其合并到CSS文件中,以后可以将其最小化.

您的客户端JS也是如此.把JS放在部分视图中是很诱人的.保持井井有条.

在IE上渲染是可怕的.特别是如果有很多图像.务必尽可能压缩图像,当然不会丢失质量.