Веб-проекти

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

Безпроектна розробка продовжує користуватися популярністю з наведених нижче причин:

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

Вона спрощує керування файлами. Для видалення сторінки можна просто видалити файли, що асоціюються з нею, за допомогою будь-якої бажаної програми управління файлами. Для додавання нової сторінки або перенесення будь-якої сторінки з одного веб-сайту в інший знадобиться тільки скопіювати файли, що асоціюються з нею: ні мати справу з Visual Studio, ні редагувати файл проекту не потрібно.

Вона полегшує спільну командну роботу. Різні люди можуть окремо працювати над різними веб-сторінками, і ніякі проектні файли блокувати не потрібно.

Вона спрощує налагодження. У разі створення веб-проекту, при зміні навіть єдиної сторінки заново необхідно компілювати всю програму. У разі безпроектної розробки кожна сторінка компілюється окремо, причому лише тоді, коли запитується вперше.

Дозволяє змішувати мови. Оскільки кожна веб-сторінка компілюється окремо, розробник може писати код для своїх сторінок різними мовами. У разі проектної розробки йому для цього доведетьсястворювати чи готельні веб-проекти (що ускладнить управління), чи окремі проекти бібліотеки класів.

Незважаючи на вищесказане, існує ще кілька специфічніших причин, з яких у певних сценаріях перевага може віддаватися застосуванню заснованої на проектах розробки або використання веб-проектів.

Розробка, заснована на проекті

При створенні веб-проекту Visual Studio генерує набір додаткових файлів, включаючи файли проекту з розширенням .csproj, а також файл рішення з розширенням .sln. При компонуванні програми Visual Studio генерує тимчасові файли, які розміщує в підкаталозі Obj, і один або більше файлів .pdb з налагоджувальними символами, які розміщує в підкаталозі Bin. Ніхто з цих файлів не повинен розгортатися на веб-сервері, коли веб-програма буде готова.

Більше того, також не повинні розгортатися і файли вихідного коду на C# (з розширенням .cs), оскільки Visual Studio попередньо компілює їх у складання DLL.

На перший погляд, попередня компіляція веб-проектів здається великою перевагою, адже вона не тільки гарантує відсутність необхідності в компілюванні сторінок при першому запиті, але також дозволяє уникати розгортання вихідного коду на веб-сервері. Однак безпроектні веб-сайти можна так само легко компілювати для розгортання: необхідно лише скористатися відповідним інструментом попередньої компіляції.

Заснована на проектах розробки має своє коло шанувальників. Нижче наведено найважливіші переваги веб-проектів:

Система проектної розробки є суворішою, ніж система безпроектної розробки. Справа в тому, що у файлі проекту явно перераховані всі файли, які маютьвходити у проект. Це дозволяє перехоплювати ймовірні помилки (на кшталт відсутніх файлів) і навіть аналізувати можливі варіанти атак (на кшталт додавання зловмисним користувачем небажаних файлів).

Веб-проекти передбачають більше можливостей для керування файлами. Одним із прикладів може бути випадок, коли створюється кілька проектів, і всі вони розміщуються в підкаталогах всередині одного й того ж віртуального каталогу. При такому сценарії виходить, що файли зберігаються окремо для цілей розробки, але при цьому, по суті, все одно є частиною одного й того ж додатка для розгортання. У разі безпроектної розробки можливість розміщувати файли окремо у таких підкаталогах відсутня.

З цієї ж причини веб-проекти може бути ефективніше застосовувати і при створенні веб-додатку, що використовує величезну кількість файлів ресурсів, наприклад веб-сайту, що включає підкаталог Images з тисячами різних зображень. При безпроектній розробці Visual Studio виявить ці файли і додасть їх у вікно Solution Explorer, оскільки вони будуть частиною каталогу веб-сайту. У разі веб-проекту таких додаткових накладних витрат вдасться уникнути, тому що явно додавати ці малюнки до списку файлів проекту ви не будете.

Веб-проекти передбачають можливість налаштування процесу розгортання. Файли проектів Visual Studio працюють із засобом веб-пакетів, який надає додаткові можливості для конфігурування версії програми, що розгортається.

Веб-проекти працюють краще у деяких сценаріях міграції. Будь-який веб-додаток, який створювався за допомогою Visual Studio 2003 або більш ранньої версії, є веб-проектом, оскільки в цих версіях Visual Studio не було можливості створювати веб-сайти безвикористання проектів Відкриття такого веб-проекту Visual Studio 2010 призводить до запуску майстра міграції для перетворення цієї програми на веб-проект Visual Studio 2010.

Доступні функціональні можливості ASP.NET як при безпроектній, так і при розробці, що базується на проектах, виглядають однаково. Більше того, показники продуктивності і в тому, і в іншому випадку також нічим не відрізняються. То який варіант краще вибирати при створенні нового веб-сайту ASP.NET? Кожен підхід має свої прихильники.

Офіційно Microsoft рекомендує користуватися більш простою моделлю веб-сайту у всіх випадках, крім тих, коли існує серйозна причина застосування веб-проекту. До таких випадків належать ситуації, коли було розроблено спеціальне розширення MSBuild, коли вже є готовий ретельно автоматизований процес розгортання, коли виконується перенесення в нову версію старого веб-сайту, створеного в Visual Studio 2003, або коли необхідно створити в одному каталозі відразу кілька проектів .

Створення веб-проекту

Щоб створити веб-проект, виберіть у меню File пункт New --> Project. Відкриється діалогове вікно New Project, яке виглядає дуже схожим на розглянуте раніше діалогове вікно New Web Site.

Як і під час створення безпроектного веб-сайту, у списку зверху вікна можна змінити цільову версію .NET Framework. Хоча веб-проекти та безпроектні веб-сайти дають однаковий кінцевий результат після розгортання та компіляції на веб-сервері, є деякі відмінності у способі, яким вони структуруються під час проектування.