Что такое лучшие практики для развертывания приложения ASP.NET

Некоторые вещи об основанных на выражении языках:

<час>

самый важный: Все возвращает значение

<час>

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

<час>

На основанном на выражении языке, все возвращает значение. Это может быть немного странно сначала - Что делает (FOR i = 1 TO 10 DO (print i)) возврат?

Некоторые простые примеры:

  • (1) возвраты 1
  • (1 + 1) возвраты 2
  • (1 == 1) возвраты TRUE
  • (1 == 2) возвраты FALSE
  • (IF 1 == 1 THEN 10 ELSE 5) возвраты 10
  • (IF 1 == 2 THEN 10 ELSE 5) возвраты 5

Пара более сложных примеров:

  • Некоторые вещи, такие как некоторые вызовы функции, действительно не имеют значимого значения для возврата (Вещи, которые только производят побочные эффекты?). Вызов OpenADoor(), FlushTheToilet() или TwiddleYourThumbs() возвратит своего рода приземленное значение, такой как хорошо, Сделанный, или Успех.
  • , Когда несколько расцепляемых выражений оценены в рамках одного большего выражения, значение последней вещи, оцененной в большом выражении, становится значением большого выражения. Для взятия примера [1 118] значение для цикла равняется "10", это заставляет (print i) выражение быть оцененным 10 раз, каждый раз возвращаясь i как строка. Заключительное время посредством возвратов 10, наш окончательный ответ
<час>

Это часто требует, чтобы небольшое изменение мышления получило все возможное от основанного на выражении языка, так как то, что все - выражение, позволяет 'встроить' много вещей

Как быстрый пример:

 FOR i = 1 to (IF MyString == "Hello, World!" THEN 10 ELSE 5) DO
 (
    LotsOfCode
 )

совершенно допустимая замена для не основанный на выражении

IF MyString == "Hello, World!" THEN TempVar = 10 ELSE TempVar = 5 
FOR i = 1 TO TempVar DO
(    
    LotsOfCode  
)

В некоторых случаях, расположение, что основанные на выражении разрешения на код чувствуют себя намного более естественными для меня

, Конечно, это может привести к безумию. Как часть проекта хобби в основанном на выражении языке сценариев под названием MaxScript, мне удалось придумать эту строку монстра

IF FindSectionStart "rigidifiers" != 0 THEN FOR i = 1 TO (local rigidifier_array = (FOR i = (local NodeStart = FindsectionStart "rigidifiers" + 1) TO (FindSectionEnd(NodeStart) - 1) collect full_array[i])).count DO
(
    LotsOfCode
)
16
задан xelurg 14 July 2009 в 20:33
поделиться

3 ответа

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

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

Еще один совет, который поможет сделать развертывание менее болезненным, - сохранить файл web.config как можно более похожим на различные среды, такие как разработка, тестирование и производство. Что касается вещей, которые действительно должны измениться в различных средах, таких как строки подключения, вы можете извлечь их в их собственный файл connectionStrings.config, установив в web.config.

Для развертывания базы данных есть несколько отличных сторонних разработчиков. инструменты (такие как Teratrax Database Compare для SQL Server), которые позволяют сравнивать схему и / или данные между двумя базами данных и создавать сценарий SQL, который переносит целевую базу данных в схему другой базы данных. Будет ли это работать для вас, будет зависеть от ваших конкретных методов разработки. Если вы не можете использовать такие инструменты, вы можете создать сценарий для каждого изменения базы данных, а затем воспроизвести эти сценарии при развертывании в другой среде.

13
ответ дан 30 November 2019 в 22:37
поделиться

Убедитесь, что установлен в вашем web.config .

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

2
ответ дан 30 November 2019 в 22:37
поделиться

Некоторое время назад я написал сообщение в блоге, в котором нацелен на этот подход в различных средах: http://juristr.com/blog/2009/03/best-practices-deploying-webapps-contd_20/

Я бы посоветовал вам дополнительно увеличить номера версий в вашей AssemblyInfo для отслеживания фактическая версия, используемая в производственной системе.

2
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: