0

我目前有以下代码:

    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 客户端组成的池来分散负载可能是一个更好的主意吗?

谢谢,

4

0 回答 0