简单来说,我想编写一个加密/解密类,它将由同一服务器上的不同Web应用程序使用。此外,这个类的所有方法都是静态的。
我将创建的dll放在GAC中。但是,似乎每个应用程序都在内存中创建自己的加密对象。
为了性能和内存使用,有没有办法只有一个这个类的实例?
由于
答案 0 :(得分:1)
您是否真的确认过这是一个问题?那将是非常令人惊讶的。
但严格地说,不能跨应用程序共享实例(或静态类) - 你甚至不能在同一个应用程序中的AppDomain
之间共享一个实例(你结束)使用代理对象)。为了实现您的目标,您必须使用某种客户端 - 服务器架构,这几乎肯定会带来比加密系统本身更多的开销。
答案 1 :(得分:1)
否,您无法跨进程创建单例。
相反您可以创建自己的进程(例如,* NIX世界中的Windows服务或守护程序),然后其他人使用。对于进程间通信(RPC),有各种方法,例如:命名管道,套接字(以及使用它们的更高应用程序协议),读取和写入文件......
然而,请问为什么你认为每个进程的一个类会消耗这么多内存?至于性能这个事实是有更多的进程,假设它们在被调用之前一直处于空闲状态,那么在有多个进程中应该没有区别 - 实际上它应该更快,否则你将不得不考虑并发性。