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

时间:2017-09-15 03:43:33

标签: asp.net angular reactjs razor

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

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

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

提前致谢!

3 个答案:

答案 0 :(得分:40)

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

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

答案 1 :(得分:33)

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

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

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

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

答案 2 :(得分:16)

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

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

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

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

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

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

同样适用于您的客户端JS。把JS放在部分视图中是很诱人的。保持井井有条。

在IE上呈现非常糟糕。特别是如果有很多图像。务必尽可能压缩图像,当然不会丢失质量。