【问题标题】:How does Angular integrate with ASP.NET Core MVC project?Angular 如何与 ASP.NET Core MVC 项目集成?
【发布时间】:2021-07-01 03:44:01
【问题描述】:
我的理解是,Angular、React 等前端框架是独立的应用程序,它们调用使用 .NET Core 或任何其他服务器端技术构建的 Web API。
我现在读到 Angular 可以与 .NET Core 集成,我对这个概念感到困惑。在 ASP.NET Core MVC 中,MVC 层是 UI 项目。该层使用基础设施和核心层类来实现功能。
如果我们用 Angular 替换 UI 层,那么 Angular 将如何使用这些基础/核心类? (我问是因为我的理解是 Angular 只适用于 Web API)。
【问题讨论】:
标签:
angular
asp.net-core
domain-driven-design
【解决方案1】:
MVC 在服务器中完全呈现,
Angular 是 API 项目的前端。
MVC 主要用于快速和肮脏的项目。
【解决方案2】:
Angular 将如何使用这些基础设施/核心类?
Angular 不使用 .NET 中的任何东西
Angular 仅适用于 Web API
一旦 Angular 被加载到浏览器中,它就可以做它应该做的事情。它不必调用 API。它可能是一个离线游戏,它可能是一个离线实用程序,它可能想要使用设备传感器等。
所以通常我们在服务器的某个地方有一个 API,并通过网络服务器(kestrel、nginx、IIS 等)向全世界提供服务。
我们还有一组 JavaScript 文件,它们是我们的 Angular 应用程序,这些只是需要加载到客户端浏览器中的静态文件。所以我们还需要一个网络服务器来提供静态文件(例如 kestrel 等)。
ASP.NET Core SPA 集成提供的(用于生产)只不过是为这些静态文件提供服务。因此,与其创建一个新网站来提供您的 Angular 静态文件,ASP.NET Core 说我已经启动并运行,为什么不让我也提供这些静态文件?
这在某些情况下会有好处,例如,如果 API 只为 Angular 应用程序提供服务,那么它们都在同一个域中,您不需要配置任何 CORS 策略,您可以使用 ASP具有默认 cookie 身份验证的 .NET Core 身份,这比基于令牌的身份验证更简单。此外,如果您没有专用服务器并且您正在使用 Plesk 或 CPanel 或其他东西的共享托管服务,那么您无需为 Angular 应用程序购买单独的服务,而是让 ASP.NET Core 处理服务Angular 应用程序也是如此。
虽然我不得不说 ASP.NET Core node services 中间件有更多的功能,例如您可以将其配置为使用节点 (SSR) 在服务器上渲染那些静态 Angular 文件。
希望这对您有所帮助。