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

4

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

主要原因是为了未来的可持续性,并将一些新组件设置为更现代的SPA架构。

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

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

我的问题是:

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

感谢您的时间。

1个回答

4
在过去的6个月中,我们一直在进行这个过程(唯一的区别是Angular,而不是Angular 2)。以下是我的建议...
一个现有网站的小部分,在路由时显示调用Web API获取数据的Angular SPA应用程序,而不是MVC控制器和功能。
非常困难,如果不是不可能的,因为ASP.NET Core与MVC 4基本上非常不同。我建议使用单独的网站(在不同端口上运行Core和Angular)。
我不打算使用ASP.NET MVC功能,如共享布局页面、捆绑、路由等,而是更喜欢将其留给Angular。
那是我们的第一种方法,但要实现它,我们需要预加载大量的Javascript库,或者做一些智能的动态加载。在Angular 2中更容易(SystemJS允许动态加载集成到基础设施中)。相反,我们将应用程序拆分为约半打功能。每个功能都有一个.NET控制器和一个单个视图(Index.cshtml)。在功能内部,我们使用Angular的路由、视图等功能。这种方法也帮助我们拥有强类型视图。
我应该使用单独的项目还是在新域上使用整个单独的解决方案来访问相同的数据库?
Entity Framework也非常不同。在我们旧的(非常老的)解决方案中,我们根本不使用EF,所以这是一个更容易的决定。但即使在当前解决方案中使用EF,EF Core也是一种不同的动物,包括它进行迁移的方式。对我们来说,有一个干净的切割会更容易。
我如何处理身份验证和授权?
我们的旧系统正在使用成员资格框架,而团队中没有人熟悉OAuth。因此,在等待IdentityServer 4(目前几乎没有文档)时,我建议您考虑像StormPath或Auth0这样的SaaS解决方案(我们喜欢StormPath)。如果您具有使用IdentityServer的经验,则可以转向IdentityServer 4。由于我们使用MVC,我们的身份验证非常简单;但我认为基于AJAX的身份验证不会更加困难。
希望有所帮助。SO不喜欢“基于意见”的问题-但我认为有许多团队正面临这种过渡类型的挑战,希望这个问题和答案是合适的 :)

非常感谢,那真是非常有帮助。 - Evonet
那么...嗯,你是否成功地将一个Angular应用程序添加到旧的MVC项目中了? - Leonardo Wildt
我们决定不去尝试。 - Felix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接