Поделиться через


Общие сведения о развертывании ASP.NET

Обновлен: Ноябрь 2007

После разработки веб-узла его можно развернуть на веб-сервере для тестирования (промежуточном сервере) или на сервере, на котором могут работать пользователи с веб-узлом (рабочем сервере). Существует несколько параметров развертывания веб-узла, включая предварительную компиляцию.

В данном разделе рассматриваются следующие темы:

  • Сценарии

  • Средства развертывания

  • Основные сведения

  • Примеры кода

Сценарии

После создания веб-узла в Visual Studio можно выбрать один из следующих методов развертывания:

  • Скопировать файлы веб-узла на целевой сервер с помощью инструментов, имеющихся в Visual Studio.

  • Предварительно скомпилировать веб-узел и скопировать выходные данные в заданное расположение, например, на рабочий сервер.

К началу

Средства развертывания

Visual Studio предоставляет следующие средства для развертывания веб-узла:

  • Средство «Копировать веб-узел», которое позволяет скопировать текущий веб-узел на целевой сервер.

  • Средство «Опубликовать веб-узел», которое выполняет компиляцию веб-узла в набор исполняемых файлов. Затем полученные файлы можно скопировать файлы на целевой сервер любым способом.

    Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

    Средство «Опубликовать веб-узел» недоступно в Microsoft Visual Web Developer, экспресс-выпуск.

К началу

Основные сведения

Visual Studio предоставляет средство «Копировать веб-узел», которое копирует файлы текущего веб-узла на целевой сервер. Кроме того, существует средство «Опубликовать веб-узел», которое компилирует веб-узел в набор исполняемых файлов. Затем полученные файлы можно скопировать на целевой сервер любым способом.

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Кроме того, можно создавать веб-узлы используя проект веб-приложения. В проекте веб-приложения все файлы классов компилируются в одну сборку. Дополнительные сведения см. в разделе Общие сведения о проектах веб-приложений.

В дополнении к созданию веб-узла и последующему его развертыванию на целевом сервере можно создать веб-узел, работающий по протоколу FTP. В данном случае создание и редактирование файлов выполняется напрямую на целевом сервере. Это очень удобный способ работы с веб-узлом на сервере размещения.

Средство «Копировать веб-узел»

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

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Если целевой сервер является FTP-сервером, можно открывать и изменять файлы на сервере путем создания FTP-узла. Дополнительные сведения см. в разделе Веб-узлы, развертываемые по протоколу FTP.

Средство «Копировать веб-узел» поддерживает следующие возможности:

  • Копирование исходных файлов на целевой сервер, включая ASPX-файлы и файлы классов. В данном сценарии веб-страницы компилируются динамически по запросу.

  • Открытие и копирование файлов с любых веб-узлов, которые поддерживаются в Visual Studio. Сюда входят локальные веб-узлы IIS, удаленные веб-серверы IIS и FTP-узлы. Целевой сервер не требует установки серверных расширений FrontPage.

  • Функция синхронизации проверяет файлы на обоих веб-узлах и автоматически обеспечивает актуальность версий файлов на обоих веб-узлах.

  • Перед копированием файлов приложения средство «Копировать веб-узел» помещает файл с именем App_offline.htm в корневой каталог целевого веб-узла. При наличии файла App_offline.htm любые запросы к веб-узлу будут перенаправлены к данному файлу. Файл содержит приветственное сообщение, сообщающее клиентам, что веб-узел в данный момент находится на обновлении. Когда все файлы веб-узла будут скопированы, средство «Копировать веб-узел» удаляет файл App_offline.htm из целевого веб-узла.

Средство «Опубликовать веб-узел»

Средство «Опубликовать веб-узел» выполняет предварительную компиляцию содержимого веб-узла, включая веб-страницы (ASPX-файлы) и код. Затем выходные данные копируются в каталог или в заданное расположение на сервере. Публикацию веб-узла можно осуществить как часть процесса предварительной компиляции. Кроме того, предварительную компиляцию можно выполнить локально и затем самостоятельно скопировать файлы на целевой сервер. Средство «Опубликовать веб-узел» компилирует веб-узел и отделяет исходный код от файлов, оставляя только файлы-заглушки для страниц и скомпилированные сборки. Когда пользователи запрашивают страницу, ASP.NET выполняет запрос из предварительно скомпилированных сборок.

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Средство «Опубликовать веб-узел» недоступно в Microsoft Visual Web Developer, экспресс-выпуск.

Проекты веб-приложений

В дополнении к использованию средства «Опубликовать веб-узел» можно создавать веб-узлы с помощью проекта веб-приложения. В проекте веб-приложения все файлы классов компилируются в одну сборку. Данная сборка будет развернута вместе с ASPX-файлами, ASCX-файлами и прочими файлами статического содержимого. (Данная модель проекта веб-приложения имеет сходство с моделью, используемой в Visual Studio .NET 2003.) В данной модели ASPX-файлы не будут скомпилированы до тех пор, пока они не будут запущены в веб-обозревателе. Дополнительные сведения о проектах веб-приложений см. в разделе Общие сведения о проектах веб-приложений.

Выбор средства развертывания

Выбор между средством «Копировать веб-узел» и средством «Опубликовать веб-узел» зависит от того, как планируется использовать и обслуживать веб-узел.

Выбор средства «Копировать веб-узел»

Преимущества использования средства «Копировать веб-узел»:

  • Развертывание — это копирование файлов с веб-узла на целевой компьютер.

  • Развертывание на целевом компьютере можно выполнить с помощью любого протокола соединения, поддерживаемого Visual Studio. Копирование можно выполнить в общую папку, расположенную на другом компьютере сети. Для копирования файлов на сервер можно использовать протокол FTP или HTTP, которые поддерживаются серверными расширениями FrontPage.

  • Возможность выполнять изменения или исправлять ошибки напрямую на сервере.

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

Недостатки использования средства «Копировать веб-узел»:

  • Веб-узел копируется в исходном виде. Поэтому, если файлы содержат ошибку компиляции, ошибка не будет обнаружена до тех пор, пока кто-нибудь (возможно пользователь) не запустит страницу, которая вызывает ошибку.

Выбор средства «Опубликовать веб-узел»

Преимущества использования средства «Опубликовать веб-узел»:

  • Процесс предварительной компиляции помогает обнаружить ошибки времени компиляции и потенциальные ошибки в файле Web.config, а также в других файлах, не содержащих программный код.

  • Исходный код удаляется из веб-узла и, если необходимо, удаляется разметка в веб-файлах ASP.NET и пользовательские элементы управления. Это позволяет защитить интеллектуальную собственность и усложняет доступ других пользователей к исходному коду узла.

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

Недостатки использования средства «Опубликовать веб-узел»:

  • В зависимости от заданных параметров публикации можно выполнить повторную компиляцию веб-узла при его изменении. Поэтому нецелесообразно использовать средство «Опубликовать веб-узел» на этапе разработки веб-узла и при частом изменении страниц.

  • Средство «Опубликовать веб-узел» не позволяет развернуть скомпилированный веб-узел на удаленном сервере. Данное средство выполняет копирование только на локальный компьютер или другой компьютер в локальной сети.

    Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

    Средство «Опубликовать веб-узел» перезаписывает файлы в целевой папке и любых вложенных папках. Убедитесь, что публикация выполняется в расположение, защищенное от удаления существующего содержимого.

Использование средства «Копировать веб-узел»

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

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Если выполняется копирование приложения, содержащего ссылку на пользовательский компонент, который зарегистрирован в глобальном кэше сборок, данный компонент не будет скопирован вместе с приложением. Дополнительные сведения см. в разделе Практическое руководство. Добавление ссылки на компонент .NET или COM на веб-узле.

Исходные и удаленные узлы

Средство «Копировать веб-узел» предназначено для копирования файлов между исходным узлом и удаленным узлом. Данные термины характеризуют два вида узлов, с которыми работает средство. Термины используются со следующими значениями:

  • Исходный узел   Исходный узел — это узел, который открыт в Visual Studio.

  • Удаленный узел   Удаленный узел — это узел, на который необходимо скопировать файлы. Удаленный узел может быть расположен на другом компьютере, к которому можно получить доступ с помощью серверных расширений FrontPage или протокола FTP. В данном случае узел является фактически удаленным. Однако удаленным узлом может быть другой узел на компьютере разработчика. Например, можно опубликовать веб-узел, расположенный в файловой системе компьютера, на локальном веб-узле IIS, расположенном на этом же компьютере. В данном случае несмотря на то, что узел является локальным по отношению к компьютеру, он является удаленным узлом при использовании средства копирования веб-узлов.

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

Синхронизация узлов

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

Средство копирования веб-узлов не выполняет объединение файлов с одинаковым именем, но различным содержанием. В данном случае функция синхронизации позволяет разработчику указать версию файла, которую необходимо сохранить.

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

Состояние файла

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

При подключении к узлу (или при обновлении) средство копирования сравнивает отметки времени файлов на обоих узлах и сведения, хранимые на каждом узле. Затем формируется отчет о состоянии каждого файла. В следующей таблице приведены возможные состояния файлов.

Состояние

Описание

Unchanged

Файл не изменялся с момента последнего копирования.

Changed

Файл имеет более новую отметку времени по сравнению с присвоенной ему на момент последнего копирования.

New

Файл добавлен с момента последнего копирования узла.

Deleted

Файл удален с момента последнего копирования узла. При выборе в средстве копирования веб-узлов команды Показать удаленные файлы в окне будет отображена запись, соответствующая удаленному файлу.

Использование средства «Опубликовать веб-узел»

Средство «Опубликовать веб-узел» позволяет выполнить публикацию веб-узлов. Средство выполняет компиляцию узла и копирует выходные данные в указанное расположение, например, на рабочий сервер.

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Средство опубликования веб-узла недоступно в Visual Web Developer, экспресс-выпуск.

В ходе публикации выполняются следующие задачи:

  • Предварительная компиляция страниц, исходного кода в папке App_Code и т. д. с формированием исполняемых выходных файлов.

  • Запись исполняемых выходных файлов в целевую папку.

    Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

    Если публикуемое приложение содержит ссылку на пользовательский компонент, зарегистрированный в глобальном кэше сборок, то данный компонент не будет опубликован вместе с приложением. Дополнительные сведения см. в разделе Практическое руководство. Добавление ссылки на компонент .NET или COM на веб-узле.

Дополнительные сведения см. в разделе Общие сведения о предварительной компиляции в ASP.NET.

Предварительная компиляция

Первым шагом при публикации является предварительная компиляция веб-узла. Предварительная компиляция похожа на компиляцию, которая обычно выполняется при динамической компиляции страницы при первом запросе в веб-обозревателе. Процесс предварительной компиляции выполняет сборки на страницах, которые содержат разметку и код. При этом также компилируются файлы в папках App_Code, App_GlobalResources, App_LocalResources и App_Themes.

Компилировать можно как однофайловые страницы ASP.NET, так и страницы с выделенным кодом. Дополнительные сведения об этих двух моделях кода см. в разделе Модель кода веб-страниц ASP.NET.

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

Запись выходных данных предварительной компиляции

По окончании предварительной компиляции выходные данные записываются в заданную папку. Выходные файлы можно записать в любую папку, доступную в файловой системе, при помощи протокола передачи данных (FTP) или протокола HTTP. Для записи в целевую папку узла необходимо наличие соответствующих разрешений.

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Процесс публикации развертывает только те файлы, которые находятся в папках и вложенных папках веб-узла. Файл Machine.config не развертывается. Конфигурация целевого веб-сервера может отличаться от конфигурации компьютера. Это может оказать влияние на работу приложения.

Целевую папку можно указать на промежуточном сервере или рабочем сервере, или записать выходные файлы в папку на локальном компьютере. При указании папки на рабочем сервере предварительную компиляцию и развертывание можно провести за один шаг. Если выходные файлы записываются в папку, находящуюся не на веб-узле, то их можно скопировать на сервер отдельным шагом.

Bb398992.alert_note(ru-ru,VS.90).gifПримечание.

Если открыть предварительно скомпилированный веб-узел с помощью Visual Studio, то невозможно будет выполнить построение веб-узла. Параметры построения будут отключены. Для смены публикуемого веб-узла необходимо изменить файлы на исходном веб-узле, выполнить перекомпиляцию узла и опубликовать его повторно.

В состав выходных файлов процесса предварительной компиляции входят скомпилированные сборки всего кода или всех страниц. Если выбраны параметры разрешающие обновление предварительно скомпилированного веб-узла, все классы с выделенным кодом для файлов с расширениями ASPX, ASMX и ASHX компилируются в сборки. Однако сами файлы с расширениями ASPX ASMX и ASHX копируются в исходном виде в целевую папку, и их структуру можно изменять после развертывания узла. Для предварительно скомпилированных обновляемых узлов код страниц с одним файлом не компилируется в сборку. Вместо этого он развертывается в виде исходного кода.

Статические файлы не компилируются. Вместо этого они копируются в выходную папку в исходном виде. К статическим файлам относятся изображения, HTM или HTML-файлы, текстовые файлы и т. п.

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

К началу

Примеры кода

Практическое руководство. Копирование файлов веб-узла с помощью средства "Копировать веб-узел"

Практическое руководство. Предварительная компиляция веб-узлов ASP.NET для развертывания

Практическое руководство. Подписывание сборок для предкомпилированных веб-узлов

Практическое руководство. Создание сборок с поддержкой версий для предварительно скомпилированных веб-узлов

Практическое руководство. Создание фиксированных имен с помощью средства компиляции ASP.NET

Практическое руководство. Настройка опубликованных веб-узлов

Пошаговое руководство. Публикация веб-узла

Пошаговое руководство. Копирование веб-узла с помощью средства копирования веб-узла

К началу

См. также

Основные понятия

Общие сведения о проектах веб-приложений

Общие сведения о предварительной компиляции в ASP.NET

Ссылки

К началу