我目前有以下代码:
public static ICmsDataServiceWcf Data
{
get
{
if (HttpContext.Current != null && HttpContext.Current.Session != null && HttpContext.Current.Session["DataSevice"] == null)
{
HttpContext.Current.Session.Add("DataService", GetDataService());
}
if (HttpContext.Current != null && HttpContext.Current.Session != null && HttpContext.Current.Session["DataSevice"] != null)
{
return (ICmsDataServiceWcf)HttpContext.Current.Session["DataService"];
}
return GetDataService();
}
}
这样做的目的是最小化创建/销毁WCF客户端所涉及的开销。它看起来效果很好。我遇到的一个问题是,很多请求来自后台的任务。这些显然没有上下文,因此返回到返回GetDataService()行。
我正在考虑做的是创建WCF客户端的静态实例并返回它。关于这种方法我关注的一件事是,许多任务将通过单个实例提出大量请求。这最终会成为一个瓶颈吗?如果是这样,那么创建一个说10个WCF客户端的池来扩散负载可能是个更好的主意吗?
谢谢,
乔