私はCで記述されたレガシーコードの大部分を維持しています。このコードは、Windows 3 for Workgroupsに対してコンパイルされるように最初に記述され、後にNT用のバージョンが作成されました。このレガシーアプリケーションは現在も使用されており、90年代前半の3.11およびNTワークステーション上で陽気に動作しています。それは機能し、それが行うことになっていることを実行し、それらがまだ生きている理由は、ソリューションに属するカスタムハードウェアの一部のドライバーが、後のWindowsと互換性がないためです。
同じ理由でWin2kでしか機能しない別のアプリケーションもあります。
しかし、物事が進むにつれて、これらのレガシー環境を実行することがますます難しくなっています。現在、開発ソフトウェアがインストールされた物理マシンを保持しているため、ネイティブハードウェアで作業できます。しかし、これらはいつでも死ぬかもしれません(結局25歳です)。
だから私の質問は、2016年を見て、この古風な環境をより安定した方法で維持するための私の選択肢は何ですか? 3.11をクラウドホスティングに移行できますか?
私は仮想化を試しましたが、セットアップの特殊な性質のため、デバイスドライバーで動作させることができなかったので、OSの完全なイメージをそのまま作成し、それをVMソフトウェアを開発するために?Win3やNTと同じくらい古いゲストOSのバージョンでこのようなことは可能ですか?
これらのような古いプラットフォームを開発のために存続させる経験はありますか?
私の目標は、古い物理マシンを取り除き、仮想化に移行することです。
これは、仮想化OSやゲストOSの場合よりも、virtualboxまたはvmwareがホストのシリアルポートにアクセスできるようにすることの方が問題だと思います。私は、多作のpl2303などの実際のrs-232実装に基づいたUSBからシリアルポートへのアダプターを備えた最新のOS(win 7/8/10またはLinuxディストリビューション)を実行するホストシステムから始めます。
ホストとして最新のOSを使用し、virtualboxをインストールして、ゲストを作成しますVMと互換性のあるOSをインストールします。ゲストOSのRS-232ポートがゲストVMに渡されます。 。ヌルモデムとターミナルプログラムを使用して、RS-232ポートがローカルホストOSで動作していることを確認します。
ホストがLinuxの場合、ローカルハードウェアを仮想化するために必要ないくつかの権限があり、ほとんどの場合、ログインアカウントをvboxusersグループに配置することで処理されます。
ソリューションに属する一部のカスタムハードウェアのドライバーは、それ以降のWindowsと互換性がない
これが問題の核心です。レガシーCプログラムを新しいVisual Studioで再コンパイルし、すべてのコンパイラの警告とエラーを修正し、通常、古いシステムをWindows 7(または必要な場合は後で)で実行される同一のシステムに変えることができますが、ドライバーが動作しない場合仮想化されていても機能する可能性はわずかです。
ドライバー/ハードウェアを更新または交換できない限り、私はそれを検討し始めません。
それは管理上の決定です。あなたの経営陣は、Windows 3.11をサポートすることで、彼らがどれだけのお金を稼いでいるかを判断できる立場にあるべきです。彼らが頭脳を持っているなら、彼らはあなたが彼らを無料でサポートしなければ文句を言う顧客は実際にはお金を稼がないことに気づくでしょう。古いバージョンをサポートするためのコストを教えて、サポートすることができます。実際の作業だけでなく、新しいテクノロジーを使用できないという点でも。
マシンをサポートする必要がある最新の時期は、eBayで交換品を購入できないときです。