私はネイティブC++で書かれたWindowsアプリケーションにSNMPエージェントを統合しようとしています。Windowsとメインアプリケーションから呼び出されるDLL間の通信方法は?
このエージェントをWindows SNMPエージェントのサブエージェントにするには、Windows SNMPサービスによって呼び出される特定のルーチンをエクスポートするDLLを作成する必要があります。これまでのところは正常に動作しています。
このDLLはアプリケーションから実際の情報を取得する必要があります。私の最初のアイデアは、アプリケーションとDLLが両方の側からアクセスする共有メモリブロックを使用するようにすることでしたが、情報が常にslighly staleになり、SNMP要求が入ったときに最新の値をフェッチする方が良いでしょう。側面は情報を読み書きします。
アプリケーションにはすでにTCPベースのコンソールインターフェイスがありますが、SNMPクライアントからの非常に頻繁な要求に対しては、接続、照会、切断は少し重いかもしれません。
DLLがアプリケーションと直接通信できるようにする私のオプションは何ですか?
私はオプションを収集しようとしています。名前付きパイプと共有メモリだけが軽量オプションですか? –
@Gene:はい。 DLLがメモリにロードされたままで、データチャンクが大きくなく、COMでの経験がある場合、アプリケーションをプロセス外のCOMサーバーにすることができます。 –