ASP.NETエキスパートのための簡単な質問。それはPage_Loadの外でアクティブなクラスをインスタンス化するのは正しいですか?
...私たちは私たちのサイトのために使用します(そこではありませんバグ)素敵なCMSのフレームワークを構築しています...現時点で
会社では私たちのために議論の余地の瞬間です。これは次のようになりますこの:
変更があるまで(System.Web.HttpRuntime.Cache
を使用してチャンネルのクラスをインスタンス化した瞬間に、それはXMLファイルの束をロードし、チャンネルのクラス内に保持され
List<MyCms.Content.Channels.Channel>
に変換して、キャッシュされた
MyCms.Content.Channels channels = new MyCms.Content.Channels();
XMLファイルを保持するフォルダに)
、あなたが見ることができるようpublic partial class Default : System.Web.UI.Page
{
public MyCms.Content.Channels channels;
public MyCms.Content.Images images;
public MyCms.Content.Channels.Channel CurrentChannel;
public List<MyCms.Content.Channels.Channel> latestItems;
public MyCms.Content.GameVotes votes;
public MyCms.Content.GameVotes.Vote vote;
protected void Page_Load(object sender, EventArgs e)
{
channels = new MyCms.Content.Channels();
images = new MyCms.Content.Images();
..
}
:
チャンネルクラスは
我々は通常、私たちのASP.NETページ(背後にあるコード)でこのようにそれを使用する...基本的にはWebページの階層構造でありますパブリック変数 'channels'はPage_Load()でインスタンス化されます。現在、ファイルシステムまたはキャッシュからXMLファイルをロードしています。
私たちの同僚は、時にはこのクラスをPage_Load()の外部でインスタンス化する - publicのすぐ隣にこのような「チャンネル」変数のaration:
public partial class Default : System.Web.UI.Page
{
public MyCms.Content.Channels channels = new MyCms.Content.Channels();
protected void Page_Load(object sender, EventArgs e)
{
...彼は様々なユーザーコントロールで同じことを...
今事がある..私はそれをインスタンス化しても大丈夫ですかどうかについて、あなたの意見を必要としますこのような非常にアクティブなクラス - Page_Load()イベントの外...? 私たちの同僚によって構築されたサイトは、時々IIS全体をぶら下げていました。私はこれが一つの理由かもしれないと思っています。 - あなたはどう思いますか? :)
同じCMS Frameworkが他のサイトで使用されていて、問題のない別のサーバーで使用されています...良い作業サイトとハングアップしているサイトの唯一の違いは、これです。 Page_Load()の範囲外の 'channels'クラスのインスタンス化...