Определение подлежащих развертыванию файлов (C#)

Скотт Митчелл

Загрузить PDF-файл

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

Введение

Развертывание веб-приложения ASP.NET влечет за собой копирование файлов, связанных с ASP.NET, из среды разработки в рабочую среду. Файлы, связанные с ASP.NET, включают ASP.NET разметку веб-страницы и файлы поддержки кода, а также файлы поддержки на стороне клиента и сервера. Файлы поддержки на стороне клиента — это файлы, на которые ссылаются веб-страницы и отправляются непосредственно в браузер, например изображения, CSS-файлы и файлы JavaScript. Файлы поддержки на стороне сервера включают файлы, которые используются для обработки запроса на стороне сервера. Сюда входят файлы конфигурации, веб-службы, файлы классов, типизированные наборы данных и файлы LINQ to SQL.

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

Явная компиляция и автоматическая компиляция

ASP.NET веб-страницы делятся на декларативную разметку и исходный код. Декларативная часть разметки включает HTML, веб-элементы управления и синтаксис привязки данных; Часть кода содержит обработчики событий, написанные на языке Visual Basic или C#. Фрагменты разметки и кода обычно разделяются на разные файлы: WebPage.aspx содержит декларативную разметку, в то время как WebPage.aspx.cs содержит код.

Рассмотрим ASP.NET страницу с именем Clock.aspx, содержащую элемент управления Label, для свойства Text которого задана текущая дата и время загрузки страницы. Декларативная часть разметки (в Clock.aspx) будет содержать разметку для веб-элемента управления Label Web ,<asp:Label runat="server" id="TimeLabel" /> а часть кода (в Clock.aspx.cs) будет иметь Page_Load обработчик событий со следующим кодом:

protected void Page_Load(object sender, EventArgs e)
{
    TimeLabel.Text =  "The time at the beep is: " + DateTime.Now.ToString();
}

Чтобы подсистема ASP.NET обслуживала запрос для этой страницы, сначала необходимо скомпилировать часть кода страницы ( WebPage.aspx.cs файл). Эта компиляция может выполняться явным образом или автоматически.

Если компиляция происходит явным образом, то весь исходный код приложения компилируется в одну или несколько сборок (.dll файлов), расположенных в каталоге Bin приложения. Если компиляция происходит автоматически, результирующая автоматически созданная сборка по умолчанию помещается в Temporary ASP.NET папку Файлы, которую можно найти в %WINDOWS%\Microsoft.NET\Framework\<версии> , хотя это расположение можно настроить с помощью <compilation> элемента в Web.config. При явной компиляции необходимо выполнить некоторые действия, чтобы скомпилировать код приложения ASP.NET в сборку, и этот шаг выполняется перед развертыванием. При автоматической компиляции процесс компиляции происходит на веб-сервере при первом обращении к ресурсу.

Независимо от используемой модели компиляции часть разметки всех ASP.NET страниц ( WebPage.aspx файлов) должна быть скопирована в рабочую среду. При явной компиляции необходимо скопировать сборки в папку Bin , но не нужно копировать части кода ASP.NET страниц ( WebPage.aspx.cs файлы). При автоматической компиляции необходимо скопировать файлы частей кода, чтобы код присутствовал и можно было скомпилировать автоматически при посещении страницы. Часть разметки каждой ASP.NET веб-страницы содержит директиву @Page с атрибутами, которые указывают, был ли связанный код страницы уже явно скомпилирован или его необходимо скомпилировать автоматически. В результате рабочая среда может легко работать с любой из моделей компиляции, и вам не нужно применять специальные параметры конфигурации, чтобы указать, что используется явная или автоматическая компиляция.

В таблице 1 перечислены различные файлы для развертывания при использовании явной и автоматической компиляции. Обратите внимание, что независимо от используемой модели компиляции следует всегда развертывать сборки в папке Bin , если эта папка существует. Папка Bin содержит сборки, относящиеся к веб-приложению, которые включают скомпилированный исходный код при использовании модели явной компиляции. Каталог Bin также содержит сборки из других проектов и любые сборки с открытым кодом или сторонние сборки, которые вы можете использовать, и они должны находиться на рабочем сервере. Поэтому, как правило, скопируйте папку Bin в рабочую среду при развертывании. (Если вы используете модель автоматической компиляции и не используете внешние сборки, то у Bin вас не будет каталога — это нормально!)

Модель компиляции Развернуть файл части разметки? Развернуть файл исходного кода? Развертывание сборок в Bin каталоге
Явная компиляция Да Нет Да
Автоматическая компиляция Да Да Да (если он существует)

Таблица 1. Развертывание файлов зависит от используемой модели компиляции.

Принимая поездку вниз по полосе памяти

Используемый подход к компиляции зависит от того, как в Visual Studio осуществляется управление приложением ASP.NET. С. С момента создания NET в 2000 году было четыре различные версии Visual Studio: Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005 и Visual Studio 2008. Visual Studio .NET 2002 и 2003, управляемые ASP.NET приложения с помощью модели проекта веб-приложения. Ниже перечислены основные возможности модели проекта веб-приложения.

  • Файлы, которые создают проект, определяются в одном файле проекта. Все файлы, не определенные в файле проекта, не считаются частью веб-приложения в Visual Studio.
  • Использует явную компиляцию. При построении проекта файлы кода в проекте компилируются в одну сборку, помещаемую в папку Bin .

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

  • Вместо одного файла проекта, который содержит файлы проекта, вместо этого используется файловая система. Короче говоря, все файлы в папке веб-приложения (или вложенных папках) считаются частью проекта.
  • Сборка проекта в Visual Studio не создает сборку в каталоге Bin . Вместо этого при создании проекта веб-сайта сообщается о любых ошибках во время компиляции.
  • Поддержка автоматической компиляции. Проекты веб-сайтов обычно развертываются путем копирования разметки и исходного кода в рабочую среду, хотя код может быть предварительно скомпилирован (явная компиляция).

Корпорация Майкрософт возродила модель проекта веб-приложения после выпуска Visual Studio 2005 с пакетом обновления 1 (SP1). Однако Visual Web Developer продолжал поддерживать только модель проекта веб-сайта. Хорошей новостью является то, что это ограничение было снято с Visual Web Developer 2008 с пакетом обновления 1 (SP1). Сегодня можно создавать ASP.NET приложения в Visual Studio (и Visual Web Developer) с помощью модели проекта веб-приложения или проекта веб-сайта. Обе модели имеют свои плюсы и недостатки. См. статью Общие сведения о проектах веб-приложений: сравнение проектов веб-сайтов и проектов веб-приложений , чтобы сравнить две модели и определить, какая модель проекта лучше подходит для вашей ситуации.

Изучение примера веб-приложения

Скачивание этого руководства включает в себя приложение ASP.NET с именем Книжные обзоры. Веб-сайт имитирует хобби веб-сайт, который кто-то может создать, чтобы поделиться своими рецензиями на книги с интернет-сообществом. Это ASP.NET веб-приложение очень простое и состоит из следующих ресурсов:

  • Web.config, файл конфигурации приложения.

  • Страница master (Site.master).

  • Семь разных страниц ASP.NET:

    • ~/Default.aspx— домашняя страница сайта.

    • ~/About.aspx — страница "О сайте".

    • ~/Fiction/Default.aspx - страница с описанием книг художественной литературы, которые были проверены.

      • ~/Fiction/Blaze.aspx - обзор романа Ричарда Бахмана Блейз.
    • ~/Tech/Default.aspx — страница с книгами по технологиям, которые были проверены.

      • ~/Tech/CYOW.aspx— обзор создания собственного веб-сайта.
      • ~/Tech/TYASP35.aspx - обзор Научи себя ASP.NET 3,5 за 24 часа.
  • Три разных ФАЙЛА CSS в папке Стили.

  • Четыре файла изображений - на платформе ASP.NET логотип и изображения обложек трех рецензируемых книг - все находятся в папке Images .

  • Файл Web.sitemap , который определяет карту сайта и используется для отображения меню на Default.aspx страницах в корневом каталоге и Fiction папках и Tech .

  • Файл класса с именем BasePage.cs , определяющий базовый Page класс. Этот класс расширяет функциональные возможности Page класса, автоматически устанавливая Title свойство на основе положения страницы на карте сайта. В двух словах, любой класс кода программной части ASP.NET, расширяющий BasePage (а не ), будет иметь значение заголовка System.Web.UI.Pageв зависимости от его положения на карте сайта. Например, при просмотре страницы ~/Tech/CYOW.aspx заголовок имеет значение "Главная : технология: создание собственного веб-сайта".

На рисунке 1 показан снимок экрана веб-сайта "Обзоры книг" при просмотре в браузере. Здесь вы увидите страницу ~/Tech/TYASP35.aspx, которая рассматривает книгу Обучение себя ASP.NET 3,5 за 24 часа. Навигация, охватывающая верхнюю часть страницы, и меню в левом столбце основаны на структуре карты сайта, определенной в Web.sitemap. Изображение в правом верхнем углу является одним из изображений обложки книги, расположенных в папке Images . Внешний вид веб-сайта определяется с помощью каскадных правил таблицы стилей, изложенных в CSS-файлах в папке Стили, а общий макет страницы определяется на странице Site.mastermaster .

Веб-сайт обзоров книг предлагает обзоры на ассортимент названий

Рис. 1. Веб-сайт обзоров книг предлагает обзоры по ассортименту названий (нажмите, чтобы просмотреть изображение в полном размере)

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

Примечание

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

Скачиваемый учебник содержит две копии веб-приложения, каждая из которых реализована как проект Другого типа Visual Studio: BookReviewsWAP, проект веб-приложения и Проект веб-сайта BookReviewsWSP. Оба проекта были созданы с помощью Visual Web Developer 2008 с пакетом обновления 1 (SP1) и используют ASP.NET 3.5 с пакетом обновления 1 (SP1). Для работы с этими проектами сначала распакуйте содержимое на рабочем столе. Чтобы открыть проект веб-приложения (BookReviewsWAP), перейдите в папку BookReviewsWAP и дважды щелкните файл BookReviewsWAP.slnрешения . Чтобы открыть проект веб-сайта (BookReviewsWSP), запустите Visual Studio, а затем в меню Файл выберите пункт Открыть веб-сайт, перейдите в папку BookReviewsWSP на рабочем столе и нажмите кнопку ОК.

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

Определение файлов для развертывания для проекта веб-приложения

Модель проекта веб-приложения использует явную компиляцию. Исходный код проекта компилируется в одну сборку при каждой сборке приложения. Эта компиляция включает ASP.NET файлы кода программной части страниц (~/Default.aspx.cs, ~/About.aspx.cs и т. д.), а также BasePage.cs класс . Результирующая сборка называется BookReviewsWAP.dll и находится в каталоге Bin приложения.

На рисунке 2 показаны файлы, составляющие проект веб-приложения Book Reviews.

В Обозреватель решений перечислены файлы, составляющие проект веб-приложения.

Рис. 2. В Обозреватель решений перечислены файлы, составляющие проект веб-приложения

Чтобы развернуть ASP.NET приложение, разработанное с помощью модели проекта веб-приложения, начните с создания приложения, чтобы явно скомпилировать последний исходный код в сборку. Затем скопируйте следующие файлы в рабочую среду:

  • Файлы, содержащие декларативную разметку для каждой страницы ASP.NET, например ~/Default.aspx, ~/About.aspxи т. д. Кроме того, скопируйте декларативную разметку для всех master страниц и пользовательских элементов управления.
  • Сборки (.dll файлы) в папке Bin . Вам не нужно копировать файлы базы данных программы (.pdb) или ЛЮБЫЕ XML-файлы, которые можно найти в каталоге Bin .

Вам не нужно копировать файлы исходного кода ASP.NET страниц в рабочую среду, а также копировать BasePage.cs файл класса.

Примечание

Как показано на рисунке BasePage 2, класс реализуется в виде файла класса в проекте, помещаемого в папку с именем HelperClasses. При компиляции проекта код в BasePage.cs файле компилируется вместе с ASP.NET классами кода программной части страниц в одну сборку, BookReviewsWAP.dll. ASP.NET имеет специальную папку с именем App_Code , предназначенную для хранения файлов классов для проектов веб-сайтов. Код в папке App_Code компилируется автоматически и поэтому не должен использоваться с проектами веб-приложений. Вместо этого следует поместить файлы класса приложения в обычную папку с именем HelperClasses, или Classes, или что-то подобное. Кроме того, файлы классов можно поместить в отдельный проект библиотеки классов.

Помимо копирования файлов разметки, связанных с ASP.NET, и сборки в Bin папке, необходимо также скопировать файлы поддержки на стороне клиента ( изображения и CSS-файлы), а также другие серверные вспомогательные файлы и Web.configWeb.sitemap. Эти файлы поддержки на стороне клиента и сервера необходимо копировать в рабочую среду независимо от того, используется ли явная или автоматическая компиляция.

Определение файлов для развертывания для файлов проекта веб-сайта

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

Пункт меню Сборка в Visual Studio присутствует как в проектах веб-приложений, так и в проектах веб-сайтов. При построении проектов веб-приложений исходный код проекта компилируется в одну сборку, расположенную в Bin каталоге; при построении проекта веб-сайта проверяется наличие ошибок во время компиляции, но сборки не создаются. Чтобы развернуть приложение ASP.NET, разработанное с помощью модели проекта веб-сайта, достаточно скопировать соответствующие файлы в рабочую среду, но рекомендуется сначала выполнить сборку проекта, чтобы убедиться в отсутствии ошибок во время компиляции.

На рисунке 3 показаны файлы, составляющие проект веб-сайта "Обзоры книг".

В Обозреватель решений перечислены файлы, составляющие проект веб-сайта.

Рис. 3. В Обозреватель решений перечислены файлы, составляющие проект веб-сайта

Развертывание проекта веб-сайта включает копирование всех файлов, связанных с ASP.NET, в рабочую среду, которая включает страницы разметки для ASP.NET страниц, master страниц и пользовательских элементов управления, а также файлы кода. Кроме того, необходимо скопировать все файлы классов, например BasePage.cs. Обратите внимание, что BasePage.cs файл находится в папке App_Code , которая представляет собой специальную папку ASP.NET, используемую в проектах веб-сайта для файлов классов. Специальная папка должна быть создана в рабочей среде, а также файлы классов в папке в App_Code среде разработки должны быть скопированы в App_Code папку рабочей среды.

Помимо копирования файлов разметки и исходного кода ASP.NET необходимо также скопировать файлы поддержки на стороне клиента ( изображения и CSS-файлы), а также другие серверные вспомогательные файлы и Web.configWeb.sitemap.

Примечание

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

Итоги

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

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

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

Теперь, когда мы изучили, какие файлы необходимо синхронизировать между средами разработки и рабочей средой, мы готовы развернуть приложение Book Reviews в поставщике веб-узла.

Счастливого программирования!

Дополнительные материалы

Дополнительные сведения о темах, рассмотренных в этом руководстве, см. в следующих ресурсах: