如何从Web应用程序访问内存中的服务?

问题描述:

假设我需要设计一个内存中的服务,因为一个非常高负载的读/写系统。我想每2分钟转储一次对象的结果。我如何从Web应用程序访问内存中的对象/数据?如何从Web应用程序访问内存中的服务?

(我在想一个Windows服务会在后台处理内存中的服务等运行)

我想尽可能快的解决方案,我猜想大多数人会说使用Web服务?我还有什么其他选择?我只是不明白我怎么可以挂钩到Windows服务的对象等。

(请不要问我为什么要这样做,也许你是对的,这是一个坏主意,但我也很好奇如果这种类型的结构是可能的。)

更新

我一直在寻找这个网站swoopo.com,我会觉得有很多附近的拍卖结束命中,但由于拍卖不断复位到数据库的命中将会是疯狂的,所以我想如果他们在内存中做了,然后每分钟转储到db ...

任何远程技术都可以工作,例如套接字,管道等。

退房:www.remobjects.com

什么你所描述的被称为高速缓存,具有正面的前端。

您编写了一个门面,其中提交了更改并获取了您的数据集。正面排队读取和写入,并在队列已满或经过一段时间后提交。您的Web应用程序具有对数据(外观)的单一访问点,并且外观的结构可避免太频繁地从存储中读写数据。

大多数关系型数据库管理系统都为你做这件事。他们在内部进行这种优化和排队,因此在其上编写另一层只会减慢速度。所以如果你使用RDBMS,不要写缓存。

关于访问这样一个门面的细节,你可以把它当作一个对象,然后实现它,但是你想要它(它自己的线程,线程池,Web服务,Windows服务等等)。

您可以使用Remoting或WCF挂接到Windows Services对象,两者都提供非常快速的进程间通信。与WCF相比,套接字也很快,但程序更麻烦。在线有大量的WCF文档和支持。

数据库为您提供一定程度的缓存。内存黄金副本的优点,比如你提出的一个优点是,当请求进入时,它不必从磁盘读取数据,并且如果你将它放在与你的IIS相同的机器上(假定你有足够的RAM)没有额外的网络跳跃,使查询数据库的速度更快。但是,这种方法的缺点是,如果您需要添加机器以实现负载平衡,则不会扩展。

TIBCO等第三方信息提供商也值得关注。

您可以使用Windows消息队列或服务总线,甚至.NET远程处理。 见http://www.nservicebus.com/http://code.google.com/p/masstransit/