ASP.NET «всегда компилируется». Нуб вопрос - PullRequest
2 голосов
/ 03 марта 2011

Я разговаривал с парнем, и он говорит, что ему нравится его сайт с asp, но не asp.net, потому что он «всегда компилируется».Я знаю, aspx скомпилирован и отделен от основного приложения в dll.Но что он подразумевает под «всегда компилировать»?Я думал, что он компилируется один раз при запуске, и все, что вы изменяете в aspx-файле, если вы вообще что-то изменяете.

Но в любом случае, как производительность сервера ASP.NET на стороне сервера по сравнению с другими, такими как php, python, ruby ​​и java?

Ответы [ 4 ]

3 голосов
/ 03 марта 2011

Вы правы, ASP.NET динамически компилирует веб-страницы ASPX и кэширует сгенерированные двоичные файлы , когда страница попадает после одного из следующих событий:

  • пул приложений IIS был переработан
  • изменение сделано в папке bin
  • изменение сделано в файле Web.config

Эта стадия динамической компиляции имеет свою цену с точки зрения отзывчивости страницы. Однако влияет только на первый запрос , поступающий на определенную страницу, в то время как он представляет огромную выгоду производительности для следующих запросов, поскольку они обслуживаются в кэше. скомпилированная версия страницы.

Потеря производительности, заплаченная запросом первой страницы, может быть уменьшена с помощью заблаговременного выполнения шага компиляции и кэширования ASP.NET . Этот метод известен как прекомпиляция веб-сайта и осуществляется с помощью инструмента командной строки, включенного в .NET Framework, который называется ASP.NET Compilation Tool (Aspnet_compiler.exe) .

Связанные ресурсы:

2 голосов
/ 03 марта 2011

Очень обычно ....

Файл «код позади» скомпилирован заранее, который обычно содержит большую часть «вашего» кода.

Сам aspx также скомпилирован, но обычно не заранее, что, вероятно, является причиной, по которой он говорит «всегда компилировать». Каждая страница компилируется по мере необходимости, и скомпилированная версия кэшируется во временных файлах, пока ее не нужно будет снова скомпилировать.

1 голос
/ 03 марта 2011

'всегда компилировать' asp.net возможно в некоторых случаях - если у сайта редкие запросы и время простоя пула приложений (в iis) очень короткое (например, 1 минута). Вы можете заметить, что первый запрос занимает много времени (даже несколько секунд), но после первой компиляции asp.net работает очень быстро.

скоростные испытания - http://www.wrensoft.com/zoom/benchmarks.html

0 голосов
/ 03 марта 2011

Поскольку asp (не ASP.NET) является языком сценариев, таким как php, все компилируется каждый раз.

В ASP.NET необходимо различать элементы представления (страницы / представления aspx) и элементы чистого кода (классы / код и т. д.).

В общем случае компиляция в .NET означает компиляцию кода в IL (промежуточный язык или, в более общем смысле: байт-код).Когда такой скомпилированный компонент фактически используется, он снова компилируется в фактический машинный код.
Этот процесс называется компиляцией 'Just In Time' (JIT).

Презентация
Страницы презентации компилируются первымираз они доступны.Но ваш веб-сервер замечает, когда они изменяются, и перекомпилирует их снова.

Элементы Code Code фактически скомпилированы только один раз.В то время, когда вы запускаете сборку в VS.

Так что же значит производительность?Подумайте об этом, что дальше - путь от читаемого пользователем кода к машинному коду или от байтового кода, который уже близок к машинному коду к реальному машинному коду?
Я хотел бы пойти на попозже в любой день и в прошлом для меняASP.NET всегда был быстрее.

Да.Абсолютный первый раз, когда вы получаете доступ к странице, это может занять больше времени, но это не тот случай, о котором вы должны подумать, это 10-й и 20-й посетитель, о котором вы должны помнить.

...