C# 将会话和响应对象传递给类-开销?
我想知道是否有人能帮助我理解我所做的是不是有很多开销。它目前正在工作,但我不确定这是否会减慢网站的速度。 我有一个workflowobj类,我在其中设置了所有会话变量。该类在需要它的页面上实例化: WorkFlowObj wfo=新的WorkFlowObj(this.Session,this.Response); wfo.VendorRedirect() 我需要这个,因为我需要能够跟踪会话变量,同时能够在一个地方跟踪更复杂的页面工作流。这个解决方案已经对我起作用了,但唯一的问题是,我不确定传递会话和响应对象是否会产生大量开销。有谁能告诉我这是不是非常低效??下面是workflowobj类的代码C# 将会话和响应对象传递给类-开销?,c#,asp.net,session,response,overhead,C#,Asp.net,Session,Response,Overhead,我想知道是否有人能帮助我理解我所做的是不是有很多开销。它目前正在工作,但我不确定这是否会减慢网站的速度。 我有一个workflowobj类,我在其中设置了所有会话变量。该类在需要它的页面上实例化: WorkFlowObj wfo=新的WorkFlowObj(this.Session,this.Response); wfo.VendorRedirect() 我需要这个,因为我需要能够跟踪会话变量,同时能够在一个地方跟踪更复杂的页面工作流。这个解决方案已经对我起作用了,但唯一的问题是,我不确定传递会
public class WorkFlowObj
{
private System.Web.SessionState.HttpSessionState _pagesession;
private HttpResponse _HttpResponse;
private int _userid;
private string _vendorname;
///private other vars here
}
public int UserID
{
get
{
return _userid;
}
}
public WorkFlowObj(System.Web.SessionState.HttpSessionState pagesession, HttpResponse _response)
{
_pagesession = pagesession;
_HttpResponse = _response;
Initialize();
}
private void Initialize()
{
//initialize variables from session
_userid=_pagesession["userid"].ToString();
}
public void VendorRedirect()
{
switch (this._vendorname)
{
case "1":
this._HttpResponse.Redirect(page1);
break;
case "2":
this._HttpResponse.Redirect(page2);
break;
//etc
default:
//dostuff;
break;
}
}
}
我不会在您的工作流对象中创建对
System.Web
的依赖关系,只需传递工作流对象做出决策和执行业务逻辑所需的变量即可。没有头顶上的物体,它们只是引擎盖下的指针
我看到的一个问题是,在另一个层中意外使用了与
页面
状态相关的静态,因此不允许GC清理ie:经典内存不足异常或应用程序池回收。正如Rick所说,如果可以避免的话,我不会在中间层对象中创建对System.Web
的依赖关系
但是如果无法避免,可以使用staticSystem.Web.HttpContext
类避免传递会话对象。这使您可以执行以下操作:
userid = (String)System.Web.HttpContext.Current.Session["userid"];
只要它与来自浏览器的请求在同一线程上执行(因此在同一上下文中)