English 中文(简体)
A non-locking in-process ASP. NET:国家储存
原标题:A non-locking in-process ASP.NET session state store

I m使用ASP。 互联网在加工过程中储存。 它只剩下会议时间,这意味着同时向同一届会议提出请求。

我想删除这一暗含的排锁,因此每届会议可以同时处理多重要求。 当然,在适用的情况下,我与本届会议同步。

MSDN 会议文件:,以撰写我国的会议文件;

我可能最终会利用伙伴关系执行会议。 如Vivek在,但现在我只想去掉锁。

任何想法或样本执行?

最佳回答

不是你回想的答案,但我认为,即使有可能,以这种方式改变会议国的工作方式是一个可怕的想法。

想一想穷人的gu,他们必须维持你的准则。 届会以这种方式将要求编成册,这意味着伙伴关系。 互联网开发商往往不需要对read子安全过于担心。

而且,如果有人增加使用会议的第三方部分,则会期望有关锁的通常保障——你突然开始接受海森布道。

相反,衡量业绩并确定需要同时处理的具体领域——我看不到几个方面——并认真执行你自己的锁定机制,只针对所涉具体项目——可能是你重新规划最终使用伙伴关系的解决办法。 NET cache。

问题回答

如果您仅从本届会议上读到某一页,你可以使用<代码>。 页: 1

<%@ Page EnableSessionState="ReadOnly" %>

指出只读性质,删除排他性书写锁,以便同一届会议同时向该网页提出请求。

由于在内部使用一个阅读器锁,将堵塞一个作家锁,但一个阅读器锁却赢得一个插块阅读器。 笔记栏将堵塞所有读者和作家的锁。

如果你需要从同一页读写到本届会议,我认为你已经发现的信息已经足够了。 仅仅用Cache来替代会议的话:虽然会议是可靠的,但切勿说,如果你把一些东西带入海滩,你就不能保证收回。 伙伴关系。 互联网可以决定在像低记忆压力这样的一些情况下切除海滩,因此,在接触之前,总是需要检查在海滩上是否存在一个项目。

但是,为了消除这一僵局,《刑法》似乎很复杂。

这是因为你认为,这只是一个简单的锁锁,而另一个是机会/或礼貌,而不是整个届会提供者概念中考虑的一个因素。 该守则对手头的任务来说足够简单,用你自己的力量取代现有的整个供应商,同时以不同于本意的方式锁定。

我建议大家更多地了解届会概念如何在网上发挥作用。 认为其设计方式涉及在请求中一度阅读全体会议,然后一度撰写经过修改的会议。

还指出,尽管你的假设情况并非如此,但守则可能取决于阅读单独的会议价值,以处理某些事项,并能够写出单独的价值和/或单独锁定,使你受到同样的考虑,从而造成数据库的锁定。

设计的方法与您的阅读/写作+锁定的意图形成对照,因为每个单独项目都装上/储存。

又注意到您可能正在更新本届会议检索的物体的数值,而不将其重新编号,但该届会议已经更新。 就我所知,如果你想要把读数与书写锁定在项目一级的话,供应商在会议某一时间重复写所有东西,那么,这并非直截了当。

最后,如果你从框架会议提供者模式中找到很高程度的抵制,如果你打算加以修改,那么你将无法利用其中的某些特征(转而向一个提供商,因为这些问题将产生同样的问题);那么,我认为,你只是为了你的特殊需求而离开,而且你自己也应当这样做。 这甚至没有使用 as子。 海滩,因为你想把它当作你的方法,你控制着一生和营地;锁定在那里储存的物品。

在我看来,你需要一个完全不同的机制,因此,我看不到试图将这一框架纳入其中的好处。 你们可能会重复一些非常具体的物品,如开课,id和厨师无能为力,但不是其一面。

你们必须写一下自己的会议国家提供商,这并非是困难的。 我不建议你使用Cache,因为Darin说,Cache不够可靠,例如,有些项目在没有足够记忆的情况下过期和(或)从海滩上删除。

在您的届会上,供应者可以锁在<>会议<>上,而不是整个届会。 在撰写本报告时,这一基本法典应载于<代码>。 ISessionStateItemCollection s implementation (in indexer), 类似情况:

public object this[string name]
{
    get
    {
        //no lock, just returning item (maybe immutable, it depends on how you use it)
    }
    set
    {
        //lock here
    }
}

就我们的项目而言,我们已经制定了执行方案,储存在AppFabric Cache的物品,并依靠GetAndLock、PutAnd Unlock式海滩方法。 如果你举行会期会议,你可能只需要<编码>锁(smthg){}。

希望这一帮助。

我建议,你考虑将你的会议移到SQL服务器。 页: 1 服务器会议允许多个网络服务器提出任何要求,以分享一次单一会议。 我知道,库克服务器在内部管理着极为高效的锁定机制。 你还获得了较低的内表足迹的额外奖金。 而你不需要写上一部HttpModule来管理。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签