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 クライアントの作成/破棄に伴うオーバーヘッドを最小限に抑えることです。それはかなりうまくいくようです。私が抱えている問題の 1 つは、かなりの数の要求がバックグラウンドでタスクから来ることです。これらには明らかにコンテキストがないため、return GetDataService() 行に落ちます。

私が考えているのは、WCF クライアントの静的インスタンスを作成し、それを返すことです。ただし、このアプローチについて私が懸念していることの 1 つは、多くのタスクが 1 つのインスタンスを介して多くのリクエストを行うことです。これがボトルネックになってしまうのでしょうか?もしそうなら、負荷を分散するために、たとえば 10 個の WCF クライアントのプールを作成することをお勧めしますか?

ありがとう、

ジョー

4

0 に答える 0