Asp.net 在尝试同时运行WebForms和MVC3时,是否有需要注意的问题?

Asp.net 在尝试同时运行WebForms和MVC3时,是否有需要注意的问题?,asp.net,asp.net-mvc,webforms,Asp.net,Asp.net Mvc,Webforms,当前工作的代码库完全是WebForms,大多数逻辑都被填充到代码隐藏文件中。我正在研究使用MVC3添加新页面和未来重构的可能性,而不必扔掉整个代码库(一个大禁忌)。所有这些页面都是同一个“应用程序”的一部分,因此它不像使用MVC创建新项目那么简单-它们必须进行非常密切的交互,在某些情况下,WebForms页面必须重定向到MVC页面,反之亦然 我曾读过几篇文章,展示了如何将二者结合起来(尽管是在非常简单的场景中,而我的场景相当复杂),但是有什么问题需要注意吗?特别是关于从WebForms页面转到M

当前工作的代码库完全是WebForms,大多数逻辑都被填充到代码隐藏文件中。我正在研究使用MVC3添加新页面和未来重构的可能性,而不必扔掉整个代码库(一个大禁忌)。所有这些页面都是同一个“应用程序”的一部分,因此它不像使用MVC创建新项目那么简单-它们必须进行非常密切的交互,在某些情况下,WebForms页面必须重定向到MVC页面,反之亦然

我曾读过几篇文章,展示了如何将二者结合起来(尽管是在非常简单的场景中,而我的场景相当复杂),但是有什么问题需要注意吗?特别是关于从WebForms页面转到MVC页面,然后再返回WebForms页面,其中需要跨页面传递数据,比如从会话(不一定在加载时完全从数据库读取),例如工作流,如:

  • (WebForms)用户转到CreateQuote.aspx?CustomerId=42并输入一些数据。他们点击一个“过程”按钮
  • (MVC)/customers/42/处理MVC页面,该页面读取以前提交的信息,并执行一些额外的操作。用户点击“下一步”按钮
  • (WebForms)CompleteQuote.aspx?CustomerId=42&QuoteId=534235页,从上一个MVC页中提取信息并对其应用更多逻辑

  • 此外,我们现有的项目是一个ASP.NET Web站点项目(即每个页面都是自己的DLL的项目);它是否必须转换为Web应用程序才能与MVC共存(由于代码隐藏文件中存在大量重复代码,这本身就是一项重大的重构工作)

    我建议您避免在同一应用程序中混合ASP.NET MVC和经典WebForms。将它们保存在单独的项目中,并使它们通过标准HTTP协议机制(查询字符串参数、表单帖子、cookie等)进行通信。如果它们位于同一个域上,则可以在它们之间切换。您甚至可以在它们之间创建对象,即使它们托管在IIS中的单独应用程序池中(根本不应该使用会话,但这是另一个主题)

    就重用数据访问逻辑而言,根据现有WebForms应用程序设计的正确程度,您可以共享包含当前数据访问代码的程序集。如果现有应用程序的设计很差,不同层之间存在强耦合,那么可以将这些遗留代码打包到存储库中,并且至少可以重用数据库访问代码


    通过保持应用程序的独立性,您不需要引用某些遗留代码来污染新的ASP.NET MVC应用程序,也不需要使用ASP.NET MVC特定的东西污染现有的应用程序经典WebForms应用程序。

    可能重复:--+1这两者之间本质上没有区别除了url处理之外,site.com/action和sub.site.com/action稍微复杂一点,而且显然需要单独托管(这可能只是原始站点根目录中的一个虚拟目录)。谢谢,这正是我所担心的。目前的WebForms版本做得非常糟糕——文件后面有数千行代码,到处都是重复的逻辑,但由于多年来的投资,我们不能放弃它,所以唯一的选择是将它们并排运行,除了MVC应用程序不是真正的应用程序,只是特定的页面;正如我所说,它们都是一个应用程序,所以这不像WebForms中的项目A在MVC中与项目B对话,更像是WebForms中的页面A必须与MVC中的页面B对话。不幸的是,如果没有大量的重构,这听起来几乎是不可能的。