5

.Net Framework 4.0以降の新しいMemoryCacheクラスについて、あちこちで読んでいます。私が読んだことから、さまざまな.Netアプリケーション間でMemoryCacheにアクセスできます。Asp.Netアプリケーションと標準のWindowsフォーム.Netアプリケーションの間でオブジェクトを共有しようとしています。オブジェクトを.NetアプリケーションのMemoryCacheに追加すると、Asp.Netアプリケーションはそのオブジェクトを認識しません。これを達成する方法はありますか?どうぞよろしくお願いいたします。

Windowsフォームアプリ:

    Dim cache As ObjectCache = MemoryCache.Default
    Dim policy As New CacheItemPolicy()
    policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60)
    cache.Set("testcache", TestObj, policy)

Asp.Netアプリ:

    Dim cache As ObjectCache = MemoryCache.Default
    If IsNothing(cache("testcache")) Then Response.Write("TestCache Is Nothing")

ありがとう-ライアン

4

4 に答える 4

6

いいえ、それは不可能です。MemoryCache分散キャッシングソリューションではありません。したがって、ローカルでのみ利用可能になります。

分散キャッシュの代替手段を探している場合は、AppFabricまたはRedisを調べることをお勧めします。

ただし、そのようにキャッシュを共有したいというのは、奇妙なアーキテクチャのように聞こえます。おそらく、asp.netとwinformsの両方が消費する共有サービスレイヤーを公開し、サービスだけにキャッシュを実装させると、より論理的に見えるでしょう(私は実際にあなたが解決しようとしている問題について何も知らないので、私は間違い)。

キャッシングは、アプリケーション間でデータを共有する方法としてではなく、パフォーマンス上の理由からより一般的に使用されます。

于 2013-03-09T19:58:34.687 に答える
1

MySQLメモリテーブルはうまく機能しており、優れたパフォーマンスを発揮します。20/30は、1秒で約1%のCPU負荷しか挿入しません。

于 2013-03-22T19:13:17.347 に答える
1

このアドバイスはタイムリーではないことを私は理解していますが、この質問を読んでいる他の人にとって、別の可能性は2つのプログラム間のプロセス間通信(IPC)です。このようにして、2つのプログラムは、中間を経由せずにメッセージ/データを直接交換できます。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v=vs.85).aspx

上記のドキュメントから、ここにいくつかのオプションがあります。

クリップボードCOMデータコピーDDEファイルマッピングメールスロットパイプRPCWindowsソケット

あなたの場合、マップされたメモリファイルは、アプリケーション間で共有メモリスペースを可能にするため、最良のアプローチかもしれません。基本的に、MySql/Redisのアプローチはおそらくそれほど違いはありません。

于 2016-05-03T19:17:16.340 に答える
0

興味がある場合: 単一サーバー複数アプリケーション-メモリ共有 同じノードでWeb APIを作成して使用し(単純なキー値API)、.netフレームワークによって提供される単純なメモリキャッシュを使用することを検討する必要があります

複数のサーバー-メモリ共有無料の$$ソリューション

  1. 分散SQLServerキャッシュ」を使用すると、分散キャッシュでSQLServerデータベースをバッキングストアとして使用できます。SQLServerインスタンスにSQLServerキャッシュアイテムテーブルを作成するには、sql-cacheツールを使用できます。ツールは、指定した名前とスキーマでテーブルを作成します。

  2. ノードのクラスターがある場合は、 NCacheを使用できます。これは、.NETおよび.NETCoreでネイティブに開発されたオープンソースのメモリ内分散キャッシュです。NCacheはローカルで機能し、Azureまたは他のホスティングプラットフォームで実行されているASP.NETCoreアプリの分散キャッシュクラスターとして構成されます。

お金を払う必要のあるソリューション: 前述の NCache 、ProfessionalおよびEnterpriseソリューション、またはRedis Cache -Redisはオープンソースのインメモリデータストアであり、分散キャッシュとしてよく使用されます。AzureでホストされているASP.NETCoreアプリ用にAzureRedisCacheを構成し、ローカル開発にAzureRedisCacheを使用できます。

于 2021-06-27T11:48:39.570 に答える