2010-05-11 97 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工作。