0

我们有一个企业客户,他有一个使用 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 等)

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

4

1 回答 1

3

简短的回答是:是的,你可以

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

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

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

路由

.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 运行时不会无法加载它。

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

我希望这有帮助,

托马斯

于 2012-04-20T15:00:54.783 回答