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

时间:2019-06-03 06:09:36

标签: angular asp.net-core-2.2 blazor

我们的企业应用程序是一个庞大的应用程序(超过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是否有更好的优势?

6 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

从头开始,我建议您使用Blazor服务器端SPA应用程序。

为什么要使用SPA

SPA的设计类似于桌面应用程序 最适合与数据输入表单一起使用 我猜您的团队是由桌面应用程序(WinForms,WPF)开发人员组成的,一旦他们理解了Blazor或任何其他SPA框架所基于的组件模型,他们将可以轻松地开始开发。

为什么要使用Blazor

  • 您的开发人员对C#熟悉,并且对JavaScript的了解不佳
  • 无论您是否了解JavaScript,JavaScript + SPA框架(例如Angular)的学习曲线都比Blazor高得多。

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

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

为什么要使用Blazor服务器端

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

  • 所有资源都在您的控制之下
  • 您不必使用网络请求。您可以使用直接访问数据库或通过存储库访问数据库的服务。
  • 与公共服务器端Blazor不同,私有服务器端Blazor(尤其是对您的公司而言)不太可能引起任何有意义的网络延迟。

您真的可以通过这种方式创建快速,强大且类似于桌面的应用程序

希望这对您有帮助...

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

答案 2 :(得分:2)

对于企业开发人员而言,我认为我们更关注业务逻辑层,而不是像UI那样由框架或库生成的SAP ABAP开发这样的UI设计。无论前端还是后端,我都喜欢使用强类型。这样可以节省大量时间,避免错别字错误,尤其是团队开发。

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

  1. 模型

Model

  1. 输入屏幕

Input screen

  1. 搜索配置

Search configuration

  1. 搜索屏幕

enter image description here

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

我正在使用Razor来构建Core 3.0 Web.App。效果很好,生产率很高。我是一位非常有Angular经验的Java开发人员。我最喜欢成熟的Razor环境。服务器上的身份验证易于实现。如果您不需要SPA但需要MPA,那么最好还是使用Razor。使用MVC时,视图的加载不是问题,是的,它的速度比Angular慢,但是只要保持视图紧凑即可。