【问题标题】:How to add Angular 2.0 to an existing ASP.NET MVC app如何将 Angular 2.0 添加到现有的 ASP.NET MVC 应用程序
【发布时间】:2016-12-28 10:26:00
【问题描述】:

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

主要原因是开始对未来进行验证并将一些新组件设置为更现代的 SPA 架构。

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

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

我的问题是:

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

感谢您的宝贵时间。

【问题讨论】:

    标签: c# asp.net angularjs asp.net-mvc


    【解决方案1】:

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

    现有站点的一小部分,当路由到显示 Angular SPA 应用程序调用 Web API 获取数据时,而不是 MVC 控制器和函数

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

    我不打算使用 ASP.NET MVC 功能,例如共享布局页面、捆绑、路由等,而是将其留给 angular。

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

    我应该使用单独的项目,还是在访问相同数据库的新域上使用完全单独的解决方案?

    实体框架也完全不同。在我们的旧(非常旧)解决方案中,我们根本没有使用 EF,所以这是一个更容易的决定。但即使您确实在当前解决方案中使用 EF,EF Core 也是一种不同的动物,包括它执行迁移的方式。干净利落对我们来说要容易得多。

    如何处理身份验证和授权?

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

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

    【讨论】:

    • 非常感谢,非常有帮助。
    • 那么......你有没有成功地将 Angular 应用程序添加到旧的 mvc 项目中?
    • 我们决定不尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多