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 相比,它更容易转换。这些是我目前看到的优点:
- 在 HTML 中处理 C# POCO 以进行绑定。无需转换为
基于 TS 的 POCO。
- 使用数据注释进行模型级验证
- API 级别的默认路由或自定义路由。一处定义
路由。
- 最少 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 的设计。不管前端还是后端,我都比较喜欢用强类型。它节省了大量时间并避免了拼写错误,尤其是团队开发。
例如下面的销售订单输入界面,我们只需要创建带有属性的模型并进行配置即可。库将生成输入和搜索屏幕。
- 型号
- 输入画面
- 搜索配置
- 搜索屏幕
我们的企业应用程序是一个庞大的(1000 多页)应用程序,主要是美化数据输入应用程序。没有主要的业务流程。几乎所有页面都有 CRUD。我们正在尝试从旧代码库 (C/C++) 重新构建整个应用程序 - 桌面应用程序到基于 Web 的应用程序。
我们从 Angular 开始,但对 Javascript 的知识有限,几乎一无所知,这是一个陡峭的学习曲线。仅供参考:我们所有的开发人员都知道 C#。我们发现很难让新开发人员进入 Angular/Javascript 世界。
综上所述,我正在研究 ASP .Net Core + Razor Pages,发现与 Angular 相比,它更容易转换。这些是我目前看到的优点:
- 在 HTML 中处理 C# POCO 以进行绑定。无需转换为 基于 TS 的 POCO。
- 使用数据注释进行模型级验证
- API 级别的默认路由或自定义路由。一处定义 路由。
- 最少 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 的设计。不管前端还是后端,我都比较喜欢用强类型。它节省了大量时间并避免了拼写错误,尤其是团队开发。
例如下面的销售订单输入界面,我们只需要创建带有属性的模型并进行配置即可。库将生成输入和搜索屏幕。
- 型号
- 输入画面
- 搜索配置
- 搜索屏幕