2013-11-21 3 views
1

Какой из них наиболее эффективен? Предполагая, что все они выводят одну и ту же строку.Какой из них наиболее эффективен? ascx vs ashx vs aspx

Действительно ли загружается .LoadControlWebClient?

b = new StringBuilder(); 

// ascx 
new UserControl().LoadControl("/_includes/test1.ascx").RenderControl(new HtmlTextWriter(new StringWriter(b)));  
Console.Write(b.ToString()); 

// ashx 
b = new StringBuilder(new WebClient().DownloadString(site.Url + "/_includes/test2.ashx")); 
Console.Write(b.ToString()); 

// aspx 
b = new StringBuilder(new WebClient().DownloadString(site.Url + "/_includes/test3.aspx")); 
Console.Write(b.ToString()); 
+0

Чтобы найти ответ, запустите профайлер и посмотрите, какой из них выполняется быстрее всего. Но соображения дизайна почти наверняка превзойдут любые незначительные различия в скорости. –

+1

Это вопрос, на который вы планируете отвечать, так как вы предоставили все необходимое, чтобы проверить его самостоятельно? –

ответ

2

Порядок эффективности (наиболее наименее, учитывая ваш сценарий):

управления пользователя, Handler (ASHX), веб-страницы (ASPX).

UserControl будет обрабатываться по тому же запросу в IIS. В двух других сценариях требуется 2 запроса, один для начальной страницы и один для вторичного обработчика или веб-страницы.

Загрузка внешних данных в случае с обработчиком и веб-страницей будет иметь небольшие различия, но обработчик будет легче, чем веб-страница, чтобы выиграть в этом случае.

И наконец, я не уверен, в чем цель использования StringBuilder служит в последних двух случаях.

Нижняя линия, вы, вероятно, должны проверить эти различные методы. Мой «ответ» основан на некоторых широких предположениях. Ваша метка может очень.

+0

Это именно то, что я искал. Благодаря! – iambriansreed

+0

«UserControl будет обрабатываться одним и тем же запросом в IIS и не требует отдельного запроса». - Это довольно важно правильно? – iambriansreed

+1

Я бы так подумал ... Я бы пошел с UC. Если вы можете загрузить его в разметке, еще лучше. – andleer