我的团队和我已经获得资金,开始开发企业级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个并发用户)。
提前致谢!
答案 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:
但是通过使用Angular / React,您应该担心客户端。
答案 2 :(得分:16)
我没有基准。但是,我有几个项目运行JQuery,Razor,.NET MVC(C#),AJAX。不是你要解决的规模。
建议..务必考虑事情并遵循最佳做法。为了保持可维护性,请确保将控制器,视图,模型分解为更小且更有意义的组。当我开始时,我错误地将所有内容放入一个Home控制器中,并在共享文件夹中放置了大量视图。一开始很好但是当特征蠕变开始时,它变得一团糟,很难回去重新设计。
我也使用Linq2SQL。我犯了为一切创建模型的错误,然后意识到我可以将查询的结果集作为模型返回。咄。
如果您使用.NET MVC并且关注性能,那么这些就是我遇到的问题:
不要返回创建大块HTML的部分视图!一定要尽量减少一切。摆脱所有的空白区域。使用较小的ID名称。花点时间创建尽可能轻的html。返回JSON并让客户端完成一些工作。
小心你如何开发你的CSS。不要使用一堆内联样式,花时间将其合并到CSS文件中,以后可以将其最小化。
同样适用于您的客户端JS。把JS放在部分视图中是很诱人的。保持井井有条。
在IE上呈现非常糟糕。特别是如果有很多图像。务必尽可能压缩图像,当然不会丢失质量。