4

私が使用しているアプリは、2003年頃にほぼ完全にVisual C ++で記述されたWinFormsアプリです。UI構築フレームワークのため、現場に到着する前に.NETが選択されましたが、コードの大部分は管理されていない土地で開発されました。 。その一部は絶対に必要でした。非常に大きなデータセットに対してリアルタイムの画像処理を行い、画像バッファへのポインタを必要とするIntel画像処理ライブラリを使用します。実際、パフォーマンス1%未満の場合です。それは重要です。

アプリ自体は、UIコードをいくつかの静的ライブラリにリンクすることによって形成された大きな実行可能ファイルでした。各静的ライブラリは、データ取得や画像処理などの機能サブシステムに対応しています。参加してから、他のアプリで再利用するマネージラッパーを作成して、これらのサブシステムのいくつかをDLLに分割しましたが、メインアプリは静的にリンクされたライブラリで実質的に構成されています。

私の同僚と私は、さらなる開発が管理されていないことを強調すべきか、管理されていることを強調すべきかについて大きく異なります。私が言及した場合を除いて、アンマネージコードを指示するパフォーマンス要件はありません。私たちは.NETにしっかりと取り組んでいるので、クロスプラットフォームは問題ではありません。私は、別段の指示がない限り、管理を優先すべきだと考えています。

先月、私の同僚はサブシステムを管理する一連のクラスを開発しました。それらをrefクラスとして実装し、いくつかのイベントを.NETインターフェースに追加するのではなく、gcrootを使用して管理対象クライアントへのハンドルを保持し、管理対象外の土地にとどまることができるように、Observerの実装をいくつか作成しました。これは私には間違っているように思えます。なぜあなたが無料で手に入れることができる何かを書くのですか?しかし、私はあまりにも硬直しているのではないかと思います。

何かご意見は?

4

2 に答える 2

0

あなたがマネージド型に傾倒し、同僚がアンマネージド型に傾倒していることは間違いなく間違っているということを除いて、正解または不正解の答えは 1 つではありません。どちらを選択する場合でも、一部のコードを管理し、一部のコードを管理しないという問題を悪化させないように、双方が合意する必要があります。

あなたは「私たちは .NET にしっかりと取り組んでいます」とおっしゃいました。ここでの「私たち」とは誰ですか?それはあなたの会社ですか、それともあなたとあなたの同僚ですか? あなたの同僚は .NET にあまり熱心ではないようです。会社が熱心で、同僚が熱心でない場合、誰かがあなたの同僚に、自分はチームの一員であり、会社の指示に従う必要があることを繰り返し伝える必要があります。

決定が本当にあなた 2 人次第であり、同僚が動揺しない場合は、黙認することを検討する必要があります。

大規模なマネージド/アンマネージド アプリもあり、絶対に必要でない限り、アンマネージドで何かを行うことは考えません。アプリの大部分は管理されています。その方がはるかに良いです。しかし、それは私の意見であり、事実ではありません。

于 2012-08-09T04:13:18.967 に答える
0

マネージド プログラミングとアンマネージド プログラミングの禅:

優れたアンマネージ コードは、同等のマネージ コードと比較して、メモリ管理のバグに目立った欠点がないことによって実証されます。

優れたマネージ コードは、同等のアンマネージ コードと比較して、パフォーマンスに目立った欠点がないことによって実証されます。

それらの2つの間の相互運用性について良いことは何もありません;)

于 2014-02-14T20:07:20.177 に答える