7

一度に 1 つずつフォームを .NET に変換し、COM 相互運用機能を介して VB6 アプリから呼び出すことをお勧めします。

このようにして、プロセスの終わりまでに、VB6 アプリケーションの「シェル」を新しい .NET アプリケーションに変換するだけで、すべてのフォームを .NET で使用できるようになります。

より良い戦略はありますか?

4

5 に答える 5

3

私だったら、すぐにバンドエイドを剥がします。アプリケーションの中間状態 [.NET Forms と COM-interop] を使用しても、不要な複雑さが増すだけなので、何のメリットもありません。

于 2010-04-27T11:14:13.337 に答える
3

.NET に移植されている VB6 アプリケーションがあり、COM-Interop 戦略を使用しています。すべての新機能は .NET で実装できますが、VB のままなのは GUI のみです。同時に、独自に新しい GUI を開発できます。

これをまだ知らない場合は、 Registration-Free COM Interopを使用して、レジストリを使用せずに COM Interop を実行できます (これにより問題が発生したため) 。

于 2010-04-27T11:29:59.790 に答える
3

変換の戦略に関するアドバイスがたくさんあります。

于 2010-04-28T08:42:51.787 に答える
1

あなたが説明する断片的なアプローチでは、VB6 と .Net コードを共存させようとするため、余分な作業が発生します。これは、最も単純なアプリケーション以外では問題に満ちています。道のどこかで、ショーストッパーである可能性のある落とし穴につまずく可能性があります。

次のアプローチをお勧めします (600,000 行の VB6 アプリを .Net に正常に移行したことに基づいています)。

既存の VB6 コード ベースが適切にバージョン管理され、ラベル付けされていることを確認してください。できれば自動化された、VB6 コード ベースの回帰テストを記述します。既知の VB6 コード ラベル ベースラインを取得し、単一のエンティティとして .Net に移行します。顧客は引き続き VB6 バージョンを使用します。移行したコードで回帰テストを実行します。すべてのテストに合格したら、元の VB6 ベースラインを取得してから発生した VB6 の変更を .Net コードに適用します。UAT に配信してからライブにします。

于 2010-04-27T16:28:56.167 に答える
0

システムで一方、他方、または両方のデータ モデルを同時に使用して、一度に 1 つのテーブルで大規模で複雑なデータ変換を行いますか? 明らかに、これは問題と複雑さを求めています。大規模なデータ変換のベスト プラクティスは、可能な限り短い停止時間内にデータ モデル全体を目的の最終状態にする方法で変換することです。同じ理由が大規模なコード変換にも当てはまります。それらを少しずつ長期間にわたって行うと、人件費と技術的リスクの増加という点で問題が生じます。

IMO によると、より良いアプローチは、.NET コードの最終的な開発とアーキテクチャの標準を策定し、それらの標準に準拠し、従来のビジネス ルールと機能を正確に保持する方法でシステムを効率的に書き直すのに役立つプロセスに投資することです。行動。長い移行と複雑なハイブリッド/中間ソリューションは、せいぜい応急処置にすぎず、最悪の場合、ビジネス上の問題やプロジェクトの失敗を引き起こします。これらは避けるべきです。より良いアプローチでは、レガシー ソフトウェアを、内部的に一貫性があり、独立した、適切な形で新しいプラットフォームに提供できます。さらに、移行をより少ない、より大きな部分で提供することは、多くの小さな部分よりも効率的であり、混乱も少なくなります。

このアプローチを実行可能にするための鍵は、次世代の VB6/COM/ASP to .NET ツールを使用して、自動変換と手動作業のバランスを取る自動書き換えプロセスを繰り返し調整、カスタマイズ、および検証できるようにすることです。Great Migrationsのツールは、この方法論を可能にするように特別に設計されています。これを「ツール支援書き換え」と呼んでいます。このアプローチは、VB6/COM の 1.2M LOC のアプリケーション ポートフォリオを再設計された C#/.NET にアップグレードするなど、いくつかの大規模な移行プロジェクトで使用されています。

免責事項: 私は Great Migrations で働いています。

于 2010-05-02T17:09:07.350 に答える