我应该通过VS08中的升级向导运行经典的VB6应用程序,还是应该从头开始重新设计它。
数据库很乱。
最初在ACCESS中设计并导入到MS SQL SERVER。
主要实体是例如ROLLER_SKATES和RENTALS。如果你想租一双旱冰鞋,你可以。所以这或多或少包括轮滑鞋的库存系统。
现在你有2个不同的滑冰环。 Skate-B1和Skate-Z9,你也可以保留滑冰环表中前面提到的实体的冗余和重复数据。
这是一场噩梦。
至少表中有行ID。但是没有明确的外键,只是隐含的列相同地命名为“似乎”彼此对应。但表的其余属性都默认为NULL。
考虑到C.J Date在他的书SQL和关系模型中所说的关于类型的内容,是否需要在属性上使用CHECK CONSTRAINTS?
并且,数据到处都是,例如,Roller skate序列号是G123,然后在另一个例子中它是G-123。得到漂移?
我该怎么办?
答案 0 :(得分:1)
如果应用程序与您的原始帖子类似,我会建议重做并重新设计。
你有骨架,知道应用背后的想法是什么。
当我们回顾我们设计的应用时,很少发现它是完美的。只有多年来你没有像程序员那样进步才会发生这种情况......
答案 1 :(得分:1)
没有花太多时间阅读你的问题,我会跳出两条线:
数据库很乱。
这是一场噩梦。
所以,我认为我们都同意重写是最理想的课程。
但是,这必须与您的特定要求相平衡。迁移的速度有多快?在重写之前,当前应用是否不可用?如果是这样,这可能是一个非常有说服力的论据,支持使用升级向导。即使考虑到它的缺陷和缺点,它也会比从头开始重写更容易。
如果您决定采用此路线并使用升级向导,则会出现第三个“平衡”选项,我高度推荐。一旦升级项目并使用升级向导(以及友好的邻居Stack Overflow作为资源)进行编译,您就可以分发并开始使用应用程序的新.NET版本。然后,慢慢地,您可以开始重新设计并重新实现现在.NET版本的应用程序的部分内容。只要您保留相同的公共接口,并且只重新设计应用程序代码库的一小部分,就可以缓慢地推出这些更改,实际上是分阶段重写整个应用程序。您可能需要几个月的时间来获得正确的低级数据库访问代码,但与此同时,您的应用程序仍然有效。然后,一旦您使代码正常工作,您就可以继续将其推出到应用程序的下一个增量版本,同时在幕后处理UI代码。
答案 2 :(得分:1)
重新设计和重新分解是很好的,但有时你只需要意识到你正在维护的糟糕的小项目就是这样,并且永远不会更好。你必须从顾客的角度思考问题。对他们而言,这只是他们用来完成工作的设备之一。如果它正在运作,他们可能看不出有任何理由花钱,特别是如果它是某种升级,他们看不到或真正理解。
我在当天从VB6升级了几个这样的项目。也许转换器现在更好,但我没有很多运气。我发现的效果非常好,就是制作看起来像旧形式的新形式。然后将旧表单中的代码复制并粘贴到新表单中,并处理错误。它很快。我通常也会设法改进一些小的改进,主要是用户界面,客户会发现他们正在为他们的钱买点东西。
至于后端,我使用过一些没有外键约束的大型数据库以及你所谈到的所有其他问题。它不是理想的可维护性,但它工作正常,并不像这是一种看起来很多维护的项目。您确实需要确保找到一种方法来为每个项目强制执行唯一的单一名称,无论您做什么。我见过其他应用程序犯了同样的错误,导致了各种各样的问题。
如果通过一些奇迹,你能够说服他们预算一些钱,我会从头开始。只记得事情总是比你想象的更大,花费的时间更长。并且不要忘记你也必须编写某种数据导入器。
答案 3 :(得分:0)
项目越复杂,LESS可能你只想升级并继续保持原样。
.Net提供了比VB6更多的功能,当然,它基本上运行vb6代码,如果你实际上没有使用USE .net及其功能,那么升级到.net是没有意义的。 / p>
如果应用程序像你说的那样混乱,转换为.net是重新设计以消除旧的低效率和逻辑愚蠢的好时机,并利用你在.net中允许的新内容。即使它不是一个TOTAL重新设计,至少考虑.net的应用程序将改善它。
除非应用程序的大小/复杂程度微不足道,否则重做它。如果应用程序不大或完全重复...重做它:)