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

我和我的团队已经获得了用于开发企业级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个并发用户)。

提前致谢!

宝儿Tony2020/03/12 18:10:05

通过在服务器端对api使用Angular / React:

  • 您消除了在服务器端生成HTML的过程,并节省了CPU
  • api produces small payload (json) and Razor (html) of a course would be much larger in size, constant full page reloads and postback round trip. so api and spa save bandwidth
  • api and spa could have different versioning, scaling and deployment scenarios
  • By using api you can support mobile app too and if you start by Razor you may need api in future

but by using Angular/React you should be worry about clients.

  • client must enable javascript
  • client must have modern browsers
  • client must have enough powerful hardware
  • SEO
达蒙西里2020/03/12 18:10:05

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

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

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

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

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

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

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

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

逆天A前端2020/03/12 18:10:05

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

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