Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Какие файлы необходимо развернуть из среды разработки в рабочей среде, отчасти зависит от того, было ли создано приложение 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,<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 папку Files, которую можно найти в %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. Какие файлы развертываются, зависят от используемой модели компиляции.
Ностальгическое путешествие в прошлое
Какой подход компиляции используется, в частности, зависит от того, как управляется приложением ASP.NET в Visual Studio. С момента создания .NET в 2000 году было четыре различных версии Visual Studio: Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005 и Visual Studio 2008. Приложения ASP.NET в Visual Studio .NET 2002 и 2003 управлялись с помощью модели проекта веб-приложений. Основными функциями модели проекта веб-приложения являются:
- Файлы, создающие проект, определяются в одном файле проекта. Все файлы, не определенные в файле проекта, не считаются частью веб-приложения Visual Studio.
- Использует явную компиляцию. Создание проекта компилирует файлы кода в проекте в одну сборку, размещенную в папке
Bin.
Когда корпорация Майкрософт выпустила Visual Studio 2005, она отказалась от поддержки модели проекта веб-приложения и заменила ее моделью проекта веб-сайта. Модель проекта веб-сайта отличается от модели проекта веб-приложения следующими способами:
- Вместо того чтобы иметь один файл проекта, который описывает файлы проекта, вместо этого используется файловая система. Короче говоря, все файлы в папке веб-приложения (или вложенные папки) считаются частью проекта.
- Создание проекта в Visual Studio не создает сборку в каталоге
Bin. Вместо этого создание проекта веб-сайта сообщает об ошибках во время компиляции. - Поддержка автоматической компиляции. Проекты веб-сайта обычно развертываются путем копирования разметки и исходного кода в рабочую среду, хотя код может быть предварительно компилирован (явная компиляция).
Корпорация Майкрософт возродила модель проекта веб-приложения при выпуске Visual Studio 2005 с пакетом обновления 1 (SP1). Однако Visual Web Developer продолжал поддерживать только модель проекта веб-сайта. Хорошая новость заключается в том, что это ограничение было снято вместе с Visual Web Developer 2008 Service Pack 1. Сегодня вы можете создавать ASP.NET приложения в Visual Studio (и Visual Web Developer) с помощью модели проекта веб-приложения или модели проекта веб-сайта. Обе модели имеют свои плюсы и минусы. Ознакомьтесь с введением в проекты веб-приложений: сравнение проектов веб-сайтов и проектов веб-приложений для сравнения двух моделей и чтобы решить, какая модель проекта лучше подходит для вашей ситуации.
Изучение примера веб-приложения
Загрузка этого учебного пособия включает приложение ASP.NET под названием Book Reviews. Веб-сайт имитирует сайт для хобби, который кто-то может создать, чтобы поделиться своими обзорами книг с интернет-сообществом. Это ASP.NET веб-приложение очень просто и состоит из следующих ресурсов:
Web.config— файл конфигурации приложения.Эталонная страница (
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корневом каталоге иFictionTechпапках.Файл класса с именем
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.master.
Рис. 1. Веб-сайт обзоров книг предлагает отзывы по ассортименту названий (щелкните, чтобы просмотреть изображение полного размера)
Это приложение не использует базу данных; каждая проверка реализуется как отдельная веб-страница в приложении. В этом руководстве (и в следующих нескольких руководствах) описывается развертывание веб-приложения, у которых нет базы данных. Однако в будущем руководстве мы добавим это приложение для хранения отзывов, комментариев читателя и других сведений в базе данных и изучите действия, необходимые для правильного развертывания веб-приложения на основе данных.
Замечание
В этих руководствах основное внимание уделяется размещению приложений ASP.NET у поставщика web-хостинга и не рассматриваются вспомогательные темы, такие как система карт сайта 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 показаны файлы, составляющие проект веб-приложения обзоров книг.
Рис. 2. Обозреватель решений содержит файлы, составляющие проект веб-приложения
Чтобы развернуть приложение ASP.NET, разработанное с помощью модели проекта веб-приложения, сначала соберите приложение, чтобы скомпилировать последнюю версию исходного кода в сборку. Затем скопируйте следующие файлы в рабочую среду:
- Файлы, содержащие декларативную разметку для каждой страницы ASP.NET, например ~/
Default.aspx, ~/About.aspxи т. д. Кроме того, скопируйте декларативную разметку для всех главных страниц и элементов управления пользователем. - Сборки (файлы
.dll) в папкеBin. Вам не нужно копировать файлы базы данных программы (.pdb) или XML-файлы, которые можно найти в каталогеBin.
Вам не нужно копировать файлы исходного кода страниц ASP.NET в рабочую среду, а также не нужно копировать BasePage.cs файл класса.
Замечание
Как показано на рисунке 2, BasePage класс реализуется как файл класса в проекте, помещенный в папку с именем HelperClasses. Когда проект компилируется, код в файле BasePage.cs компилируется вместе с классами code-behind страниц ASP.NET в одну сборку BookReviewsWAP.dll.. В ASP.NET имеется специальная папка с именем App_Code, которая предназначена для хранения файлов классов для веб-проектов. Код в папке App_Code автоматически компилируется и поэтому не следует использовать с проектами веб-приложений. Вместо этого следует поместить файлы класса приложения в обычную папку с именем HelperClassesили Classesчто-то подобное. Кроме того, файлы классов можно поместить в отдельный проект библиотеки классов.
Помимо копирования файлов разметки, связанных с ASP.NET и сборки в папке Bin, также необходимо скопировать файлы поддержки на стороне клиента — изображения и CSS-файлы, а также другие файлы поддержки на стороне сервера: Web.config и Web.sitemap. Эти файлы поддержки на стороне клиента и сервера должны быть скопированы в рабочую среду независимо от того, используется ли явная или автоматическая компиляция.
Определение файлов для развертывания файлов проекта веб-сайта
Модель проекта веб-сайта поддерживает автоматическую компиляцию, которая недоступна при использовании модели проекта веб-приложения. При явной компиляции необходимо скомпилировать исходный код проекта в сборку и скопировать эту сборку в рабочую среду. С другой стороны, при автоматической компиляции вы просто копируете исходный код в рабочую среду и компилируется средой выполнения по запросу.
Пункт меню "Сборка" в Visual Studio присутствует как в проектах веб-приложений, так и в проектах веб-сайта. Создание проектов веб-приложений компилирует исходный код проекта в одну сборку, расположенную в Bin каталоге. Создание проекта веб-сайта проверяет наличие ошибок во время компиляции, но не создает сборки. Чтобы развернуть приложение ASP.NET, разработанное с помощью модели проекта веб-сайта, необходимо скопировать соответствующие файлы в рабочую среду, но рекомендуется сначала создать проект, чтобы убедиться, что ошибки во время компиляции отсутствуют.
На рисунке 3 показаны файлы, составляющие проект веб-сайта обзоров книг.
Рис. 3. Обозреватель решений содержит файлы, составляющие проект веб-сайта.
Развертывание проекта веб-сайта включает копирование всех файлов, связанных с ASP.NET, в рабочую среду — это включает страницы разметки для страниц ASP.NET, главные страницы и элементы управления пользователем, а также их файлы кода. Кроме того, необходимо скопировать все файлы классов, например 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, использующего автоматическую компиляцию, необходимо скопировать часть разметки и исходный код в рабочую среду. Код автоматически компилируется в рабочей среде при первом запросе.
Теперь, когда мы изучили, какие файлы необходимо синхронизировать между средой разработки и производственной средой, мы готовы развернуть приложение "Обзоры книг" у хостинг-провайдера.
Счастливое программирование!
Дальнейшее чтение
Дополнительные сведения о разделах, описанных в этом руководстве, см. в следующих ресурсах:
- Обзор компиляции ASP.NET
- Пользовательские элементы управления ASP.NET
- Изучение навигации по сайтам в ASP.NET
- Общие сведения о проектах веб-приложений
- Руководства по главной странице
- Совместное использование кода между страницами
- Использование пользовательского базового класса для классов Code-Behind в ASP.NET страницах
- Система проектов веб-сайта Visual Studio 2005: что такое и почему мы сделали это?
- Пошаговое руководство. Преобразование проекта веб-сайта в проект веб-приложения в Visual Studio