首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# (mono) Linux服务器托管线程间一致的静态变量

C# (mono) Linux服务器托管线程间一致的静态变量
EN

Stack Overflow用户
提问于 2012-11-20 19:08:19
回答 1查看 2.4K关注 0票数 4

有没有人知道C# (mono服务器)的主机配置能够在线程之间实现一致的静态变量(即不是每个线程的实例的CGI模型)?

详细信息

我有一些c# (mono)代码,作为一个简单的web应用程序的一部分,我们需要在linux上托管这些代码。我们不需要任何传统的asp甚至是asp.net mvc功能,真正需要的是基于共享静态变量的动态内容响应特定urls的能力。

静态变量:--我们有一个特殊的需求--我们需要静态变量来在所有传入请求中保留它们的值(就像在windows上使用ASP.net mvc应用程序那样)。托管单一c# web应用程序的常见方法,如Apache mod_mono,似乎使用了“每个线程的c#应用程序实例”模型,其中将有多个独立的c#应用程序实例,每个实例都有自己的静态变量。这是我们需要避免的问题。我需要一种托管c#应用程序的方法,该应用程序提供一个共享的静态变量集,所有传入请求都会看到这些变量。如果应用程序回收静态变量被重置(就像在正常的IIS/MVC中一样),只要回收周期很少,就可以了。

背景是,这个web应用程序需要在一个静态变量中保存大量的RAM数据,并快速回答有关该数据的问题。为每个线程打开应用程序的副本将限制RAM资源,并且频繁地将数据重新加载到内存中会使应用程序太慢(偶尔会有IIS/ASP.NETMVC这样的回收利用。这个系统在Windows/IIS7 7(每秒50,000+动态请求)上运行得非常好,我们不想改变这个体系结构,所以我要寻找的答案是托管而不是更改应用程序设计。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 15:14:45

mod_mono不会为每个新的web请求生成一个新的单进程。如果您与apache或nginx一起使用快速you服务器,也不会这样做。

编辑:静态变量在同一个应用程序域中共享。对于Microsoft .NET IIS和mono (无论您使用的是mod_mono、xsp还是mono快速xsp服务器),都是如此。尽管如此,apache生成多个工作线程,单个请求由单个工作线程处理,但在任何给定时间只有一个单进程运行(除非您已经配置了多个asp.net应用程序,那么每个应用程序只有一个)。

Mono试图实现ASP.NET 100%的兼容性,所以没有设计上的不同行为!

您的程序在linux上的不同行为很可能与mod_mono处理请求的方式无关,而是与mono本身或代码中的一个bug有关(即,通过做出一个在linux上不成立的平台假设)。您应该使用MonoDe信封/xsp进行真正的调试,并尝试更清楚地指出问题,或者在这里粘贴一些示例代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13480328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档