如何在不同的应用程序之间共享单个静态类代码

时间:2013-10-25 04:10:12

标签: c# singleton distributed-system

简单来说,我想编写一个加密/解密类,它将由同一服务器上的不同Web应用程序使用。此外,这个类的所有方法都是静态的。

我将创建的dll放在GAC中。但是,似乎每个应用程序都在内存中创建自己的加密对象。

为了性能和内存使用,有没有办法只有一个这个类的实例?

由于

2 个答案:

答案 0 :(得分:1)

您是否真的确认过这是一个问题?那将是非常令人惊讶的。

但严格地说,不能跨应用程序共享实例(或静态类) - 你甚至不能在同一个应用程序中的AppDomain之间共享一个实例(你结束)使用代理对象)。为了实现您的目标,您必须使用某种客户端 - 服务器架构,这几乎肯定会带来比加密系统本身更多的开销。

答案 1 :(得分:1)

,您无法跨进程创建单例。

相反您可以创建自己的进程(例如,* NIX世界中的Windows服务或守护程序),然后其他人使用。对于进程间通信(RPC),有各种方法,例如:命名管道,套接字(以及使用它们的更高应用程序协议),读取和写入文件......

然而,请问为什么你认为每个进程的一个类会消耗这么多内存?至于性能这个事实是有更多的进程,假设它们在被调用之前一直处于空闲状态,那么在有多个进程中应该没有区别 - 实际上它应该更快,否则你将不得不考虑并发性。