2017-09-27 24 views
1

私はAsp.net FW 4.6を使用しています。同じAppPool内のアプリケーション間で共有変数?

私は、同じアプリケーションプールの下で、変更するオブジェクトである既定値を(定型的に)読み込む必要がある2つのアプリケーションを持っています。

スタティック変数は使用できません。同じアプリケーションプール内であっても、別のアプリケーションは共有できません。共有されません。

DB /ファイル/サーバーは、既知のオプションです。

しかし:

質問:

同じアプリケーションプールの下にある複数のアプリケーションを通じてアクセスすることができます私はMEM値に格納することができます書くことができます任意のコードがありますか?等

何か:例えばMemory Mapped FilesNamed Pipesなどのプロセス間通信の

MyAppPool 

    App1 -> func("royi") = 1 
    App2 -> var a= func2("royi"); //1 

答えて

0

すべての方法は、また、単一のアプリケーションプール内のアプリケーション間でデータを共有するために使用することができ、例えばSharing memory between two applicationsを参照されたいです。

同じアプリケーションプール内のすべてのアプリが同じプロセス内に存在し、ただのAppDomain境界線で区切られているので、あなたには、いくつかの追加オプションがあります。

  • 使用 MarshalByRefObject のAppDomainの境界を越えてオブジェクトのインスタンスにアクセスするために。 Stephen Clearyさん CrossDomainSingleton またはthis one例えば、 クロスのAppDomainのシングルトンを実装するためのMarshalByRefObjectを使用しています すでに利用可能なラッパーがあります。
  • Marshal.AllocHGlobalによって割り当てられたメモリにポインタを使用してunsafeコードを直接使用すると、特に速度が問題となる場合は特に役に立ちます。しかし、アプリケーション間で割り当てられたメモリのメモリアドレスを共有するには、前述の方法の1つを使用する必要があります。
関連する問題