3

多くのDALを持ついくつかのプロジェクトがあります。C#クラスに反映される顧客、販売、プロバイダーなどの多くのSharePointリスト。各オブジェクトに、抽象マザークラスを介してIDisposableを実装させます。たとえば、オブジェクトをインスタンス化してリストから顧客を取得するたびに、呼び出し元のコードはcustomer.Dispose()を呼び出して、オブジェクトのインスタンス化に使用されたspwebとspsiteを破棄する必要があります。

 public Customer(int spListItemID):base(LIST_URL)
    {
        try
        {
            spli = Liste.GetItemById(spListItemID);
        }
        catch(ArgumentException)
        {
            spli = null;
        }
    }

コンストラクターの基本クラスには、インスタンス化されたspsiteおよびspwebグローバル変数があり、dispose関数もあります。

私は疑問に思っていました:SharePointアプリケーション全体に同じspwebとspsiteを使用するのはどうですか?私たちのすべてのプロジェクトは、シングルトンパターンに従ってそれらのspsiteとspwebをインスタンス化できるプロジェクトを知っています。そして、このspsiteとspwebを「永久に」使用します。両方を閉じることはなく、すべてのオブジェクトに同じものを使用するため、オブジェクトをインスタンス化するたびに開閉プロセスを節約できます。

それはクレイジーなアイデアだと思いますか、それは影響を与えるでしょう?同じspwebを非常に長い間使用することを意味します。つまり、サーバーがオンになっている時間です...それはそんなに悪い考えですか?インスタンス化ごとに1日あたり何千回もspwebを閉じる代わりに?spwebの存続期間は限られていますか?(これは、多くの開発が行われている大きなSharePointアプリケーションです)

4

1 に答える 1

3

最大のリスクは、SPWebが廃止される可能性があることです。マルチユーザー環境では、最初のラウンドトリップでフェッチされたSPWebプロパティ(たとえば、Webタイトル)は別のユーザーが変更できますが、新たにインスタンス化していないため、古い値を引き続き使用できます。適切に廃棄する限り、SPWebおよびSPSiteの複数のインスタンスを作成できます。

于 2011-06-14T11:48:45.930 に答える