В зависимости от ситуации развертывание веб-приложений .NET Framework может быть очень простым. Поскольку такие приложения обычно состоят только из файлов, их можно развертывать на веб-серверах, просто копируя файлы. А что, если нужно обновить приложение? В большинстве случаев достаточно просто записать новые файлы поверх старых. Если веб-приложение работает на единственном сервере, не требуется запускать программу установки, изменять реестр и добавлять элементы в меню Пуск.
Такая простота обеспечивает значительную гибкость. Если веб-приложение нужно развертывать на массиве веб-серверов (который с целью повышения доступности и масштабируемости обслуживает один веб-сайт), то копировать файлы на несколько серверов можно с помощью любой утилиты для синхронизации файлов. Администраторам, выполняющим развертывание, не нужно входить на серверы, вносить изменения в реестр или перезагружать систему, поэтому обновление и развертывание новых приложений выполняется очень просто.
Однако иногда требуется строгий контроль над процессом . -файла), чтобы приложение можно было развертывать через Active Directory и Microsoft
В следующих разделах рассказывается, как создавать проекты веб-установки, настраивать свойства развертывания, определять условия развертывания и развертывать веб-приложения.
Проекты веб-установки очень похожи на проекты традиционных установочных программ для приложений Windows Forms, но отличаются поддержкой функций, необходимых для установки веб-приложений. Чтобы добавить проект веб-установки на вебсайт, выполните следующее:
Когда создадите проект веб-установки, можете добавить в него дополнительные папки, файлы и сборки, которые не входят в стандартные выходные данные проекта. Это нужно, например, для добавления отдельных папок с изображениями, еще не включенных в проект веб-сайта.

Проект веб-установки не компилируется автоматически при компиляции веб-приложения. Вместо этого в окне Solution Explorer нужно выбрать команду меню Web Setup Project\Build. Путь к созданному . -файлу находится среди выходных данных компиляции в Visual Studio.

Средство "Опубликовать

Проекты веб-приложений
В дополнении к использованию средства "Опубликовать
Выбор между средством "Копировать
Выбор средства "Копировать веб-узел"
Преимущества использования средства "Копировать
Недостатки использования средства "Копировать
Выбор средства "Опубликовать веб-узел"
Преимущества использования средства "Опубликовать
Web.config, а также в других файлах, не содержащих программный код.Недостатки использования средства "Опубликовать
Средство "Копировать
Использование кэширования для повышения производительности
Кэширование позволяет сохранять часто используемые данные в памяти, из которой они извлекаются быстрее, чем из файла или базы данных. Например, если пользователи приложения для электронной коммерции часто обращаются к базе данных , можно повысить производительность, кэшировав нужную таблицу, чтобы при последующих запросах данные предоставлялись из кэша, хранимого в оперативной памяти.
Данные можно кэшировать вручную, скопировав базу данных или файл в переменную и обращаясь к этой переменной, хранимой в памяти. Однако при использовании такого приема с кэшированием возникает много затруднений. Например, представьте, что потребуется обновить данные. Если обновить базу данных, не обновив кэш, в нем останутся устаревшие данные.
К счастью, в .NET Framework 2.0 включен объект Cache, обеспечивающий повышение производительности без написания кода, решающего проблемы с кэшированием.
В ASP.NET поддерживается два типа кэширования:
Реализовано в виде набора, способного хранить в памяти любые объекты, автоматически удаляя объекты в зависимости от ограничений по доступной памяти, времени хранения и других условий.
ASP.NET хранит копию обработанных страниц для уменьшения времени, необходимого для обслуживания последующих их запросов.
На этом занятии рассматривается кэширование обоих типов.
Изучив материал этого занятия, вы сможете:
Продолжительность занятия — около 40 минут.
Кэширование приложений
Чтобы применять кэширование приложений, объекты добавляют в набор Cache и извлекают их оттуда. Для каждого приложения создается свой объект Cache, элементы которого могут совместно использоваться различными сеансами и запросами.
Перед применением кэшированного элемента набора Cache необходимо убедиться, что оно не равно null. Если запрашиваемое значение равно null, оно либо не было кэшировано, либо срок его действия истек. В этом случае объект придется получить из первоначального источника, а не из Cache.
Обычно кэшируют не статические строки, а файлы и объекты, созданные на основе относительно медленных запросов к базе данных или сетевому ресурсу. Можно кэшировать объекты любого типа, но после извлечения необходимо привести их к корректному типу.
Каждый из этих методов позволяет автоматически удалять элемент из кэша через заданный промежуток времени или по истечении срока действия файла,
Метод Cache.Insert принимает следующие параметры (они могут различаться в зависимости от используемой перегруженной версии):
Строка (String), которая будет использована для доступа к кэшированному объекту из набора Cache.
Object ), который будет кэширован. Объект, кэшируемый для дальнейшего использования.Объект CacheDependency, идентифицирующий файл или ключ кэша, вызывает удаление этого объекта из кэша при изменении исходного файла или ключа. При кэшировании файла следует настроить его зависимость так, чтобы он удалялся из кэша при изменении исходного файла во избежание хранения в кэше устаревших данных. Может иметь значение null.
Время (в виде объекта DateTime ), по наступлении которого объект будет удален из кэша независимо от того, обращались ли к нему в последнее время. Если функция не нужна, установите значение System.Web.Caching.Cache.NoAbsoluteExpiration.
Промежуток времени (в виде объекта TimeSpan ), по прошествии которого объект удаляется из кэша, если не используется. В случае, когда эта функция не нужна, установите значение System.Web.Caching.Cache.NoSlidingExpiration.
Значение перечислимого Cache Item , определяющее объекты, удаляемые в первую очередь при нехватке памяти. Сначала удаляются объекты с более низким приоритетом. Если эта функция не нужна, установите значение System.Web.Caching.Cache-ItemPriority. Default,
Обработчик события, вызываемый при удалении объекта из кэша. Если метод обратного вызова не используется, он может быть равен null.
Следующий фрагмент кода демонстрирует создание зависимости кэша для файла. Если файл изменится
Cache.Insert("FileCache","CacheContents", new System.Web.Caching.CacheDependency( Server.MapPath("SourceFile.xml")));
Для одного объекта можно создать несколько зависимостей. Следующий пример демонстрирует применение объекта AggregateCacheDependency для добавления в кэш элемента, зависимого от элемента с именем Cachelteml и от файла с именем SourceFile.xml.
System.Web.Caching.CacheDependency dep1 =
new System.Web.Caching.CacheDependency(Server.MapPath("SourceFile.xml"));
string[] keyDependencies2 = { "Cachelteml" };
System.Web.Caching.CacheDependency dep2 =
new System.Web.Caching.CacheDependency(null, keyDependencies2);
System.Web.Caching.AggregateCacheDependency aggDep =
new System.Web.Caching.AggregateCacheDependency();
aggDep.Add(depl);
aggDep.Add(dep2);
Cache.Insert("FileCache", "CacheContents", aggDep);
Если кэшированный объект должен использоваться в течение определенного времени, после которого срок его действия истекает, передайте методу Cache.Insert срок действия. Объект DateTime.Now поддерживает методы для добавления к текущему времени заданного числа минут, как показано в следующем примере:
Cache.Insert("FileCache", "CacheContents", null, DateTime.Now.AddMinutes(IOd), TimeSpan.Zero);
Если наиболее востребованные кэшированные объекты нужно оставить в кэше на более долгий срок, укажите этот срок. Также можно задать время, в течение которого кэшированный объект останется в кэше после выполнения последнего запроса. В следующем примере показано, как сохранять объект в кэше в течение пяти минут с момента последнего запроса:
Cache.Insert("CacheItem7", "Cached Item 7",
null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));
Метод Cache.Add работает аналогично методу Cache.Insert, но возвращает заданное значение. Это облегчает использование метода Cache.Add при добавлении элемента в кэш, а также определяет еще одну переменную в той же строке кода.
Часто веб-браузеры после извлечения страницы сохраняют ее копию на локальном компьютере. При следующем обращении к той же странице браузер просто проверяет, действительна ли кэшированная версия страницы, и, если да, отображает ее пользователю. Это уменьшает время загрузки страницы и нагрузку на сервер, так как повторная обработка страницы не требуется.
Кэширование на стороне клиента требует, чтобы все пользователи получали динамически генерируемую версию страницы. Если один пользователь посетит веб-сайт 100 раз, веб-серверу потребуется сгенерировать эту страницу только один раз. Если же 100 пользователей посетят веб-сайт по одному разу, веб-серверу понадобится сгенерировать страницу все 100 раз.
Для повышения производительности в ASP.NET включена поддержка кэширования сгенерированных страниц. Оно позволяет хранять в памяти копии обработанных веб-страниц ASP.NET. При следующем обращении пользователя (того же или другого) ASP.NET вернет страницу почти мгновенно. Если обработка страницы занимает много времени (например, когда страница выполняет несколько запросов), этот прием значительно повышает производительность.
Однако кэширование страниц на сервере имеет свои недостатки. Если страница содержит динамическую информацию или специфична для пользователя, не следует вовзращать ее всем пользователям. К счастью, ASP.NET предоставляет возможность гибкой настройки, позволяющей удовлетворить почти любые требования. Можно даже реализовать пользовательские элементы управления для кэширования частей страницы, генерируя другие части динамически.
Кэширование страницы или пользовательского элемента управления относится к тому, может ли страница кэшироваться в устройстве в течение жизненного цикла отклика страницы. В число устройств, способных кэшировать страницы, входят веб-обозреватель, посылающий запрос, веб-сервер, отвечающий на этот запрос, и любые другие способные к кэшированию устройства, включенные в поток запроса или ответа, такие как
Когда веб-сервер посылает ответ на запрос запрашивающему веб-обозревателю, сервер включает в HTTP-заголовок ответа поле Cache-Control, определяющее устройства, в которых страница может кэшироваться. В зависимости от потребностей приложения можно определить, какие устройства должны, а какие не должны кэшировать отдельные страницы ASP.NET. Например, можно сделать так, чтобы параметры кэширования страницы входа пользователя в систему отличались от параметров кэширования страницы, на которой отображается содержимое каталога продукции. В случае страницы входа в систему в целях обеспечения безопасности будет, вероятно, разумным выполнять кэширование только на сервере, в то время как страницу каталога можно, видимо, кэшировать на любом способном к кэшированию устройстве.
Для страниц ASP.NET можно задать параметры кэширования с помощью значений в перечислении HttpCacheability. Значения перечисления указаны ниже. Первые три сопоставляются непосредственно с параметром HTTP-заголовка Cache-Control, последние три — это особые значения.
NoCache: указывает на то, что устройство, посылающее запрос, должно получать ответ от веб-сервера каждый раз.Public: позволяет кэшировать ответ по клиентам и в общих кэшах (Private: задает условие, при котором ответ может быть кэширован только на клиенте, и не может быть кэширован в общих кэшах (Server: задает кэширование ответа только на исходном сервере.ServerAndNoCache: применяет как значение Server, так и NoCache для указания того, что содержимое кэшируется на сервере, и всем остальным участникам явно запрещается кэшировать ответ.ServerAndPrivate: указывает на то, что ответ должен кэшироваться только на исходном сервере и запрашивающем клиенте; кэширование ответа прокси-серверами не разрешается.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.