2010-05-11 95 views
4

将VB6应用程序迁移到.NET平台几乎就像是重写,不管它是VB.NET还是C#。你认为与.NET平台相比,它在Java平台上需要做更多的努力,因为它无论如何都是重写的?请分享您的想法!VB6应用程序的迁移

+0

该团队拥有大量的Java开发人员,并且目前有一个在Java平台上实现的项目。但他们有一个传统的VB6应用程序,他们想要迁移到一些新的技术。它在宏中使用了一些VBA和Word模板,但他们希望摆脱PDF解决方案。 – WinFXGuy 2010-05-11 16:10:51

+0

可能的重复:http://stackoverflow.com/questions/395/how-do-you-migrate-a-large-app-from-vb6-to-vb-net – 2010-05-12 01:11:17

+1

不是真的!我的问题是关于将vb6应用程序迁移到Java的优点和缺点,而不是.NET。 – WinFXGuy 2010-05-12 20:57:39

回答

8

没有冒犯,但你错了。移植到.Net通常是远远比更容易重写。

下面是Microsoft UK官方建议:

执行一个完全重写,以.NET是更为昂贵和困难做好[不是转换] ...我们只推荐这种方法对于少数的情况。

blog post由微软的家伙谁在重写咨询:

许多公司我.NET初期曾与第一次看的强烈愿望,以改善部分重写驱动底层架构和代码结构的同时,他们转移到.NET。不幸的是,其中许多项目遇到了困难,有些项目从未完成。他们试图解决的问题太大了

我建议按以下顺序执行以下两个步骤。

  1. 写下移植或重写的原因。 它会带来什么好处?好处可能只是为了保持开发团队的快乐 - 这可能是一个足够好的理由,我不知道。确保你知道,并且你的经理/用户同意。
  2. 查看Microsoft UK advice,其中screencast解释了.Net迁移的5个基本选项。决定哪一个最好。它可能是重写,但你的眼睛打开它进入它。

在回答您的实际问题:在.Net或Java中完成重写会更容易吗? mainly depends on你的团队最了解哪一个。它也取决于应用程序是否与COM交互,就像SLaks所说的那样。

+0

您有一个非常漂亮的标志,哈哈哈:) – SoftwareGeek 2010-05-12 00:46:24

+0

@BhejaFry谢谢,把徽标一会儿回来,我很高兴它终于被赞赏! – MarkJ 2010-05-12 00:55:49

+0

感谢MarkJ。上面提到的链接中提到的完全重写的原因对我们的情况是完全有效的。但作为一名.NET顾问,我需要说服管理者,最好将它移植到.NET平台上,而不是Java平台上。他有一些内部的Java开发人员,所以他认为他可以省钱。我仍然需要查看现有的VB6代码,以评估此应用程序的COM依赖性。但是,你确实有很多优点,就像其他人所说的关于COM依赖关系一样。 – WinFXGuy 2010-05-12 20:50:13

0

如果应用程序使用COM,那么在.Net中重写它比在Java中重写要容易得多。否则,它可能会更容易移植到.Net。

有关更具体的答案,请提供有关您的应用程序的更多详细信息。

2

重写VB6应用程序的努力不仅仅是一个你正在瞄准哪种语言的问题。 VB应用程序通常依赖COM对象和某些特定于VB的库方法,这些方法在Java中可能没有等价物 - 但在.NET中可能具有一定的可移植性。

除非您愿意放弃项目的所有依赖关系,否则您可能会发现.NET更容易重写为,特别是如果您需要保留现有应用程序的某些行为来自库或其他依赖项。

另一个考虑因素是您的团队最熟悉哪个平台 - 如果您拥有大量的Java专业知识,但很少或没有.NET专业知识,那么Java也许是您的理想选择。

+0

关于COM依赖关系的好处,谢谢! – WinFXGuy 2010-05-12 20:53:20

+0

我认为COM本身的问题远远少于另一个框架中是否存在等价组件的问题。 COM只是组件技术,并且通常由VB6代码粘在一起的预打包代码的功能是一个更大的问题。停止将组件视为“依赖”。这有点像把汽车引擎称为“依赖”。 – Bob77 2010-05-13 00:51:43

+0

@Bob我认为这就是LBushkin的含义:Java中的方法/组件是否具有等价物,即它的功能。只是顺便说一句 - 你有没有用一种不同类型的发动机替换汽车发动机?说汽油 - >电或汽油 - >柴油?我怀疑当然可能但相当昂贵。 – MarkJ 2010-05-14 12:13:36

1

有一些工具可以从VB6迁移到VB.Net,包括内置到Visual Studio中的工具。 This tool将VB6迁移到C#。无论您使用哪种工具,您仍然需要对该工具输出的代码进行大量手动工作,但与完全重写java相比,这可能会少一些工作量。

根据您现有的应用程序的体系结构以及代码的结构如何,您可能会决定最好完全重新设计并重写它,在这种情况下,可能没有多少选择.Net和java 。

+1

该工具听起来很脆弱。据我所知,请查看拥有领先迁移工具的Artinsoft.com或VBMigration.com。他们都对移植的代码要求最少的手动工作,而且肯定远不及重写。哦,并且对重写要谨慎。 http://stackoverflow.com/questions/2812224/migration-of-a-vb6-application/2815414#2815414 – MarkJ 2010-05-12 00:46:25

+0

我已经使用Netcoole工具和Artinsoft。我同意Netcoole相当薄弱,但它非常便宜!你将不得不在输出上做大量的手动工作。除了这个工具之外,Artinsoft还提供了出色的迁移服务 - 更加昂贵,但您无需亲自做任何迁移工作。 Artinsoft还编写了Visual Studio中提供的升级向导,这是他们主要工具的减少版本。 – Polyfun 2010-05-12 08:15:14

+0

但是,如果应用程序使用了很多第三方COM对象,可能会更好地坚持使用.NET – WinFXGuy 2010-05-12 21:00:42

0

使用迁移工具,像ArtInSoft只是其迁移到.NET。

0

您可以使用内置VS迁移将VB 6应用程序迁移到VB.Net。试着看看是否可以帮助你。如果您正在考虑将VB 6迁移到C#,那么我还会推荐ScaleOvenStove用户推荐的内容。

1

不仅要减少迁移过程中的总体工作量,还要减少迁移后的维护成本。许多因素都会导致TCO,但所有事情都是平等的,我认为.NET工具,社区,框架和C#语言在开发人员生产力,运营管理和性能方面符合或优于Java - 假设您的目标是Windows OS。

我不认为轻松保持COM应该是决定性因素。事实上,我认为将VB6迁移到.NET,但保留COM,当你不需要首先完成VB6迁移的关键目标时:通过转向一个良好支持和可行的平台来降低开发成本和风险。我会告诉你为什么:

  • 大多数使用VB6中使用的流行的COM库和 控制有 多年没有发展;许多 较小的供应商已经消失 或者如果他们仍然支持他们的 商品,他们现在还提供改进的.NET版本和 改进的.NET版本。

  • 与旧COM生活迁移后 手段额外 复杂的调试方面的生活, 构建和部署。另外要注意,COM 组件并不真正“说”.NET (即它们不使用.NET类型和 约定),所以它们在.NET中的使用通常会导致 编码和设计的复杂性增加。

  • 还有几个 保持超时和例外情况 和.NET更换不是 总是最好的选择,但在一般情况下, 迁移团队将能够找到 至少一个。 NET替换选项 几乎适用于他们使用的每个COM组件。 花些时间深思熟虑 评估,选择并升级到一个 的那些选项将会在 迁移后得到回报。

  • 你不想交互任何东西 即你计划迁移的VB6。对自己的代码进行复用将导致更长的复杂转换,并且通常需要回溯和 对代码进行重新编译/重新测试已迁移的 代码。显然这并不是最有效且易于理解的升级 路径。

还有一点需要做“很多人工输出”。 Great Migrations产品是一种新的可编程迁移工具。它旨在帮助迁移团队逐步提高生成代码的质量,从而减少完成迁移项目所需的手动工作。这包括使翻译更加正确,处理复杂的多VBP迁移,并自动化重构VB6/COM代码以使用.NET组件。如果VB6代码库非常大,频繁更换以及在迁移过程中进行重新设计和清理,这些功能特别有用。这是一种我们称之为工具辅助重写的敏捷迁移方法。

声明:我为Great Migrations工作。