.NET 4.5、64 ビット Win8
WCF で実行され、Windows Activation Service でホストされている 2 つの MSMQ があります。
- MSMQ の実行: アンマネージ関数を呼び出し、他の制限されたサイズの変数に加えて、4GB 配列へのポインター IntPtr を取得します。この配列はそれほど重要ではなく、DB に渡されるまでキューをブロックしてはならず、このキューを解放することが優先事項です。MSMQ の保存 (仮説) へのポインターを渡します。
- MSMQ の保存: アレイをネットワーク経由で DB に保存してから、アンマネージ メモリから割り当てを解除する必要があります。
ここでの問題は次のようになります。
- ポイズン メッセージやその他のキュー エラーで配列の割り当てが解除されていることを確認します。このケースは簡単です。
- 私が思い出したように、古き良き時代から、ポインター値は相対的である (オフセットという言葉が頭に浮かんだか、プロセスと AppDomains を混ぜているのかもしれません) ことは不可能かもしれませんが、IntPtr クロス アプリ ドメインをアプリ ドメインに渡します。セキュリティ上の理由で.NETがこれを許可しない可能性がありますか? これは可能ですか、それとも私は夢を見ているのですか、これはクロスドメインの問題ですか、それとも私の問題には別のタイトルがありますか?
注意: 以前に NetPipes 通信を使用したことがありますが、これには途中にキューがあるため、NetPipes は適切なソリューションではありません。