NET Core 2.0 Razor vs Angular/React/etc

我和我的团队已经收到了开发企业级 Web 应用程序的资金(不会详细介绍它的功能)。该应用程序将有许多单独的网页,但其中两个网页更加集中和非常沉重,因为在许多用户交互,模态显示大量数据,网络插座连接,聊天等。

I have been assigned to Chief Architect on the project, so I am doing some research into the latest web frameworks. For the back end, we have done some testing and have decided to go with the Azure SQL platform. So far, I am liking the improvements that have been made, and are being made, to ASP.NET with Core 2.0. Specifically the Razor engine, over previous versions of ASP.NET MVC.

我想得到一些关于“新的”剃刀与角度/反应和类似的专家意见。我更关心的是表现。Core 2.0 Razor 如何支持客户端渲染框架?这些差异可以忽略不计吗?我们的应用程序针对的是潜在的100万用户(大约10万并发用户)。

Thanks in advance!

85848 次浏览

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

  • 您消除了在服务器端生成 HTML 的过程,并且节省了 CPU
  • API produces a small payload (JSON) and Razor (HTML) of course would be much larger in size, the constant full page reloads, and postback round trip, so API and SPA save bandwidth
  • API 和 SPA 可能有不同的版本控制、扩展和部署场景
  • 通过使用 API,你也可以支持移动应用程序,如果你开始使用 Razor,你可能在未来需要 API

But by using Angular/React, you should be worried about clients:

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

我没有标准。但是,我有几个运行 JQuery、 Razor 的项目。NET MVC (C #) ,AJAX.不是你要处理的那种规模。

建议。.一定要仔细考虑问题,并遵循最佳实践。为了保持事物的可维护性,一定要将控制器、视图、模型分成更小和更有意义的组。刚开始的时候,我犯了一个错误,把所有内容都放在一个 Home 控制器中,并在共享文件夹中放入大量视图。一开始还不错,但是当特性开始变质时,它变得一团糟,很难回去重新设计。

我也使用 Linq2SQL。我犯了一个错误,为所有的事情创建了模型,然后我意识到我可以仅仅将查询的结果集作为一个模型返回。废话。

如果你使用.NET MVC 并且关注性能,下面是我遇到的问题:

DON'T return partial views that create large blocks of HTML! Be sure to minimize everything. Get rid of all the white space. Use smaller ID names. Take the time to create html that is as light as possible. Return JSON and have the client do some of the work.

在开发 CSS 时要小心。不要使用一大堆内联样式,花点时间合并到 CSS 文件中,以便稍后最小化。

Same goes for your client side JS. It's tempting to put the JS inside partial views. Keep things organized.

在 IE 上渲染是可怕的。特别是如果有很多图像的话。一定要尽可能多地压缩图像,当然不能损失质量。

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

总的来说,到目前为止,这个设置对我们来说非常好!我可以想象,如果你觉得更舒服的话,React 会是 Angular 的类似替代品。我必须学习 Angular,这是一个非常容易的过渡,我现在很喜欢它!

反应与角度

  1. 基本安全在客户端环境的角度,而反应安全没有提供。

  2. 角度执行缓慢,而反应执行快,由于虚拟空间。

  3. 角度代码不是100% 自定义,而反应代码是100% 自定义。

  4. 默认的角度打字,而反应使用 Javascript 和打字机。这是许多开发人员喜欢 React 的主要原因,因为开发人员喜欢 JavaScript