ASP .Net Core 与 Razor Pages 对比 Angular UI

ASP .Net Core with Razor Pages Vs Angular for UI

我们的企业应用程序是一个庞大的(1000 多页)应用程序,主要是美化数据输入应用程序。没有主要的业务流程。几乎所有页面都有 CRUD。我们正在尝试从旧代码库 (C/C++) 重新构建整个应用程序 - 桌面应用程序到基于 Web 的应用程序。

我们从 Angular 开始,但对 Javascript 的知识有限,几乎一无所知,这是一个陡峭的学习曲线。仅供参考:我们所有的开发人员都知道 C#。我们发现很难让新开发人员进入 Angular/Javascript 世界。

综上所述,我正在研究 ASP .Net Core + Razor Pages,发现与 Angular 相比,它更容易转换。这些是我目前看到的优点:

  1. 在 HTML 中处理 C# POCO 以进行绑定。无需转换为 基于 TS 的 POCO。
  2. 使用数据注释进行模型级验证
  3. API 级别的默认路由或自定义路由。一处定义 路由。
  4. 最少 JavaScript 使用。仅供参考:也尝试使用 WebAssembly。我们也在研究 Blazor

既然它是一个数据输入系统,那么客户端呈现与服务器端呈现有多大关系?

选择 Angular 和 .Net Core Web API 比 ASP .Net Core 2 + Razor Pages 有更好的优势吗?

这是一个自以为是的问题,但总的来说,单页应用程序需要比服务器呈现页面大几个数量级的努力。您将不得不在 C# 后端和打字稿 front-end 上复制逻辑。当您使用非类型安全的动态语言编写 front-end 代码时,您将不得不处理大量的错误,该语言的结构可能有问题。最后,单页应用程序是值得的,因为如果操作得当,它们可以为最终用户提供丰富且引人入胜的体验。但到达那里是一场艰苦的战斗。

考虑到您的开发人员的经验,我建议在 Razor Pages 或 MVC 中执行此操作,并逐渐将 Angular/React 代码位引入需要增强的前端区域。

换句话说,在 Razor Pages/MVC 中做所有事情,选择一个小区域,分支中间件管道并提供一个小 Angular 应用程序。

取决于您的需要。贵公司到处都是 C# 开发人员,因此去 angular 会增加项目的时间和复杂性。此外,由于这是一个用于在企业环境中输入数据的 Web 应用程序,因此您不必像在商业应用程序中那样关心加载时间和优化。通常尝试使用带有剃须刀的 ASP.NET 核心框架进行开发,并尝试使用较小的项目迁移到 angular。这是我的意见。您想提供适合您公司需求的技术解决方案并降低开发成本,这应该是您做出选择的主轴。

从头开始,我建议您使用 Blazor server-side SPA 应用程序。

为什么要使用 SPA

SPA 在设计上类似于桌面应用程序 最适合与数据录入表一起使用 我猜你的团队由桌面应用程序(WinForms、WPF)开发人员组成,一旦他们理解了 Blazor 或任何其他 SPA 框架所基于的组件模型,他们就会很容易地开始开发。

为什么要使用 Blazor

  • 您的开发人员 well-acquainted 使用 C#,对 JavaScript
  • 的了解很少
  • JavaScript+SPA框架的学习曲线,比如Angular比Blazor高很多,不管你是否了解JavaScript。

注意:这里必须强调的是,开发 Blazor 应用程序的能力需要一定的学习投入,虽然不像 Angular 那样高,即使您是 well-experienced Razor Pages或 MVC 开发人员。 另请注意:C#(语言)的知识,并不反映 (Asp).Net Core Framework 的知识。

  • 共享库:这是使用 Blazor 的因素之一。在 Blazor 中,您可以创建可在客户端和服务器上共享的项目。例如,您可以在共享项目中创建您的模型,并在双方使用它。

为什么要使用 Blazor 服务器端

Blazor 服务器端最适合私有网络中的企业应用程序运行。

  • 一切资源尽在掌握
  • 您不必使用网络请求。您可以使用直接或通过存储库访问数据库的服务。
  • 与 public server-side Blazor 不同,私有 server-side Blazor,尤其是贵公司的 Blazor 不太可能产生任何有意义的网络延迟,如果有的话。

您确实可以通过这种方式创建快速且强大的 desktop-like 应用程序

希望这对您有所帮助...

注:我没有完成我的回答,我会不时更新。请不要犹豫,问任何你想问的问题。

由于您的大部分应用都是简单的 CRUD,请考虑仅使用 razor/MVC。

使用Visual Studio + ASP.NET core + EF Core自动将数据库逆向工程为模型和数据库上下文。然后为所有 CRUD 操作自动生成(脚手架)控制器和视图。在需要的地方添加额外的数据注释。

如果您需要更高级的数据 display/interaction(例如网格、日历等),请考虑使用第 3 方 Javascript 小部件。他们不需要 JavaScript 专业知识。

我正在使用 Razor 构建 Core 3.1 Web.App。效果很好,生产率非常高。我是一位经验丰富的 Javascript 开发人员,拥有 Angular 经验。我最喜欢成熟的 Razor 环境。服务器上的身份验证很容易实现。如果您不需要 SPA 但需要 MPA,那么最好坚持使用 Razor。视图的加载不是 MVC 的问题,是的,它比 Angular 慢,但只要您保持视图紧凑就不会引起注意。

对于企业开发人员,我认为我们更关注业务逻辑层,而不是像SAP ABAP 开发那样UI 由框架或库生成UI 的设计。不管前端还是后端,我都比较喜欢用强类型。它节省了大量时间并避免了拼写错误,尤其是团队开发。

例如下面的销售订单输入界面,我们只需要创建带有属性的模型并进行配置即可。库将生成输入和搜索屏幕。

  1. 型号

  1. 输入画面

  1. 搜索配置

  1. 搜索屏幕