有人知道C#(单声道)Linuxnetworking服务器托pipeconfiguration,使跨线程(即不是每个线程的实例的CGI模型)一致的静态variables?
细节
我有一些C#(单声道)代码,我们需要作为一个简单的Web应用程序的一部分在Linux上托pipe。 我们不需要任何传统的asp甚至asp.net mvc特性,我们只需要能够根据共享的静态variables来dynamic地响应特定的url。
静态variables:我们所要做的一个特殊要求是,我们需要静态variables来保留所有传入请求的值(与使用ASP.net mvc应用程序的窗口相同)。 像Apache mod_mono这样的主持单一c#web应用程序的常见方式似乎是使用“每个线程的c#应用程序实例”模型,其中会有多个独立的c#应用程序实例,每个实例都有自己的静态variables。 这是我们需要避免的问题。 我需要一种托pipeac#应用程序的方式,它提供了一个共同的应用程序,其中包含所有传入请求将看到的一组共享的静态variables。 如果应用程序回收静态variables重置(就像在正常的IIS / MVC),只要回收很less,这是好的。
背景是,这个networking应用程序需要在RAM中保存大量的数据在一个静态variables,并迅速回答有关该数据的问题。 有一个应用程序的副本为每个线程打开会限制RAM资源太多,经常重新加载到内存的数据会使应用程序太慢(偶尔像IIS / Asp.net MVC回收已经很好)。 该系统在Windows / IIS7(每秒超过5万个dynamic请求)上工作得非常好,我们不希望改变这个架构,所以我正在寻找的答案与不改变应用程序devise的托pipe有关。
mod_mono不会为每个新的Web请求产生新的单声道进程。 如果您使用fastcgi服务器以及apache或nginx,也不会。
编辑:静态变量在同一个应用程序域内共享。 这适用于Microsoft .NET IIS和mono(不管您是使用mod_mono,xsp还是mono-fastcgi-server)。 即使如此,apache衍生出多个工作者线程,并且单个工作者线程处理单个请求,但是在任何给定时间只有一个单一进程正在运行(除非您已经配置了多个asp.net应用程序,那么每个应用程序就有一个) 。
单声道也试图实现ASP.NET的100%兼容性,所以设计没有不同的行为!
你的程序在linux上的不同行为很可能与mod_mono处理请求的方式无关,而与单声道本身或你的代码中的错误有关(即,通过在linux上做出一个平台假设)。 你应该真的使用MonoDevelop / xsp进行调试,并且试图更清楚地查明问题,或者在这里粘贴一些示例代码。