文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>.net 常识 CallContext

.net 常识 CallContext

时间:2011-04-01  来源:听说读写

关于HttpContext.Current可能挺多人都有疑问的

他究竟是怎么实现的呢

为什么每个不同的请求去访问一个静态成员Current 能得到不同的结果呢?

很明显的这个静态对象和当前调用的Context有关

其内部实现类似于 CallContext.SetData() 和CallContext.GetData()

通过SetData保存的数据 是和当前方法的调用堆栈有关的,例如你在方法A中间SetData

然后方法A中Call了方法B  那么B中可以用GetData()获得数据,反过来也是ok的

只要在这个方法堆栈上 都可以互相使用这些Data

例如以下代码

 public static WcfTransaction Transaction
{
get
{
return CallContext.LogicalGetData("WcfTransaction") as WcfTransaction;
}
set
{
CallContext.LogicalSetData(
"WcfTransaction", value);
}
}

PS:LogicalGetData 和 GetData的差别主要是 LogicalGetData能适应更多的情况

例如在跨AppDomian的时候 在外面SetData 在另外一个AppDomain里面GetData就获取不到值了 ,而LogicalGetData 还能继续使用,

此外如果让上文中的WcfTrancation 继承特定接口 也可以自动传播到更多的地方..不过生命周期就不好控制了

 CallContext是和调用堆栈相关的

,下篇介绍和线程相关的数据....虽然大部分时候这两个有很大重叠..

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载