ASP.NET Core 2.0 Razor与Angular / React / etc等


101

我和我的团队已经获得了用于开发企业级Web应用程序的资金(不会详细介绍其功能)。该应用程序将具有许多单独的网页,但是其中两个页面更加集中且非常繁琐-就像许多用户交互,显示大量数据的模式,Websocket连接,聊天等一样繁重。

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

我想就“新” Razor vs. Angular / React之类获得一些专家意见。我特别关注性能。Core 2.0 Razor如何支持客户端渲染框架?差异可以忽略不计吗?我们的应用程序定位到潜在的1,000,000用户(大约100,000个并发用户)。

提前致谢!


4
新剃刀 ”是指剃刀页面吗?
Werner

36
那么,您最后选择了哪一个?进展如何?
stt106

5
您是如何开始这个项目的?我现在的处境几乎与您一样,希望获得更新!
JLo

10
嗨,JLo和stt106。抱歉,回复花了很长时间。最后,我们使用Azure SQL开发了Angular前端和ASP.NET Core API后端。到目前为止,对我们来说非常有用!我想如果您更喜欢React,它将是Angular的类似替代品。我必须学习Angular,这是一个非常简单的过渡,现在我喜欢它!
TchPowDog

ASP.Net Core与Angular / React的速度比较是题外话?可能会有规范的答案。至于今天,我们有Core 2.2,不久还有3.0。
MikroDel19年

Answers:


74

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

总体而言,到目前为止,此设置对我们来说非常有用!我想如果您更喜欢React,它将是Angular的类似替代品。我必须学习Angular,这是一个非常简单的过渡,现在我喜欢它!


5
至于使两个POCO模型集保持同步,有一个非常有用的VS扩展,可以从MVC模型创建角度接口,请查看typewritter
Andy Braham

好吧,就我个人而言,如果我必须使用Angular,我将在数据库部分使用NoSql。
Venzentx

2
我无法想象在Angular之上选择ASP.NET剃须刀。过去,ASP.NET为.NET开发人员提供了一些熟悉的代码,但是使用RAZOR时,学习曲线要​​比使用Angular高。MVC从HTML拆分逻辑。
标记

1
@Mark我不相信。Razor Pages非常完美,特别是它们处理数据绑定的方式。他们太好了。但是角度对于他的场景来说是完全合适的。
Mosia Thabo

2
@ MosiaThabo,Mark不是在谈论Razor Pages,而是在谈论Razor。这是我的OP所指的。在我的原始帖子中,我指的不是Razor Pages(我认为现在称为Blazor)。我专门谈论的是客户端渲染与服务器渲染。Razor Pages是Microsoft的Angular / React风格,由于您在Angular和React中具有优势,因此我认为它们是必要的。
TchPowDog

49

通过在服务器端使用Angular / React和API:

  • 您消除了在服务器端生成HTML的过程,并节省了CPU
  • api会产生较小的有效载荷(json),而课程的Razor(html)会更大,持续不断的整页重载和回发往返。因此api和spa可以节省带宽
  • api和spa可能具有不同的版本控制,扩展和部署方案
  • 通过使用api,您也可以支持移动应用,如果您是Razor的用户,那么将来可能需要使用api

但是,通过使用Angular / React,您应该担心客户端:

  • 客户端必须启用javascript
  • 客户必须具有现代浏览器
  • 客户端必须具有足够强大的硬件
  • 搜索引擎优化

1
我了解两个框架之间的差异,我更关心性能。
TchPowDog

两者都存在相同的基准线,但我不知道剃刀页面是否存在任何基准。此链接可能有帮助-ASP.NET Razor页面与MVC:Razor页面如何适合您的工具箱?
Mohsen Esmailpour

1
Razor支持移动设备,列出的缺点并不重要。两者都以自己的方式快速。我更喜欢Angular,但是两者都经过优化。Razor不像MVC那样使用树来优化代码。Angular是客户端,因此它实际上并没有使用树,而是在一定程度上优化了HTML中的数据。
尼克·特纳

@NickTurner我理解它不仅是在智能手机上查看网页,而且是一个完整的自己的应用程序。例如,一个Android应用程序,它可以从服务器不变的API,让数据的同时,另一方面使用功能Android提供-更好的动画支持,通知,烤面包的消息等等
拉斐尔施米茨

23

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

建议..请务必仔细考虑并遵循最佳做法。为了保持事物的可维护性,请确保将控制器,视图,模型分成较小的有意义的组。当我开始时,我犯了一个错误,那就是将所有内容放入一个Home控制器中,并在共享文件夹中放置了大量视图。刚开始时还不错,但是当功能蠕变开始时,它变得一团糟,很难回去重新设计。

我也使用Linq2SQL。我犯了为所有内容创建模型的错误,然后意识到我可以将查询中的结果集作为模型返回。h

如果您使用.NET MVC并关心性能,那么这些就是我遇到的事情:

不要返回创建大块HTML的局部视图!确保最小化所有内容。摆脱所有空白。使用较小的ID名称。花时间创建尽可能轻的html。返回JSON并让客户端完成一些工作。

在开发CSS时要小心。不要使用很多内联样式,请花一些时间将其合并到CSS文件中,以便日后将其最小化。

您的客户端JS也是如此。将JS放入部分视图中是很诱人的。使事情井井有条。

在IE上渲染很可怕。特别是在有很多图像的情况下。确保在不损失质量的情况下尽可能地压缩图像。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.