将ASP.NET Core MVC应用程序集成到现有的ASP.NET MVC应用程序

时间:2019-05-06 05:22:45

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

我正在生产中运行一个现有的ASP.NET MVC应用程序。现在,我的客户提出了一项新的要求/增强功能,他想使用ASP.NET Core MVC进行开发。新的增强功能将是新的独立模块。开发完成后,他想将其与现有的ASP.NET MVC应用程序集成。

我想知道,是否可以集成这两个应用程序,因为ASP.NET Core是完全从头重写的框架,而旧的应用程序使用.NET Framework 4.6.x。

任何帮助或指导我的链接将不胜感激。

谢谢。

阿南德·尼玛

1 个答案:

答案 0 :(得分:0)

您的问题实际上是很广泛的,因为“集成”是一个广泛的话题。它涵盖了应用程序的许多不同方面,确切的方法取决于对这些应用程序的了解。

也就是说,一般而言,ASP.NET MVC和ASP.NET Core是完全独立的平台。您不能从某种意义上将它们“集成”在一起,以便能够在同一ASP.NET MVC项目中同时运行Web窗体和MVC代码。它们将是两个独立的应用程序,需要分别进行部署。

您可以“共享”连接字符串,也就是说可以共享数据库,但是在这方面您需要做出许多决定。例如,如果当前的MVC项目使用EF6,则您还需要在Core项目中使用EF6,以便共享相同的实体类。目前,这意味着面向.NET Framework,而不是.NET Core。但是,.NET Core 3.0承诺可以在本机上运行EF6。或者,您可以使用EF Core,将数据库视为现有的实体框架。这将导致某些代码重复,但根据情况可能是可以接受的折衷方案。

可以共享诸如会话,Cookie和auth之类的内容,但是可能需要对ASP.NET MVC项目进行根本性的更改。即,ASP.NET Core使用数据保护提供程序进行加密和解密,而不是使用ASP.NET的机器密钥方法。但是,通过对OWIN的支持,ASP.NET MVC5也可以支持数据保护提供程序进行加密/解密。因此,如果您切换到此处使用数据保护,并在两个应用程序之间共享密钥环,那么每个应用程序都将能够解密由另一个应用程序加密的内容。但是,如果您尚未在MVC应用程序中使用数据保护,那么更改可能会有些痛苦。

如果您只关心共享身份验证,则可以通过集中身份验证提供程序(例如Identity Server)来实现。这样一来,这两个应用程序就可以彼此独立运行,但仍共享一个通用的用户/角色存储并支持SSO。但是,这也可能需要对现有MVC应用程序进行一些实质性更改。这都是权衡。