0

私は と対話するプロジェクトに取り組んでおりSQL Server、ほとんどのバックエンド コードはC++.

これは、キャリアにロードしながら、いくつかの流体の流れを制御するアプリケーションです。流体の流れを制御するコントローラと通信するバックエンド モジュールのいくつかはC++. これらにはメモリ リークやその他のバグがあるため、 への移行が試みられています.Net

私が理解しているのは、バックエンドモジュール.Netに使用するとパフォーマンスが低下するということです。したがって、私の意見は、これらのバックエンド モジュールを .Net に変換するのではなく、C++ 自体の問題を修正することでした。

説明中のコードは、コントローラーのファームウェアとやり取りするアプリケーションです。基本的に、いくつかのコマンドを受け取り、コントローラーから応答を取得します。このコードには UI がなく、同じコードが対話しSQLてデータを更新します。どちらも 1 つのexeの一部です。

.Netパフォーマンスが厳密であることが期待されない場合、良いと信じられています。新しいコードを作成する必要がある場合、特に UI の設計が必要な場合に適していました。もう 1 つの考え方は、.Net は多層アーキテクチャの上位層には適していますが、下位層には適していないというものです。

違う視点からの他の方のご意見を知りたいです。考慮すべき側面のいくつかは次のとおりです。

  • 速度
  • コードの保守性
  • 将来の移行関連のリスク

既存のコードを書き換える角度からコメントしてください。それを行うことにした場合、C# への 1 対 1 の C++ 行変換になります。

4

5 に答える 5

2

素早い回答:

デバッガーを使用し、アプリケーションドメインとコントローラーの使用方法を理解できる、有能なC ++プログラマーがいる場合は、慎重に確認してメモリのバグや問題を修正する方が簡単でしょう。結局のところ、時間と労力はすでにコードに費やされており、それが些細なコードでない限り、C#で書き直すと新しい論理エラーが発生する可能性があります。

OPへの質問:

議論されているコードは、コントローラーのファームウェアと相互作用するドライバーコードです。それは基本的にいくつかのコマンドを取り、コントローラーからの応答を取得します。このコードにはUIがなく、同じドライバーコードがSQLと相互作用してデータを更新します

「ドライバー」と名付けたユーザーモードソフトウェアについて話しているのですか、それともカーネルモードデバイスドライバーについて話しているのですか?

流体の流れを制御するファームウェアを実行しているこれらのコントローラーに関する詳細情報を提供できれば、役に立ちます。C ++バックエンドはRS232(シリアル)を介してコントローラーに接続しますか?イーサネット?USB?TCP / IP?PCI?

TCP / IPまたはRS232(シリアル)を介してコントローラーハードウェアに接続している場合、C#/。NETはタスクを処理するための十分な機能を備えています。USB、PCI、イーサネットなどの他のものについては、ドライバーの要件に応じてCまたはC++でプログラムする必要があるデバイスドライバーが必要になります。もちろん、C ++のユーザーモード部分をカプセル化することも、Win32への直接呼び出しをカプセル化することもできますが、プロジェクトに開発タスクが追加されます。

于 2009-05-12T04:59:56.873 に答える
1

どうやら、既存のC++コードの唯一の問題はメモリリークです。

それは私にはそれをすべてC#で書き直すには不十分な理由のようです。

代わりに、メモリリーク検出ソフトウェアを実行してリークを見つけることをお勧めします。

于 2009-05-12T04:54:35.260 に答える
0

いくつかのバグがあるため、プログラム全体を別の言語で書き直さないでください。新しい製品には別のバグがあるだけで、Q&A サイクルをやり直す必要があります。C++ プログラムのバグを修正します。問題がメモリ管理である場合は、終了時にメモリを自動的に削除するstd::auto_ptrまたはを強く検討します。std::tr1::shared_ptrそれができない場合は、何かを valgrind で実行したり、市販のメモリ チェッカーにお金を払ったりする方が、すべてを書き直すよりも (時間とお金の両方で) 安くなると確信しています。

于 2009-05-12T05:17:19.047 に答える
0

「言語はそれ自体が特別なのです」男 本当の意味でハグが必要です。コードがうまく書かれていないという理由で言語を変更しないでください...より良いコードを書き、利用可能なリソースを使用してください。

于 2009-05-15T13:50:19.830 に答える
0

すべての言語は独自の方法で特別なので、シナリオに最適な言語を見つける必要があります

于 2009-05-12T04:33:24.110 に答える