如果决定我们的系统需要大修,那最好的办法是什么?

2024-10-01 17:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在维护一个基于传统ASP的web应用程序,它使用VBScript作为主要语言。我们一致认为,我们的后端(框架,如果你愿意)是过时的,并没有为我们提供适当的工具,以快速前进。我们几乎已经接受了当前无处不在的webMVC模式,并且不能用当前的技术以合理的方式做到这一点。主要缺失的特性是适当的调度和带有继承的模板化等。在

目前有两种途径正在讨论:

  1. 使用JScript将现有的应用程序移植到传统的ASP,这将使我们有希望从那里无需太多麻烦地转到.NET MSJscript,并最终在.NET平台上结束(MVC的工作最好在那时完成,ASP.NET在我们看来,这并不比我们现在做的更好)。这被认为是比下一个选择更安全、风险更小的路径,尽管这可能需要稍长的时间。在
  2. 使用其他一些技术完全重写应用程序,现在这个包的领导者是pythonwsgi,它有一个自定义框架、ORM和一个好的模板解决方案。即使是django和其他预先构建的解决方案,这里也有回旋余地。这种方法有望成为最快的解决方案,因为我们可能会在实际产品旁边运行beta测试版,但是如果我们不能/不能正确地使用它,它确实有可能浪费大量的时间。在

这并不意味着我们的逻辑消失了,因为我们这些年来建立的东西是相当稳定的,正如所指出的,只是很难处理。它构建在sqlserver2005上,大量使用存储过程,并发布在iis6上,只是为了多了解一些背景知识。在

现在,问题来了。有人走上面两条路中的一条吗?如果是这样的话,如果成功了,怎么会更好,等等。我们不希望偏离做这两件事中的一件,但一些建议或其他解决方案可能会有帮助。在


Tags: 工具框架模板web语言应用程序net时间
3条回答

不要扔掉你的代码!在

这是你能犯的最严重的错误(在一个大的代码库上)。见Things You Should Never Do, Part 1。在

您在旧代码中投入了大量精力,并解决了许多错误。扔掉它是一个典型的开发人员错误(我已经做过很多次了)。它会让你感觉“好多了”,就像春季大扫除。但你不需要买一套新公寓和所有新家具来装饰你的房子。你可以一次在一个房间里工作。。。也许有些东西需要重新油漆。因此,这就是重构的用武之地。在

{a2中的新功能}。当你重写这段新代码时,你将被迫模块化。有时间的话,也可以将旧代码的一部分重构为C,并在执行过程中解决错误。最终,你将用所有新代码替换你的应用程序。在

您也可以编写自己的编译器。很久以前,我们为我们的经典ASP应用编写了一个,允许我们输出PHP。它叫Wasabi,我想这就是杰夫·阿特伍德认为乔尔·斯波尔斯基发疯的原因。实际上,也许我们应该把它运过来,然后你就可以用它了。在

它允许我们在下一个版本中将整个代码库切换到.NET,而只重写了源代码的一小部分。它也让很多人说我们疯了,但是编写编译器并没有那么复杂,它给了我们很大的灵活性。在

另外,如果这是一个内部应用程序,就离开它。不要重写它-你是唯一的客户,如果你的需求是你需要运行它作为经典的asp,你可以满足这个要求。在

利用这个机会删除未使用的功能!一定要用新的语言。称之为2.0。重建你真正需要的80%的工作将大大减少。在

先把你的大脑从整个应用程序中清除干净。坐下来列出它的总体目标,然后根据使用的功能来决定需要哪些功能。然后根据这些特性重新设计它,并构建。在

(我喜欢删除代码。)

结果比你想象的要好。在

最近,我在一个可怕的旧C代码集合上做了一个大型的逆向工程工作。我一个接一个地将仍然相关的特性重新分配到类中,为类编写单元测试,并构建了一个看起来像替代应用程序的东西。它有一些原始的“逻辑流”通过类,而一些类的设计很差[主要是因为全局变量的子集太难区分了。]

它通过了类级别和整个应用程序级别的单元测试。遗留源代码主要用作一种“C语言中的规范”,以找出真正晦涩难懂的业务规则。在

去年,我写了一个项目计划来取代30年前的COBOL。客户倾向于Java。作为计划工作的一部分,我使用Django在Python中对修改后的数据模型进行了原型化。我可以在完成计划之前演示核心事务。在

注意:在Django中构建模型和管理接口比将项目作为一个整体进行规划要快。在

由于“我们需要使用Java”的思想,最终的项目将比完成Django演示更大、更昂贵。没有真正的价值来平衡这个成本。在

另外,我为需要成为web应用程序的VB桌面应用程序做了相同的基本“Django原型”。我用Django构建了模型,加载了遗留数据,并在几周内启动并运行。我使用这个工作原型来指定其余的转换工作。在

注意:我有一个正在工作的Django实现(仅限于模型和管理页面),用于计划其余工作。在

在Django中进行这种原型化的最好部分是,您可以在模型、单元测试和管理页面上进行修改,直到您将其正确地。一旦模型是正确的,你就可以把剩下的时间花在用户界面上,直到所有人都满意为止。在

相关问题 更多 >

    热门问题