0

C# で記述された Windows サービスがあります。最近、CassiniDevを追加して、リモート Web 管理とサービスの監視を可能にしました。ホストされた ASP.NET ページから Windows サービスのデータ レイヤーを操作できないことを除いて、統合は非常にうまくいきました。

関心のあるすべてのものを共通のアセンブリに入れようとしましたが、デバッガーは、同じ名前でパスが異なる 2 つのアセンブリが読み込まれていることを示しています。Cassini は一時フォルダーから ASP.NET を実行するため、使用しているアセンブリは実際には同じプロセスのアドレス空間にある "別のインスタンス" です。

ここで何が起こっているのかわかりません。おそらく、現時点では理解できない「アプリケーションドメイン」の分離に関するものです。

では、Windows サービスと Web サーバーが同じプロセスで実行されている場合、それらを相互に作用させるにはどうすればよいでしょうか? ASP.NET 部分で報告したいサービス部分にステータスがあるとします。これを実現する方法はありますか?共有メモリまたは TCP が頭に浮かびますが、純粋なプロセス内通信にはやり過ぎのように思えます。

4

1 に答える 1

1

セキュリティが差し迫った問題ではない場合、つまり、データの機密性が高くなく、制御された環境にある場合は、Named Pipesを使用して成功する可能性があります。パイピングを処理するためのマネージ API がフレームワークの一部として実装されているため、ネイティブ コールで考える必要はありません。

于 2013-02-05T16:20:25.053 に答える