【问题标题】:ASP.NET Web Form upgrade to MVC and host both on same WebSiteASP.NET Web 窗体升级到 MVC 并在同一个网站上托管
【发布时间】:2012-04-20 13:47:13
【问题描述】:

我们有一个企业客户,他有一个使用 ASP.NET 3.5 编写的大型 ASP.NET Web 表单。他们想通过添加新功能(大功能)来增强这个网站,这值得 8 个月的工作。

基本上,他们未来的技术策略是使用 JQUERY、HTML5 等将所有内容迁移到 MVC 4.0。目前,他们希望使用最新的 MVC 4.0 BETA 开发这个新功能(到项目准备就绪时) MVC 4.0 即将推出)。

我的问题是无论如何我们可以在同一个网站上同时托管 ASP.NET 和 MVC.NET 应用程序,而不会从用户的角度注意到任何差异。例如,所有导航必须保持不变,但所有新功能都应该是(基于客户端的 json、jquery、moderniz 等)

如果有人能在正确的方向上帮助我解决这个问题,那就太好了。

【问题讨论】:

  • 出于好奇,迁移到 MVC 只是是因为他们想使用 HTML5 和 JavaScript?因为这些东西在 Web 窗体中也能正常工作。客户端技术并没有真正受到提供它们的服务器端技术的影响。并不是说我反对迁移到 MVC,实际上我鼓励它。我只是想确保在花钱之前通知商家。
  • @David - “工作正常”是主观的。当然,您必须越过障碍才能使 Web 表单对 html5 友好。
  • @MystereMan:“跳过箍”同样是主观的 :) 如果曾经使用 Web 窗体作为小部件的拖放表面,在其上设置属性并完成它,那么我同意。如果一直保持对渲染输出的微调控制(主要是出于可访问性问题,但也是为了更容易与 CSS 设计人员交互),那么过渡非常平滑。这不是 Web 表单技术本身,而是人们使用它的方式。
  • @David - 你认为哪种情况最有可能?
  • 转向 MVC 是因为它对 MVC 模式、可测试性、路由、json 响应、轻量级 HTML 等有很好的支持。

标签: asp.net asp.net-mvc


【解决方案1】:

简短的回答是:可以

长的答案会更详细一点,因为有些地方真的很棘手。

我们在我工作的公司开始了一个非常相似的项目。我要告诉你的只是我们的做法,具体取决于我们当时的特定背景和知识。也许有一些更好的方法。

我们不能只做一个“大爆炸”项目(扔掉旧的,把新的网站放在适当的位置),因为网站太大而且流量真的很高。因此,我们查找了可行的解决方案。迁移仍然存在,但您必须牢记以下几点:

路由

.NET 框架

  • 我们的旧 ASP.NET 网站是围绕 3.5 框架构建的。我们不能只更新框架 4 的所有内容。我们仍然有一些库在 1.0、1.1、2.0 和 3.5 中使用。您必须更新的当然是您在 IIS 上运行的应用程序的 ApplicationPool。如果您想在同一个 Web 应用程序中运行 MVC,旧版本是 .NET 2.0,新版本应该是 .NET 4.0。我们有机会在我们的页面中没有代码。后面的所有代码都在库(.NET 2.0)中,因此影响较小(允许使用新的 4.0 框架编译代码)。我们所做的就是在 .NET 4.0 中运行 .aspx 和 .ascx 页面,在 web.config 中加入这一行:<compilation targetFramework="4.0">。 .NET 4.0 应用程序会将 .NET 2.0 库直接加载到 .NET 4.0 运行时环境中。除非您明确要求,否则它不会使用并行执行。任何由应用程序直接加载的库(通过直接引用或 Assembly.Load)将继续直接加载到加载它的应用程序的运行时和 AppDomain。这意味着,如果重新编译应用程序以针对 .NET Framework 4 运行时运行,并且仍然具有针对 .NET 2.0 构建的依赖程序集,那么这些依赖程序也将加载到 .NET 4 运行时。更多信息在这里:https://stackoverflow.com/a/6216650/261950

视图引擎

  • 如果您将所有 MVC 文件夹(视图、控制器等)放在网站根目录中,则不会出现问题。如果将它放在新的子目录中(例如:~/NewWebSite/Controllers、~/NewWebSite/Views 等),则必须重新定义视图引擎,因为视图的默认搜索路径已更改,并且 mvc 运行时不会无法加载。

我不记得我们是否遇到了其他问题,但我描述的三个是我现在能记住的主要问题。

希望对你有帮助,

托马斯

【讨论】:

  • 谢谢@Thomas。在接受您的回答之前,我将等待更多回复。
  • 不用担心 ;) 如果您想要更高的精度,请不要犹豫。
猜你喜欢
  • 1970-01-01
  • 2019-12-11
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多