ハイブリッドVB6 / .Netアプリケーションは、実世界でどのように機能していますか?


11

私はVB6アプリケーションを保守しており、.Netへの移行方法を検討しています。COMに表示される.Netクラスに新しい機能を実装し、既存の機能をゆっくり移行することにより、これを徐々に行うことを検討しています。これを行う方法について、いくつかの有益な「Hello World」の例を見つけました。これはアプリで正常に機能します。しかし、これらのハイブリッドアプリケーションの実際の動作はどうですか?それらは安定していて、保守可能ですか?私たちのプログラムの特徴は、同じコンピューター上のより多くのユーザーがユーザーアカウントを切り替えることでそれを使用することです。

編集:VB6アプリは、USB接続からデータを読み取り、Accessデータベースに保存します。ユーザーは、データのさまざまなビューを呼び出すことができます。データはハードウェアデバイスにキャッシュされるため、データの読み取り中の中断は致命的ではありません。

編集2015年10月4日:フォローアップの時間:既存のVB6コードを段階的に.Netに置き換えるプロセスが進行中です。最初にデータアクセスルーチンを使用し、次にビジネスロジックを使用し、現在は次々とフォームをWPFに変換します。実際、変換したすべてのコードを(VB.Netで)書き直しましたが、ゆっくりと同時に機能を改善できました。ハイブリッドアプリケーションは、Windows 8、8.1、および10への移行を生き延びました。

2018年3月9日編集:完全に変換されたコードを来月リリースします。ハイブリッドアプリケーションは、少なくとも1年間はサポートされます。主に高解像度の画面で問題を示していますが、それ以外は正常に動作しています。正直に言うと、VB6コードベースとの互換性の問題よりも、.Net Frameworkのインストールの破損や依存関係(SQL Server LocalDbなど)の破損によるサポートの頭痛の種が増えています...


1
「レガシー」アプリケーションは何をしますか?質問への回答には、さらに詳細な情報が役立ちます。
ダークナイト

「PCI接続」以外に「USB接続」はありません。USBバスに接続されているデバイスがある可能性が高く、デバイスタイプが重要なポイントです。
Bob77

回答:


5

COMインターフェイス経由で.NETをVB6に公開することに成功しました。これにより、最初に大量のVB6コードをリファクタリングし、.NETへのアップグレードパスを設定することができました。慣用的なVB6はC#やVB.NETにもうまく変換できないことに注意してください。

かなり面倒だった問題の1つは、パブリックCOMインターフェイスの変更のために行う必要のある過剰な再構築でした。これはVisual Makeによって軽減されました。


ありがとうございました。Visual Makeが解決する問題について詳しく説明してください。わかりません。
-Dabblernl

@Dabblernl-Visual Makeを使用すると、VB6プロジェクトのコレクションであるプロジェクトを作成し、適切な順序でそれらをビルドできます。
ChaosPandion

6

FWIW、私の経験では、VB6アプリを.Netにアップグレードする必要があるため、書き直しの理想的な言い訳になります。元のコーダーが素晴らしい先見の明を持っていなかった場合、VB6で普及していた技術が.Netにきれいに移植されることはめったにありません。

あなたが遭遇する喜びのいくつか:

  1. 本当に必要ないMicrosoft.VisualBasicへの参照ができてしまいます。
  2. たとえば、VB6のsubstring(a、b、c)がa.SubString(b、c)として静かにレンダリングされ、VB6の1ベースであるために顔が爆破されるなど、発見しにくいバグになります。 .Netの0ベース。
  3. これらのコーディングが容易な暗黙の変換はすべて、通常、リスト区切り文字および/または「。」として「、」を持たない最初のPCで、木工品から出てきます。小数点区切りとして。
  4. 変換されたクラスには、再設計がもたらす望ましいデータ隠蔽がありません。

HTH


1
あなたはいくつかの非常に良い点を持ち出します。これらは、悪い習慣をリファクタリングするためにコードを最初にパスする必要がある理由の一部です。理想的には、必ずOption Explicit有効にして、魔法の暗黙的な変換への依存をすべて削除します。
ChaosPandion

私を元気づけてくれてありがとう;-)しかし、現時点では、私が知りたいことではありません。本当の変換の悪夢はまだ来ています。
ダブラルン

1
@chaosそう。実際、私は明示的に開始し、エラーが残っていないがある場合、私はハイライト多くの、多くの問題を有効に、厳密にそれをジャッキアップ
smirkingman

1
火炎放射器でVB6コードを追ったチームのことを聞いたことがあります。これがVB6コードでこれほど多く発生する理由は、多くのVB "開発者"が開始時にプログラミングの経験がなかったためだと思います。これにより、この世代の専門家が対処するための無数の不十分に設計されコード化されたアプリケーションが作成されました。
イット

1

それはあなたのためにうまくいくはずです、あなたに問題を引き起こすはずの速いユーザー切り替え/複数のセッションについては特に何もありません。

保守性の観点から、ハイブリッドVB6 / VB.NETは一時的なソリューションに過ぎないことに注意してください。VB.NETへの長期的な移行を計画する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.