1

現在xmlとしてファイルシステムに書き込んでいるデータのブロブを生成するDelphiアプリケーションがあります。このデータは、さらに処理するために C# .Net アプリケーションによって読み込まれます。

問題は、オブジェクト グラフが大きく、結果の xml ファイルのサイズが 2 GB 以上になることです。xml ファイルの書き込みと読み取りには、比較的長い時間がかかります。

ファイル システムに書き込む代わりに、データを RAM に転送する方法を教えてください。

両方のアプリケーションのソース コードとコンパイラがあります。1 つのアプリケーションに .Net バージョン 4.0 と VS2010 を使用しています。もう 1 つは Delphi 5 を使用しています (新しいバージョンにアクセスできますが、移行が役立つかどうかはわかりません)。

更新:すべての提案をありがとう、処理するのは大変です。さらに検討した後、投稿します。

4

5 に答える 5

6

その他の提案:

メモリマップトファイル

名前付きパイプ

ソケット

RPC

ActiveX

私の個人的な推奨事項は、Delphi側でIndyを使用し、.NET側でSystem.Net.Socketsを使用するソケットです。

于 2012-10-04T21:07:46.330 に答える
3

両方を 1 つのプロセスに統合できます。プロセス間通信が不要なため、速度が向上します。

これを行うには、次の 3 つの方法があります。

  • C# プロセスで Delphi コードを DLL としてロードする(PInvoke を使用)
  • 逆 PInvokeを使用して、C# コードを Delphi プロセスにマネージ アセンブリとしてロードします。
  • RemObjects のHydraを使用して上記のいずれかを実行し、詳細を処理します

Delphi XE2 以降を使用してこれを行うと、単一の 64 ビット プロセスですべてを実行でき、2 GB 以上のメモリをより簡単に割り当てることができます。

于 2012-10-04T17:05:12.717 に答える
2

ディスクに書き込むときに XML ストリームを圧縮 (gzip など) し、反対側で解凍することで、これを大幅に高速化できる場合があります。サイズが 10 分の 1 に縮小され、したがって I/O が減少しても驚かないでください。確かに、CPU の作業と I/O を交換していますが、CPU にとっては比較的簡単な作業です。

于 2012-10-04T21:36:48.203 に答える
1

SOAP メッセージとして送信できます。

于 2012-10-04T21:32:24.893 に答える
0

最良の方法は、30 fps で c# から Delphi に画像を転送するために今それを使用することです。


1- ac# COM LIBRARY の作成 (GUI 要素の公開)
で 2- ac# COM LIBRARY を regasm -register -tlb dllname.dll で登録
3- Delphi で作成されたタイプ ライブラリをロードし、C# 関数を使用してデータを取得

于 2013-08-21T17:47:29.180 に答える