2009-08-24 40 views
2

我目前正在处理高流量的在线搜索网站。清理复杂的WebForms项目

他们有各种各样的改变,他们希望随着时间的推移,他们已经表明,最终他们希望网站在ASP.NET MVC中重新完成。

当前该网站是一个ASP.NET WebForms项目;但真正的ASP.NET控件很少使用。相反,有很多服务器端标签 - 即<%...%>。这些标记中的代码通常是对静态类或生成HTML的C#代码片段中的静态方法的调用。

许多静态方法通过将文本附加到字符串生成器并将其作为字符串返回来生成HTML。

我理解'Helper'方法的概念,但我不喜欢通过将它连接到字符串变量来呈现HTML的想法。我认为他们最好使用'Partials'。

关注我的事情是,它是一个非常复杂的网站,我不确定是否在ASP.NET MVC中完整重建网站是一个好主意。

尽管结构不好,添加新功能并不是很难。 (也许是因为我有过去使用困难代码的经验)。

但是我认为在将来的某个时候有一个需求会出现,除非我们彻底清理代码库,否则很难实现。

我想提出这个问题,看看有没有人遇到过类似的问题,以及如何处理它。

另外你对做20%时间副项目重建有何看法?这样做有什么缺点吗?

回答

1

哇,这是一些项目。

就我个人而言,我认为任何使用ASP.Net编写的网站都需要完全重新完成,就用户界面而言。 MVC做了很多不同的事情。

另一方面,您的业务逻辑应该没问题,尽管我认为只要您有问题的分离并且它不受用户界面的约束。

数据访问应该没问题,可能需要最少的触摸。但是,这又取决于你的网站的绑定程度。

我认为最好的方法是花一些时间研究MVC如何开展业务,并对转换所需的内容进行关键分析,然后开始转换UI之上的所有图层。

获得你的基础,甚至可能的话,甚至可以使用MVC框架。再说一次,只有你可以,只有在可行的情况下。

这样做是一个侧面项目将工作我认为,因为你可以采取一些你的库,并开始转换他们在准备mvc转换。

但请注意,一旦您转换了一个项目/图层,您就会执行该项目/图层,否则会冒着被遗忘或更改其他图层的风险,然后需要将其编码到新的图层中。你知道陷阱。

至于用户界面,这将是大的,尤其是如果你使用了很多的asp控件。您可能需要花费大量的时间来评估用户界面,并拿出您需要替换或编写的控件列表。然后你就可以开始看到一个模式并获得一致性。

如果你的代码背后有很多代码,你可能需要开始将它移动到另一层,因为这将有助于以后在创建控制器时等等。然后他们可以实例化你的新图层,并且所有应该都是好的。

这就是我能想到的从头到尾的一切。当我想到事情时,我会编辑或评论。

希望这会有所帮助。

0

如果我有这个项目,我被要求从头开始重做它,我不会使用MVC来呈现UI,我将使用Web API/OData来托管所有后端,并且将使用任何良好的前端来绘制UI,Angular将是一个非常好的选择。

仅当旧项目中的变更速度和新功能少于新项目中完成的进度时,将其作为副项目才是好事,但您不希望最终做出重复的努力,有些观点你必须编码冻结旧的。

另外,如果您必须更改数据存储选项,则必须考虑任何数据迁移。