停止使用VB6?

3
我正在开发一个VB6遗留应用程序。我已经开始使用VB.NET编写所有新代码,实际上创建了我所谓的互操作层。我可以采用两种方法:
1.使用这个互操作层在VB.NET中编写所有新代码,并使用分阶段升级的方法。
2.继续编写VB6代码,然后在以后的某个时候将其全部转换(使用大爆炸方法)。我目前没有时间将整个应用程序转换。
我的问题是,哪种方法更好?
更新: 我支持第一种方法的原因是有一个ASP.NET应用程序。以前的开发人员会在两个应用程序中有效地复制代码,即VB6和ASP.NET。因此,ASP.NET应用程序中的一些代码可以与VB6共享,反之亦然。这就是为什么我认为选项1更好,但我找不到任何文献证明开发人员实际上这样做。

@Mark Hall,ASP.NET(如问题所述) - w0051977
4
这不是那种“与编程无关”的问题吗? - Bob77
3个回答

2
在以前的项目中,我参与了同样类型的项目。原始应用程序使用Access作为框架编写。然后出现了VB6,它似乎很好地工作,并且允许添加更多功能而无需修改原始Access编写的大部分内容。
接着是.Net...
虽然我不喜欢开发阶段转向.Net并被强制使用互操作性层,但这是必要的。
话虽如此,我会尽可能主观地回答问题:
如果您知道应用程序将完全转换为.Net,则尽量使用.Net进行新开发。除了互操作性的感知(和真相)-例如更多的开销、性能等,我想不出其他推迟的理由。
侧边栏 - 至少在Access上,您没有互操作性问题...当它崩溃时,它会使所有内容都崩溃。这是我第一次体验Interop(与Access一起),并且并不美观。
等待.Net开发的优点:
1.更短的可交付时间(无互操作性层)
2.更稳定的应用程序(无互操作性层)
等待.Net开发的缺点:
1.长时间(可能无利可图)的发布周期,因为整个应用程序都需要重新编写
2.引入许多新错误
3.学习写单元测试,当这是您最后考虑的事情时
现在开始进行.Net开发将增加您长期成功的机会。我不认为Interop层会给您带来像我一样的头痛 - 任何性能下降应该是很小的。
我不知道您是否参与了此项目的开发团队,但如果是,请确保每个人都支持转向.Net。我看到一些VB6开发人员面对VB.Net而惊恐失措。他们的本性是继续以他们习惯的相同风格编写代码。

感谢这个 +1。我是该应用程序的唯一开发人员。我来自.NET背景,比VB6更有经验(我不喜欢VB6)。性能和开销是我的主要关注点。如果只有一个对互操作层的调用,那么我想开销会很低。 - w0051977
你说:“如果你知道这个应用程序将完全转换为 .Net”。那么答案肯定是肯定的,也就是所有的应用程序都必须被转换。 - w0051977
@w0051977:我认为所有应用程序都必须转换。这取决于应用程序的相关性。;) 这可以理解为“如果已经做出了决定…” - IAbstract
如果被逼到绝境...是的。但这就是为什么我提出了每个选择的优缺点,而不管我的个人经验...只是简单的事实。 - IAbstract
1
我们目前正在使用RegFree Com的方法1,它运行得非常好。不过代码库仍然有95%是VB6,随着迁移的进展,我们不知道会发生什么。 - Dabblernl
显示剩余2条评论

0

个人而言,我会选择您的第一个选项(因为您已经实现了互操作性层),这样当您进行重写时,它将使过程更少痛苦,如果您正确设计类结构。第二个选项是我更喜欢的方式,但由于时间限制,使用第一个选项。最终,VB6运行时不会成为新版本Windows的一部分,请参见此SO question。我自己有一个需要转换的VB6应用程序。


1
谢谢。我不明白你所说的“你有时间限制”的意思。 - w0051977
@w0051977,你说你没有时间去做,对我来说这是一个时间限制。 - Mark Hall
我明白了。你是在开发应用程序还是只是支持它? - w0051977
@w0051977 目前这个应用程序处于维护模式。我们有使用 .Net 编写的当前应用程序,但没有 VB6 应用程序的所有功能。因此...我将不得不咬紧牙关,可能在今年重新做一遍。 - Mark Hall

0

专注于为用户提供他们想要的东西。 如果在vb6中更容易实现这一点,那就使用它。 在需要转换为vb.net时再考虑转换为vb.net。 将vb6转换为.net的工具现在已经相当不错, 并且正在不断发展,因此可以预期会进一步改进。


迁移哪些工具?微软在2010年撤回了他们的工具。据我所知,Code Architects和Artinsoft仍在开发他们的工具。 - MarkJ
@MarkJ 我指的就是他。Artinsoft和vbmigration合作伙伴生产竞争产品,我会说两者都在改进,当然他们声称如此。VBmigration合作伙伴现在也针对C#进行目标设置,就像Artinsoft已经做了一段时间一样。否则,人们可以使用迁移向导将vb2008作为转换的目标,并完成大部分工作。 - jjb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接