私が使用しているアプリは、2003年頃にほぼ完全にVisual C ++で記述されたWinFormsアプリです。UI構築フレームワークのため、現場に到着する前に.NETが選択されましたが、コードの大部分は管理されていない土地で開発されました。 。その一部は絶対に必要でした。非常に大きなデータセットに対してリアルタイムの画像処理を行い、画像バッファへのポインタを必要とするIntel画像処理ライブラリを使用します。実際、パフォーマンスが1%未満の場合です。それは重要です。
アプリ自体は、UIコードをいくつかの静的ライブラリにリンクすることによって形成された大きな実行可能ファイルでした。各静的ライブラリは、データ取得や画像処理などの機能サブシステムに対応しています。参加してから、他のアプリで再利用するマネージラッパーを作成して、これらのサブシステムのいくつかをDLLに分割しましたが、メインアプリは静的にリンクされたライブラリで実質的に構成されています。
私の同僚と私は、さらなる開発が管理されていないことを強調すべきか、管理されていることを強調すべきかについて大きく異なります。私が言及した場合を除いて、アンマネージコードを指示するパフォーマンス要件はありません。私たちは.NETにしっかりと取り組んでいるので、クロスプラットフォームは問題ではありません。私は、別段の指示がない限り、管理を優先すべきだと考えています。
先月、私の同僚はサブシステムを管理する一連のクラスを開発しました。それらをrefクラスとして実装し、いくつかのイベントを.NETインターフェースに追加するのではなく、gcrootを使用して管理対象クライアントへのハンドルを保持し、管理対象外の土地にとどまることができるように、Observerの実装をいくつか作成しました。これは私には間違っているように思えます。なぜあなたが無料で手に入れることができる何かを書くのですか?しかし、私はあまりにも硬直しているのではないかと思います。
何かご意見は?