gpt4 book ai didi

c# - 如何将 Angular 2.0 添加到现有的 ASP.NET MVC 应用程序

转载 作者:太空狗 更新时间:2023-10-30 01:15:16 24 4
gpt4 key购买 nike

我有一个非常大的 asp.net MVC 4.0 应用程序,我想开始使用 asp.net 5.0 和 Angular 2.0 迁移到 Web API。

主要原因是开始面向 future 的验证并将一些新组件设置到更现代的 SPA 架构中。

我的计划是让现有站点的一小部分在路由到时显示调用 Web API 获取数据的 Angular SPA 应用程序,而不是 MVC Controller 和函数。对于这一部分,我不打算使用 ASP.NET MVC 功能,例如共享布局页面、捆绑、路由等,而是宁愿将其留给 Angular。

我现有的 MVC 和新的 Web api 项目都将使用使用 EF 的数据层项目/存储库。

我的问题是:

  1. 这听起来怎么样?我找不到太多关于如何将 Angular 引入现有应用程序的文献
  2. 我应该使用单独的项目,还是在访问同一个数据库的新域上使用一个完整的单独解决方案?即,与其迁移,不如在 ASP.NET 5.0 上启动新的解决方案
  3. 我如何处理身份验证和授权?我正在使用 Identity v2.0,我能否混合使用,以便访问 MVC 站点上的页面的用户使用基于标准表单的身份验证,但在访问 Angular/API 部分时他们使用 token ?

感谢您的宝贵时间。

最佳答案

过去 6 个月我们一直在这个过程中(唯一的区别是 Angular,而不是 Angular 2)。这是我的意见...

a small section of the existing site which when routed to displays an Angular SPA app calling Web API for data, instead of the MVC controller and functions

即使不是不可能,也非常困难,因为 ASP.NET Core 从根本上与 MVC 4 非常不同。我建议有一个单独的站点(在不同的端口上)运行 Core 和 Angular。

I'm not planning on using ASP.NET MVC features such as the shared layout page, bundling, routing etc, preferring to instead leave this to angular.

这是我们的第一种方法,但为了实现它,我们需要预加载大量 Javascript 库,或者为动态加载做一些聪明的事情。在 Angular2 中更容易(允许动态加载的 SystemJS 内置于基础设施中)。相反,我们将应用程序拆分为大约六个功能。每个功能都有一个 .NET Controller 和一个 View (Index.cshtml)。在该功能中,我们使用 Angular 功能进行路由、 View 等。这种方法还帮助我们拥有强类型 View 。

Should I use separate projects, or a whole separate solution on a new domain which accesses the same db?

Entity Framework 也大不相同。在我们的旧(非常旧)解决方案中,我们根本不使用 EF,因此这是一个更容易的决定。但即使您确实在当前解决方案中使用 EF,EF Core 也是一种不同的动物,包括它执行迁移的方式。对我们来说,干净利落的切割要容易得多。

How to I handles authentication and authorisation?

我们的旧系统使用的是成员资格框架,我们团队中没有人熟悉 OAuth。因此,在等待 IdentityServer 4(目前几乎没有文档)的同时,我建议您考虑 SaaS 解决方案,如 StormPath 或 Auth0(我们喜欢 StormPath)。如果您有使用 IdentityServer 的经验,您可以跳转到 IdentityServer 4。由于我们使用的是 MVC,所以我们的身份验证非常简单;但我认为基于 AJAX 的身份验证不会那么困难。

希望对您有所帮助。 SO 不喜欢“基于意见”的问题 - 但我认为有很多团队都在为这种类型的过渡而苦苦挣扎,希望这个问题和答案是合适的:)

关于c# - 如何将 Angular 2.0 添加到现有的 ASP.NET MVC 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39069873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com