从一个ASP.NET代码库运行多个站点并转移到ASP.NET MVC

时间:2009-08-08 01:57:59

标签: asp.net asp.net-mvc architecture

我有一个相当大的工作项目,我继承了。它是一个ASP.NET 2005网站项目和两个用于数据访问和一些业务逻辑的C#库项目。该代码实际运行6个不同的数据库驱动的网站它根据检查URL的逻辑显示每个站点的不同图像和文本,并使用一系列Web.config值和switch语句。

我们现在有几个新网站将采用与这6个相同的模式和框架,因此管理层决定我们不应该重新发明轮子,我们应该继续扩展现有代码。虽然我从他们的角度理解了这个决定,但是考虑使用更多的Web.config值以及更多的switch语句扩展这些代码的想法都是错误的。似乎应该有一种更好的方法来管理这种特殊形式的复杂性,但我没有处理应该采用哪种更好的方式。

与此同时,我一直在寻找一个开始学习ASP.NET MVC的项目,我一直倾向于在我自己的时间用它重新开发这个项目,因为它很复杂,但要求是代码。我希望通过将它移动到MVC获得3件事:1)能够测试应用程序及其所有版本以及所有它甚至还不知道存在的黑暗角落,2)希望找到一种方法来制作在一个可管理的代码库上管理大约12个站点,3)学习MVC。

稍微漫游后,这里有一些具体的问题:

MVC实际上会为我提供更好的方法来管理1个代码库问题中的12个站点吗?如果没有对MVC更深入的了解,我有点难以分辨。

我是否可以应用(在WebForms或MVC中)适用于具有类似内容和结构并从相同代码库运行的类似网站的模板模式或框架?

有没有比检查网址更好的方法来决定正在查看哪个网站以及每个网站应显示哪些图片和文字?

感谢您的时间。我很感激!

2 个答案:

答案 0 :(得分:1)

ASP.Net MVC在这里可能会有一些真正的优势。你不会再手动检查URL了,因为MVC的路由功能会为你做 - 所以在某种程度上,它是一种“更好的方式”。以下是一些优点:

  1. 如果您正确构建路线,则URL路由是一种区分正在投放的网站的简单方法,并且您的“我的哪个网站”参数会自动传递给每个控制器(以及随后的每个视图)

  2. URL路由可以双向工作,因此为所有网站定义单个视图会相对简单,这些视图会生成适当的图像,并且脚本引用到您需要的任何网站目录。

  3. 部分视图是在角落情况下切换特定于网站的内容的好方法,其中每个网站的模板不完全相同。

  4. 只要每个站点的逻辑相似,ASP.Net MVC 1.0就可以解决这个问题。如果每个站点需要不同的控制器逻辑,即将发布的ASP.Net MVC具有“区域”的概念,这将允许您在同一个应用程序中实现不同的站点,这些站点都有自己的Controller,Model和View目录 - 但他们的路线有所不同。

答案 1 :(得分:1)

  

MVC实际上会为我提供更好的方法来管理1个代码库问题中的12个站点吗?

老实说:我不会走这条路。 ASP.NET足够强大,可以拥有多租户系统。有些东西有助于在ASP.NET MVC中构建多属性应用程序。您有IoC可以在应用程序之间更改业务规则,您可以选择动态选择要呈现的视图。 你有可测试性。

多数人都很棒:请在此处阅读 link so

但仍然:实施这样一个系统是一项艰巨的努力。 ASP.NET很棒(你现在有了路由!)如果你有一个正在运行的系统,那么最好花时间让它变得更好。