Має бути кращий спосіб, ніж просто "Публікація" у Visual Studio, а потім доведеться вручну FTP змінювати файли, які змінилися?
Бритва Оккама, як правило, є кращим підходом: чим простіше, тим краще. FTP легкий, без особливих ускладнень. Деякі люди використовують XCOPY, Filezilla або WSFTP, інші можуть використовувати інструмент розгортання веб-служб MS (який я ще не знайомий), але все-таки, є кращий спосіб розгортання веб-додатків ASP.NET (та інші додатки взагалі). IMO, якщо розгортання враховується з початку розробки, розгортання може бути інтегровано з веб-додатком, що надає відносно безболісне і плавне розгортання в майбутньому.
Як розробник .NET, який працював у кількох компаніях, що розробляють веб-додатки ASP.NET, розмірами, розмірами, складністю та кількістю користувачів (від декількох сотень користувачів до десятків тисяч), «розгортання» ІМО часто є найбільш «текучою» темою. Деякі організації сприймають це занадто далеко з точки зору бюрократії, тоді як інші взагалі не вирішують жодних проблем із розгортанням. На мій досвід, проблеми з розгортанням, як правило, підпадають під 1 або більше з 3-х категорій з точки зору труднощів / збоїв:
Розгортання глибоко ігнорується / забувається під час проектування:
Більшість веб-додатків, як правило, містять веб-сервер та базу даних. Крім коду програми, можливо, деякі збережені процедури та таблиці баз даних, розгортання не потребує багато роздумів. ASP.NET більш ніж здатний допомогти в розгортанні, але найчастіше розробники відволікаються на те, щоб реально застосувати додаток і виконувати його завдання, залишаючи як розгортання як окрему проблему.
Розгортання складне для різних систем та людей, які грають:
Складність - це сука. З MSMQ, T-SQL зберігаються процедури та тригери, Служби звітності, SOAP / XML обмін повідомленнями, автентифікація AD, SSAS / SSIS тощо тощо, кількість технологій в програмі збільшує кількість залучених людей. Найгірше, що всі ці різні компоненти, як правило, управляються різними структурами в організації. Якщо всі не синхронізуються між собою, розгортання може швидко збільшити складність, що призведе до кількох точок відмови.
Лінь, апатія або відсутність спілкування та / або управління:
від мало документації до відсутності узгодженого зв’язку та протоколу, легко накрутити порівняно простий процес. Розгортання має бути простою процедурою, на якій численні перевірки проводяться весь час документування того, що зроблено, але часто це ніколи не буває. Більшість людей просто хочуть, щоб проклятий сайт був запущеним. З мого досвіду, людей (непрограмістів) насправді не хвилює, поки щось не стане справді фубаром. Відповідальність рідко припадає лише на одну людину, яка фактично виконує розгортання, оскільки ніхто не хоче бути причиною невдачі, тому підзвітність зазвичай розповсюджується.
Існує так багато вигадливих винятків файлів, що я повинен скоріше автоматизувати процес, щоб запобігти випадковому завантаженню. То як ваша команда це робить?
Я не знаю жодного постачальника під рукою, який би автоматизував розгортання, хоча я не був би здивований, якби їх було кілька. Можливо, ви можете сценаріювати рішення за допомогою VBScript / WMI або пакетного сценарію рішення, але реальність полягає в тому, що вам потрібно підготувати рішення разом для більш складних сайтів ASP.NET. Прості сайти, що складаються зі сторінок, підключення до бази даних і нічого іншого, вам не потрібно робити майже настільки, щоб масштабувати зусилля з розгортання відповідно до складності самого додатка.
Поки в моєму поточному розгортанні все ще робиться через FTP і переміщується купа файлів. Це некрасиво, легко викручуватися і немає сенсу точної історії. Зрозуміло, що ви можете розчісувати журнали FTP, і ніхто не переймається цим. Наші програми досить прості, не потребуючи більше FTP. Як моя команда розгортає наші веб-програми, для вас насправді мало. Натомість я б скоріше скористався цією можливістю, щоб запропонувати краще практики.
- Не припускайте нічого. Облікові записи користувачів, привілеї R / W / X, ACL, брандмауери, терміни (коли потрібно розгортатись і скільки часу для цього потрібно), і, якщо можливо, протестувати розгортання у всіх середовищах до остаточної "дати запуску".
- Перш ніж розвиток насправді розпочнеться, розгортання факторів у розвитку. Якщо це простий сайт, так і бути. Якщо є численні рухомі частини, врахуйте все це і насправді побудуйте план, до якого всі компоненти (код, база даних, звіти, черги тощо) знаходяться на одному плані.
- Координуйте з іншими паритетами та спілкуйтеся ефективно та ефективно.
- Документуйте якомога більше відповідної інформації.
- Навколишнє середовище: один веб-сервер проти веб-ферми; 32-біт проти 64-бітових; знайти спосіб моніторингу журналів / помилок / обертання тощо.
- Знайдіть (або побудуйте) інструменти, які допоможуть у розгортанні.
- Якщо можливо для програмованого розгортання, виберіть парадигму та дотримуйтесь її. Наприклад, якщо ви хочете використовувати сервер баз даних в якості основного засобу для здійснення стану, розгортання, доступу та іншого, додайте його до програми та дотримуйтесь її. Якщо ви віддаєте перевагу читання XML-файлів (наприклад, web.config) усіма способами, просто дотримуйтесь послідовної парадигми розгортання програми. Інший приклад: деякі організації залишають web.config як статичний файл у кожному середовищі, який не слід розгортати в інші середовища. Інша програма web.config таким чином, що її можна буде розміщувати в будь-яких середовищах без помилок.
Я усвідомлюю, що ця публікація може бути непосильною для запитання, яке було задано спочатку. На жаль, розгортання просто не проста справа, оскільки програми можуть відрізнятися за складністю. Думаю, що більшість організацій, що розгортають складні програми ASP.NET, з часом розробили певні стратегії роботи (принаймні) надійно.