【问题标题】:Cleaning up a complex WebForms project清理复杂的 WebForms 项目
【发布时间】:2010-11-22 03:57:03
【问题描述】:

我目前正在开发一个高流量的在线搜索网站。

随着时间的推移,他们想要实施各种更改,并且他们表示最终他们希望在 ASP.NET MVC 中重新完成网站。

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

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

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

我担心的是它是一个相当复杂的网站,我不确定在 ASP.NET MVC 中完全重建网站是否是个好主意。

尽管结构很糟糕,但添加所请求的新功能并不难。 (也许是因为我过去曾处理过复杂的代码)。

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

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

另外,您对将重新构建作为 20% 时间的副项目有何想法?这样做有什么缺点吗?

【问题讨论】:

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


    【解决方案1】:

    哇,这是一个项目。

    我个人认为,就 UI 而言,任何用 ASP.Net 编写的网站都需要完全重新设计。 MVC 的做法完全不同。

    另一方面,您的业务逻辑应该没问题,尽管我认为只要您有分离的关注点并且它不绑定到 UI。

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

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

    打好基础,如果可能的话,甚至可能已经使用 MVC 框架。同样,只有当你可以并且只有在可行的情况下。

    我认为将其作为一个副项目来做是可行的,因为您可以获取一些库并开始转换它们,为 mvc 转换做准备。

    但请注意,一旦您转换了您(确实)实施它的项目/层,它就有被遗忘的风险,或者对其他层进行更改,然后需要将其编码到新的等中。您知道陷阱。

    至于 UI,这将是一个重要的部分,尤其是在您使用大量 asp 控件的情况下。您可能需要花费大量时间评估 UI 并列出需要替换或编写的控件列表。然后你就可以开始看到一个模式并获得一些一致性。

    如果您的代码中有很多代码,您可能希望开始将其移至另一层,因为这将在您稍后创建控制器等时有所帮助。然后他们可以实例化您的新层,一切都应该很好。

    这就是我能想到的全部。我会根据我的想法进行编辑或评论。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

      仅当旧项目中的更改和新功能的速度小于新项目中完成的进度时,将其作为辅助项目才是好的,您不希望最终做重复的工作,并且在某些情况下点你将不得不冻结旧的代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 2012-01-07
        • 2020-06-28
        相关资源
        最近更新 更多