带有Razor页面的ASP .Net Core与UI的Angular

Gan*_*anu 5 angular blazor asp.net-core-2.2

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

我们从Angular开始,但是由于对Java知识的了解有限,这是一条陡峭的学习曲线。仅供参考:我们所有的开发人员都知道C#。我们发现很难将新开发人员带入Angular / Javascript世界。

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

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

由于这是一个数据输入系统,客户端渲染与服务器渲染是否重要?

与ASP .Net Core 2 + Razor Pages相比,使用.Net Core Web API选择Angular有更好的优势吗?

Isa*_*aac 11

最后,我建议您使用 Blazor 服务器端 SPA 应用程序。

为什么要使用SPA

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

为什么要使用 Blazor

  • 您的开发人员非常熟悉 C#,但对 JavaScript 的了解很少
  • JavaScript + SPA 框架的学习曲线,例如 Angular 比 Blazor 高很多,无论你是否了解 JavaScript。

注意:这里必须强调的是,开发 Blazor 应用程序的能力需要一些学习投资,尽管不如 Angular 高,即使您是经验丰富的 Razor Pages 或 MVC 开发人员。另请注意:C#(语言)的知识,不反映(Asp).Net Core 框架的知识。

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

为什么使用 Blazor 服务器端

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

  • 所有资源都在你的掌控之中
  • 您不必使用 Web 请求。您可以使用直接或通过存储库访问数据库的服务。
  • 与公共服务器端 Blazor 不同,私有服务器端 Blazor,尤其是您公司的 Blazor,不太可能产生任何有意义的网络延迟(如果有的话)。

你真的可以通过这种方式创建快速、健壮和类似桌面的应用程序

希望这可以帮助...

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

  • 我不能依赖 Blazor,因为它尚未投入生产,也不确定社区将在多大程度上适应这项新技术。正如我所说,这是一个大型企业应用程序,并且不希望最终采用一种在一两年内不受支持的技术。 (2认同)

Avi*_*ish 9

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

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

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


小智 6

由于您的大多数应用程序都是简单的 CRUD,因此请考虑仅使用 razor/MVC。

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

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