Что такое код asp @language


Модель кода в Visual Studio

Пока что мы рассказали только о том, как проектируются простые веб-страницы, и из каких частей состоит интерфейс Visual Studio. Но прежде чем приступать к серьезному кодированию, нужно обязательно разобраться в некоторых базовых деталях модели кода ASP.NET. Поэтому в данной статье речь пойдет о доступных вариантах использования кода для программирования веб-страниц и том, как события ASP.NET привязываются к коду.

Visual Studio поддерживает две модели для кодирования веб-страниц:

Внутритекстовый код

Эта модель наиболее близка к традиционной модели ASP. Весь код и HTML-разметка сохраняются в одном файле с расширением .aspx. Код вставляется в один или более блоков сценария. Однако, хотя код и находится внутри блока сценария, поддержку функции IntelliSense и возможностей отладки он из-за этого не теряет, да и выполнять его линейным образом сверху вниз (подобно классическому ASP-коду) вовсе не обязательно. Вместо этого в нем по прежнему можно реагировать на события элементов управления и использовать подпрограммы.

Эта модель удобна, поскольку позволяет хранить все в одном месте безо всяких излишеств и потому часто применяется для кодирования простых веб-страниц.

Отделенный код (code-behind)

Эта модель подразумевает создание для каждой веб-страницы ASP.NET двух файлов: файла разметки (.aspx) с дескрипторами HTML и дескрипторами элементов управления, и файла кода (.cs) с исходным кодом страницы (при условии, что для программирования веб-страницы применяется язык C#). Такая модель обеспечивает более удобную схему организации, позволяя отделять пользовательский интерфейс от программной логики, что очень важно при создании сложных страниц.

Чтобы лучше понять, в чем состоит разница между моделями внутритекстового и отделенного кода, не помешает рассмотреть какую-нибудь простую страницу. В следующем примере показан код разметки для страницы по имени WebForm1.aspx, который отображает текущее время в текстовой метке и обновляет страницу всякий раз, когда в ней выполняется щелчок на кнопке. В случае использования модели внутритекстового кода эта страница будет выглядеть следующим образом:

Приведенные ниже коды файлов WebForm1.aspx и WebForm1.aspx.cs демонстрируют, как эта же страница будет поделена на две части в случае использования модели отделенного кода:

Единственное реальное отличие между примером с внутритекстовым кодом и примером с отделенным кодом состоит в том, что в последнем случае класс страницы больше не является неявным, а наоборот — объявляется как класс, содержащий все методы страницы.

В целом, модель отделенного кода предпочтительнее использовать для сложных страниц. Хотя модель внутритекстового кода является немного более компактной для небольших страниц, с увеличением объема кода и HTML-разметки с ними становится гораздо проще иметь дело по отдельности. Вдобавок модель отделенного кода является более чистой с концептуальной точки зрения, поскольку явно отображает созданный класс и импортированные пространства имен. И, наконец, она также еще позволяет веб-дизайнеру улучшать разметку страниц, не затрагивая код, написанный разработчиком.

Связывание файлов отделенного кода со страницами

Каждая страница .aspx начинается с директивы Page, указывающей язык для страницы и сообщающей ASP.NET местонахождение связанного кода (если только не используется встроенный код; в этом случае код содержится в том же самом файле).

Определять местонахождение связанного кода можно несколькими способами. В более старых версиях ASP.NET было распространено использование атрибута Src для указания на исходный код либо атрибута Inherits для указания на имя скомпилированного класса. Однако обе эти возможности имеют свои индивидуальные особенности.

Например, с помощью атрибута Inherits вы должны предварительно компилировать код, что довольно-таки утомительно (и может вызвать проблемы в командах разработчиков, поскольку стандартной возможностью является компиляция каждой страницы в отдельную DLL-библиотеку сборки). Но реальная проблема состоит в том, что оба подхода вынуждают объявлять каждый веб-элемент управления, который вы собираетесь использовать, с помощью переменной экземпляра. В результате получается большой объем стереотипного кода.

Эту проблему можно решить с помощью языкового средства, называемого , которое позволяет разбивать один класс на несколько файлов исходного кода. По сути, эта модель является такой же, как раньше, но объявления элементов управления переносятся в отдельный файл. Вас как разработчика не должен отвлекать этот файл — наоборот, вы можете просто получать доступ к своим элементам управления веб-страницы по именам. Вы наверняка заметили слово partial (частичный) в объявлении класса веб-страницы:

Когда есть такая часть инфраструктуры, все остальное несложно. Для указания используемого класса в странице .aspx применяется атрибут Inherits, а для указания файла, в котором содержится отделенный код — атрибут CodeBehind:

Обратите внимание, что Visual Studio использует несколько необычный синтаксис именования для файла исходного кода. Он содержит полное имя соответствующей веб-страницы, снабженное расширением .aspx и в конце сопровождаемое расширением .cs. Это просто соглашение, помогающее избежать проблемы при создании двух различных типов файлов отделенного кода (например, веб-страницы и веб-службы) с одинаковыми именами.

Связывание дескрипторов элементов управления с переменными страниц

При запросе веб-страницы в окне браузера ASP.NET сначала отыскивает связанный с ней файл кода, а затем генерирует объявление переменной для каждого присутствующего в ней серверного элемента управления (т.е. для каждого элемента, у которого имеется атрибут runat=»server»).

Например, предположим, что есть текстовое поле по имени txtInput:

ASP.NET сгенерирует для него следующее объявление переменной экземпляра и объединит его с классом страницы с помощью «волшебного» механизма частичных классов:

Конечно, вы этого объявления не увидите, поскольку оно является частью автоматически генерируемого кода, который создает компилятор .NET. Но вы будете полагаться на него всякий раз, когда будете писать строку кода, ссылающуюся на объект txtInput (для чтения или записи свойства):

Для обеспечения работоспособности этой системы файл разметки .aspx (с дескрипторами элементов управления) и файл .cs (с исходным кодом) должны поддерживаться в синхронизированном состоянии. Редактирование имен элементов управления в одном из них с помощью какого-нибудь другого инструмента (например, текстового редактора) приведет к разрыву связи и невозможности компиляции кода.

Кстати, вы заметите, что переменные элементов управления всегда объявляются с помощью ключевого слова protected (обозначающего защищенный доступ). Все дело в способе, которым ASP.NET использует наследование в модели веб-страниц. Существуют следующие уровни:

Класс Page, входящий в состав библиотеки классов .NET, определяет базовый набор функциональных возможностей, которые позволяют веб-странице обслуживать другие элементы управления, визуализировать HTML-код и предоставлять доступ к традиционным объектам в стиле ASP вроде Request, Response и Session.

Ваш класс отделенного кода (например, WebForm1) наследуется от класса Page, чтобы получить этот базовый набор функциональных возможностей веб-страницы ASP.NET.

Когда вы компилируете свой класс, ASP.NET добавляет в него кое-какой дополнительный код (с помощью «волшебного» механизма частичных классов). В этом генерируемом автоматически коде все имеющиеся на странице элементы управления определяются как защищенные переменные, чтобы можно было получать к ним доступ в коде.

Компилятор ASP.NET создает еще один класс для представления самой страницы .aspx. Этот класс наследуется от вашего специального класса отделенного кода (вместе с добавленным в него дополнительным кодом). Имя для этого класса ASP.NET создает просто путем добавления к имени класса отделенного кода суффикса aspx (например, WebForm1aspx). В этом классе содержится код, необходимый для инициализации страницы и всех ее элементов управления, а также окончательная версия визуализируемой HTML-разметки. Вдобавок экземпляр именно этого класса ASP.NET и будет создаваться при получении запросов на страницу.

Связывание событий с обработчиками событий

Большая часть кода страницы ASP.NET помещается внутрь обработчиков событий, реагирующих на события веб-элементов управления. С помощью Visual Studio добавить в код обработчик событий можно одним из трех способов:

Ввести его вручную. В этом случае метод добавляется непосредственно в класс страницы. Необходимо указать соответствующие параметры, чтобы сигнатура обработчика событий в точности соответствовала сигнатуре события, которое вы собираетесь обрабатывать. Также понадобится отредактировать дескриптор элемента управления, чтобы он связывал элемент управления с соответствующим обработчиком событий, добавив атрибут OnИмя_события.

Дважды щелкнуть на элементе управления в представлении визуального конструктора. В этом случае Visual Studio создаст обработчик события по умолчанию для этого элемента управления (и соответствующим образом настроит дескриптор элемента управления). Например, двойной щелчок на странице приводит к созданию обработчика события Page.Load, а двойной щелчок на кнопке — обработчика события Click.

Выбрать событие в окне Properties. Выделите элемент управления и щелкните на кнопке с изображением молнии в окне Properties. Вы увидите список всех событий, предоставляемых этим элементом управления. Дважды щелкните на поле рядом с событием, которое собираетесь обработать, и Visual Studio автоматически сгенерирует обработчик события в классе страницы и настроит дескриптор элемента управления:

Второй и третий способы наиболее удобны. С другой стороны, третий способ самый гибкий, поскольку позволяет выбрать уже созданный ранее метод в классе страниц. Просто выберите событие в окне Properties и щелкните на стрелке раскрывающегося списка справа. Вы увидите список методов класса, которые соответствуют сигнатуре, ожидаемой этим событием. Затем в списке можно выбрать метод для его подключения, как показано на рисунке выше.

В Visual Studio используется автоматическое образование цепочек событий, как показывает директива Page. Автоматическое образование цепочек событий основано на двух базовых принципах:

Все обработчики событий страницы подключаются автоматически на основании имени обработчика событий. Другими словами, метод Page_Load() автоматически вызывается во время загрузки страницы.

Все обработчики событий элемента управления подключаются с использованием атрибутов в дескрипторе элемента управления. Атрибут носит то же имя, что и событие, но имеет префикс On.


Например, если вы собираетесь обработать событие Click элемента управления Button, необходимо лишь установить атрибут OnClick в дескрипторе элемента управления с именем обработчика событий, который вы собираетесь использовать.

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

Этот подход служит для создания элементов управления «на лету».

Обработка HTTP_ACCEPT_LANGUAGE как?

20.01.2010, 23:32

Языки в $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]
Здраствуйте, подскажите пожалуйсто где мне найти список выводимых языков функцией $_SERVER, там все.

Обработка события Click, вставка html после генерации и обработка этого кода
Подскажите пожалуйста как заставить работать эту часть кода 18 строка .

обработка строк как сделать
2. Задано предложение, состоящее из слов, разделённым одним или несколькими пробелами. Найти самое.

автоматическая обработка почты, как?
Необходимо, чтобы моя БД автоматически обрабатывала письма определенного формата и заносила данные.

Обработка строки, как делается?
День добрый всем, а заранее и спасибо. Нужна ваша помощь, есть задача на обработку строки: .

Что такое код asp @language

Обратите внимание, что атрибут type не обязателен, но его нужно применять, если вы хотите обеспечить совместимость с XHTML.

Может показаться странным то обстоятельство, что в ASP.NET имеется возможность добавлять код JavaScript в ваши страницы. Однако JavaScript позволяет добавлять в ваши Web-страницы динамическое поведение на стороне клиента, что может быть очень полезным. Это особенно справедливо для программирования с применением Ajax, о чем будет сказано в главе 39.

Можно также создавать файлы ASP.NET в среде Visual Studio, которая отлично подойдет, если вы уже знакомы со средой программирования C#. Однако настройка проекта по умолчанию для Web-приложений в этой среде представляет собой несколько более сложную структуру, чем единственный файл .aspx. Это не будет большой проблемой, просто сместит акцент в сторону логики (больше программирования и меньше разработки для Web). По этой причине в данной главе мы будем использовать Visual Studio для программирования ASP.NET (вместо редактора Notepad).

Файлы .aspx также могут включать блоки кода, заключенные в дескрипторы . Однако определения функций и объявления переменных в них появляться не могут. Вместо этого сюда вставляется код, который выполняется немедленно при достижении такого блока, что удобно для вывода простого HTML-содержимого. Такое поведение подобно ASP-страницам старого стиля, но с одним важным отличием: код компилируется, а не интерпретируется. Это обеспечивает гораздо более высокую производительность.

Теперь приступим к реализации примера. В Visual Studio создадим новое Web-приложение, используя пункт меню FileNewWeb Site (ФайлНовыйWeb-сайт). В появившемся диалоговом окне выберем язык Visual C# и шаблон ASP.NET Web Site. В этот момент у нас появляется выбор. Visual Studio может создавать Web-сайты во многих разных местах:

□ на локальном Web-сервере IIS;

□ на локальном диске, настроенном для использования встроенного сервера Visual Studio Developer Web Server;

□ в любом месте, доступном по FTP;

□ на удаленном Web-сервере, поддерживающем серверные расширения Front Page Server Extensions.

Последние два варианта используют удаленные серверы, поэтому нам остается первых два. Вообще говоря, IIS — это лучшее место для инсталляции Web-сайтов ASP.NET, потому что, вероятно, это будет ближе всего к той конфигурации, которая потребуется при поставке Web-сайта заказчику. Альтернативный вариант с использованием встроенного Web-сервера отлично подходит для тестирования, но имеет ряд ограничений.

□ Web-сайт можно видеть только на локальном компьютере.

□ Доступ к таким службам, как SMTP, ограничен.

□ Модель безопасности отличается от принятой в IIS — приложение выполняется в контексте текущего пользователя, а не специфической учетной записи ASP.NET.

Последний пункт требует пояснения, потому что безопасность очень важна, когда дело касается доступа к базам данных или чего-то другого, что требует аутентификации. По умолчанию Web-приложения, исполняющиеся на сервере IIS, делают это от имени учетной записи с именем ASPNET на Web-серверах Windows XP или Windows 2000, или же от имени учетной записи NETWORK SERVICES — в Windows Server 2003. Это все настраивается, если используется IIS, но не в случае применения встроенного Web-сервера.

Для иллюстрации, и поскольку у вас может не быть инсталлированного сервера IIS на вашем компьютере, можно использовать встроенный Web-сервер. На этой стадии нам не нужно беспокоиться о безопасности, поэтому для простоты так и поступим.

Создадим новый Web-сайт ASP.NET с именем PCSWebApp1, используя расположение File System (Файловая система) и каталог C:\ProCSharp\Chapter37, как показано на рис. 37.2.

Рис. 37.2. Создание нового Web-сайта ASP.NET с именем PCSWebAppl

Через несколько мгновений среда Visual Studio .NET должна настроить следующее:

□ PCSWebApp1 — новое решение, содержащее приложение C# Web Application PCSWebAppl;

□ резервную папку App Data для данных, таких как файлы XML и файлы базы данных;

□ первую страницу ASP.NET в Web-приложении — Default.aspx;

□ Default.aspx.cs — отделенный код класса для Default.aspx.

□ Web.config — конфигурационный файл для Web-приложения.

Все это можно увидеть в проводнике решений Solution Explorer, как показано на

Файлы .aspx можно видеть в представлении дизайнера или исходного текста (HTML). Все выглядит так же, как и в Windows Forms (см. главу 3l). Начальное представление в Visual Studio — это либо представление дизайнера (design view), либо представление исходного текста для Default.aspx. (Переключаться между ними или просматривать их вместе в раздельном отображении можно с помощью кнопок внизу слева.) Представление дизайнера показано на рис. 37.4.

Ниже формы (пока пустой) вы можете видеть, где в HTML-коде формы позиционирован курсор. Здесь курсор находится

ASP — Создание страницы ASP


Файл Active Server Pages (ASP) представляет собой текстовый файл с расширением «.asp». Этот файл может содержать:

  • текстовые данные;
  • теги языка HTML;
  • серверные сценарии.

Для быстрого создания файла «.asp» достаточно переименовать HTML-файл, сменив расширение «.htm» или «.html» на «.asp». Если файл не содержит функций ASP, сервер просто выполняет эффективную отправку файла на компьютер пользователя. Эта черта обеспечивает дополнительные удобства для веб-разработчиков, которые могут давать файлам расширение «.asp», даже если не предполагают впоследствии включать в них функции ASP.

Для опубликования вновь созданного файла «.asp» в Интернете следует сохранить его в виртуальном каталоге веб-узла (последний должен иметь разрешение «Сценарий» или «Выполнение»). После этого можно обратиться к данному файлу в запросе, указав в обозревателе соответствующий адрес URL. (Необходимо помнить, что поскольку страницы ASP должны обрабатываться на сервере, ввод физического пути к файлу «.asp» в данном случае недопустим.) Переданный сервером файл при просмотре в обозревателе представляет собой страницу HTML. В этом есть определенный смысл, так как перед отправкой файла на сервере выполняется его синтаксический анализ и выполняются все серверные сценарии ASP. Поэтому пользователи всегда получают обычные файлы HTML.

Файлы «.asp» могут создаваться в любом текстовом редакторе. По мере накопления опыта более удобной может оказаться работа в специальном редакторе, включающем дополнительную поддержку ASP, таком как Microsoft® Visual InterDev™. (Дополнительные сведения см. на веб-узле Microsoft Visual InterDev по адресу http://msdn.microsoft.com/vinterdev/.)

Добавление команд в сценарий для сервера

Серверный сценарий состоит из последовательности инструкций, обеспечивающих поочередное поступление команд на веб-сервер. (Разработчикам веб-узлов могут быть хорошо знакомы клиентские сценарии, выполняющиеся в веб-обозревателе.) В файлах «.asp» для обособления сценариев от текстовых данных и команд HTML используются разделители. Разделителем является символ или последовательность символов, которыми обозначается начало или конец раздела. Язык HTML в качестве таких разделителей использует символы ( ), между которыми располагаются теги HTML.

Илон Маск рекомендует:  Шаблон сайта погода HTML, CSS, 1 страница

В ASP команды сценариев заключаются в разделители . В разделителях можно указывать любые допустимые команды используемого языка сценариев. Ниже показан пример простой страницы HTML с командами сценария.

Функция VBScript Now() возвращает текущие дату и время. Во время обработки данной страницы веб-обозреватель заменит текущими значениями даты и времени и возвратит страницу обозревателю со следующим результатом:

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

Разработчикам клиентских сценариев хорошо знаком HTML-тег

Что такое код asp @language

Обновлен: Ноябрь 2007

Модель однофайловой страницы ASP.NET подобна структуре страницы Active Server Pages (ASP) в том, что блоки сценариев, содержащие код, располагаются до HTML и в HTML могут применяться специальные теги разметки. В этом разделе освещаются вопросы, связанные с обновлением кода ASP до ASP.NET.

Модель страницы с выделенным кодом ASP.NET разделяет код блока сценария от HTML и тегов разметки ASP.NET. Дополнительные сведения см. в разделе Общие сведения о синтаксисе веб-страниц ASP.NET . Дополнительные сведения о синтаксисе привязки данных, позволяющем привязывать значения свойств элементов управления к данным, см. в разделе Общие сведения о выражениях для привязки данных .

Все процедуры и глобальные переменные ASP.NET должны объявляться внутри блоков

Функции отрисовки не поддерживаются в ASP.NET. Используя более старые версии ASP, можно вставить литерал HTML в текст процедуры, как показано в следующем примере кода.

Этот код приведет к ошибке на странице ASP.NET. Для ASP.NET код должен быть написан следующим образом.

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

В ASP код помещался между тегами и обработка страницы начиналась с первого оператора, следующего за первым тегом . В ASP.NET любой код, подлежащий обработке непосредственно после загрузки страницы, должен помещаться во встроенном событии Page_Load. Как и раньше, код можно писать в блоках , но он будет выполняться во время отрисовки (сверху вниз, как в ASP) после загрузки страницы. Если нужно выполнить код инициализации, его следует поместить в событие Page_Load, которое возникает сразу же после загрузки страницы обработчиком ASP.NET, как показано в следующем примере кода.

Связанное встроенное событие Page_Unload всегда является последним событием, вызываемым в течение жизненного цикла страницы, и может быть использовано для выполнения любого кода очистки страницы.

Компиляция страниц ASP.NET: генерация кода

Сейчас пришла пора разобраться с тем, что происходит с кодом от момента написания ASPX/ASCX- разметки и CS-кода до момента их физического выполнения в виде некоторого скомпилированного кода на сервере.

Генерация полного исходного кода

Начнём с простой, и, в принципе, известной особенности ASP.NET 2.0: частичной компиляции страниц. Как мы знаем, частичные (partial) классы — это синтаксический сахар для разнесения исходного кода класса в несколько разных файлов. Это особенно удобно, когда одна часть кода класса генерируется автоматически некоторой утилитой, а другая — пишется вручную программистом. Так как модифицировать автогенерённый код — очень плохая практика (ведь последующая перегенерация уничтожит все такие изменения), в таких случаях утилита генерирует классы как частичные, и программист может спокойно добавить нужный функционал «рядом», в соседнем файле, не затрагиваемом перегенерацией.
Именно так и поступает среда ASP.NET, когда сталкивается с парой ASPX (или ASCX,ASHX,ASAX) + CS. Пусть есть пара описаний — ASPX-страница с серверным кодом и элементом управления и её файл отделённого кода:

SomePage.aspx:

SomePage.aspx.cs:

  1. using System ;
  2. using System.Web ;
  3. using System.Web.UI ;
  4. using System.Web.UI.WebControls ;
  5. public partial class SomePage : Page
  6. <
  7. protected void Page_PreRender ( object sender, EventArgs e )
  8. <
  9. lblHello. Text = «Hello from code» ;
  10. >
  11. >

Рассмотрим, как данная страница превращается в код.

В чем разница между PHP и ASP?

ASP — это скомпилированный язык или нет? конечно да. PHP — это интерпретируемый язык. Я также разработал приложение ASP с помощью VS 2008 IDE. Но есть большая разница между ASP и PHP. Каковы различия?

ASP — это скомпилированный язык или нет? конечно.

Первая причина, по которой ASP не является скомпилированным языком, заключается в том, что такой компиляции не существует. Язык не компилируется и не интерпретируется. Язык просто есть. Язык — это совокупность абстрактных математических правил. Интерпретация или компиляция являются чертами языковой реализации, они не имеют никакого отношения к языку. Каждый язык может быть реализован либо компилятором, либо интерпретатором; большинство современных высокопроизводительных языковых реализаций фактически используют оба варианта и переключаются между ними, в зависимости от того, какой из них быстрее в конкретном контексте.

Вторая причина, почему ASP не является скомпилированным языком, заключается в том, что он не является языком. Это структура. Вы можете написать код для ASP на любом языке, для которого существует механизм ActiveScripting (например, Ruby через ActiveRuby), но чаще всего нужно писать код в VBScript или JScript.

Это приводит нас к третьей причине: реализации VBScript и JScript, которые поставляются с Windows, а также ActiveRuby и все другие механизмы ActiveScripting, которые, как я знаю, являются чистыми интерпретаторами, они не могут скомпилировать. Итак, хотя я написал выше, что любой язык может быть реализован с использованием либо компилятора, либо интерпретатора, все механизмы выполнения языка, поддерживаемые ASP, интерпретируются.

PHP — это интерпретируемый язык.


Опять же: нет, это не так.

Причина одна такая же, как и выше: просто нет такой вещи, как интерпретируемый язык.

И, в отличие от ASP, подавляющее большинство реализаций PHP действительно содержат компилятор. Некоторые даже являются чистыми компиляторами, у них даже нет переводчика. (Phalanger, например, всегда компилируется прямо на CIL, без какой-либо интерпретации). P8 может либо интерпретировать, либо компилировать прямо на байт-код JVM или оба: интерпретировать, собирать данные профиля во время интерпретации, а затем JIT-компилировать в байт-код JVM.)

Но есть большая разница между ASP и PHP. Каковы различия?

ASP — это независимая от языка структура, PHP — это язык. Это довольно большая разница. (На самом деле PHP содержит один маленький бит, который был бы на других языках, которые обычно считаются частью веб-инфраструктуры: интеграция с веб-сервером.)

PHP очень портативен в разных операционных системах, архитектурах процессоров и веб-серверах: есть реализация PHP почти для каждой среды исполнения: от JVM до CLI до Parrot, чтобы запускаться изначально практически во всех операционных системах под солнцем. ASP довольно тесно связан с Microsoft Internet Information Server, Microsoft Windows и платформой для ПК. (Были некоторые другие реализации, но они довольно неясны и больше не доступны.)

PHP имеет множество различных реализаций (Phalanger, Quercus, Pipp, PHC, P8, Zend), ASP имеет только один. (Как я уже сказал, два других больше недоступны.)

Подавляющее большинство реализаций PHP — это Open Source (я думаю, что единственным исключением является P8), а все три реализации ASP, о которых я знаю, являются собственностью.

Что такое код asp @language

ASP – веб-технология, которую в декабре 1996 года представила компания Microsoft для возможности создания интерактивных веб-приложений. ASP – это аббревиатура от Active Server Pages, что переводится, в соответствии с логикой технологии, как «активные серверные страницы». Важно понимать, что ASP не является языком программирования, она только позволяет встраивать в обычный HTML-код сценарии на каком-либо скриптовом языке(Visual Basic Script или Java Script). Таким образом, за счет использования ASP на веб-страницы могут встраиваться элементы с заранее настроенным программным управлением.

Изначально в любом текстовом редакторе создается исходный код программы. По умолчанию используется Visual Basic – если ничего дополнительно не указывать, система будет считать, что программа написана именно на этом языке. Затем файл, которому задается расширение .asp, выкладывается в каталог, имеющий права на выполнение, чтобы сервер мог исполнить этот файл, когда браузер пользователя запросит его. Для пользователя этот файл не виден, поскольку сначала загруженный файл с программой интерпретирует сервер таким образом, что программный код будет отображаться непосредственно в HTML-коде страницы, в скобках вида скобки .

ASP просуществовала в чистом виде до 2002 года. 1 января этого года увидел свет релиз ASP.NET, технологии, в которой были учтены ошибки и недочеты ASP. Устранить их получилось благодаря тому, что новая технология была основана на более функциональной платформе Microsoft .NET.

Синонимы: нет
Все термины на букву «A»
Все термины в глоссарии

Код ASP.NET компилируется, а не интерпретируется

СОДЕРЖАНИЕ

1 Основи Internet технологій, використання їх як платформи для WEB-застосувань 2

1.1 Сучасні Інтернет технології побудови систем з архитектурою клієнт-сервер. 2

1.2 Архітектура Web-застосування з базою даних в технології ASP.NET 4

2 Історія компонентних технологій Microsoft. Хронологія розвитку і основні переваги платформи Microsoft .NET. 7

2.1 Історія компонентних технологій Microsoft 7

2.2 Хронологія розвитку платформи Microsoft.NET. 10

3 Архітектура платформи Microsoft .NET. 16

3.1 Архітектура .NET Framework. 19

3.2 Технології платформи Microsoft.NET. 23

3.3 Загальномовне виконуюче середовище Common Language Runtime(CLR) .Схема компіляції .NET-додатків. 28

3.4 Cтруктура CLR-модулів, збірка модулів. 31

3.5 Бібліотека класів .NET Framework Class Library(FCL). Основні простори імен FCL 33

3.6 Особливості та переваги ASP.NET. 35

4 ASP.NET Web Forms. 43

4.1 Модель програмування ASP.NET Web Forms. 43

4.2 Модель зворотного виклику. 50

4.3 Сторінкові директиви в ASP.NET Web Forms. 53

4.4 Серверні елементи управління. 57

4.5 Модель подій та життєвий цикл сторінок. 70

4.6 Збереження стану застосування. 80

4.6.1 Рядок запиту- QueryString. 80

4.6.2 Стан виду ViewState. 81

4.6.3 Стан сеансу — Session. 83


4.6.4 Стан застосування Application. 85

5 Технологія ADO.Net. 87

5.1 Переваги і нововведення ADO.Net. 87

5.2 Типи сховищ даних і рівні моделі постачальників. 89

5.3 Сполучені і роз’єднані оточення в ADO.Net 92

5.4 Підключені та автономні класи і об’єкти. 93

1 Основи Internet технологій, використання їх як платформи для WEB-застосувань

1.1 Сучасні Інтернет технології побудови систем з архитектурою клієнт-сервер.

Web-приложения представляют собой особый тип программ, построенных по архитектуре «клиент-сервер». Особенность их заключается в том, что само Web-приложение находится и выполняется на сервере — клиент при этом получает только результаты работы. Работа приложения основывается на получении запросов от пользователя (клиента), их обработке и выдачи результата. Передача запросов и результатов их обработки происходит через Интернет ( рис.1.1).

Рисунок 1.1 — Архитектура Web-застосування

Отображением результатов запросов, а также приемом данных от клиента и их передачей на сервер обычно занимается специальное приложение — браузер (Internet Expolrer, Mozilla, Opera и т. д.). Как известно, одной из функций браузера является отображение данных, полученных из Интернета, в виде страницы, описанной на языке HTML, следовательно, результат, передаваемый сервером клиенту, должен быть представлен на этом языке.

На стороне сервера Web-приложение выполняется специальным программным обеспечением (Web-сервером), который и принимает запросы клиентов, обрабатывает их, формирует ответ в виде страницы, описанной на языке HTML, и передает его клиенту. Одним из таких Web-серверов является Internet Information Services (IIS) компании Microsoft. Это единственный Web-сервер, который способен выполнять Web-приложения, созданные с использованием технологии ASP.NET.

В процессе обработки запроса пользователя Web-приложение компонует ответ на основе исполнения программного кода, работающего на стороне сервера, Web-формы, страницы HTML, другого содержимого, включая графические файлы. В результате, как уже было сказано, формируется HTML-страница, которая и отправляется клиенту. Получается, что результат работы Web-приложения идентичен результату запроса к традиционному Web-сайту, однако, в отличие от него, Web-приложение генерирует HTML-код в зависимости от запроса пользователя, а не просто передает его клиенту в том виде, в котором этот код хранится в файле на стороне сервера. То есть Web-приложение динамически формирует ответ с помощью исполняемого кода — так называемой исполняемой части.

За счет наличия исполняемой части, Web-приложения способны выполнять практически те же операции, что и обычные Windows-приложения, с тем лишь ограничением, что код исполняется на сервере, в качестве интерфейса системы выступает браузер, а в качестве среды, посредством которой происходит обмен данными, — Интернет. К наиболее типичным операциям, выполняемым Web-приложениями, относятся:

— прием данных от пользователя и сохранение их на сервере;

— выполнение различных действий по запросу пользователя: извлечение данных из базы данных (БД), добавление, удаление, изменение данных в БД, проведение сложных вычислений;

— аутентифицирование пользователя и отображение интерфейса системы, соответствующего данному пользователю;

— отображение постоянно изменяющейся оперативной информации и т. д.

Наиболее актуальна и динамично развивается в современных Веб-приложениях сервис-ориентированная архитектура.

Сервис-ориентированная архитектура (SOA, service-oriented architecture) – модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами.

Веб-сервисы – не зависящие от платформы, объектной модели и клиента программные компоненты, которые можно вызывать из клиентских Веб-приложений (а также из самих Веб-сервисов) через основанный на протоколе HTTP и языке XML протокол SOAP. Для описания Веб-сервисов используется XML-подобный язык WSDL, а для организации реестров Веб-сервисов, в которых разработчики и компании могут искать необходимые им сервисы, а также публиковать данные о своих сервисах – интерфейс UDDI.

Сервис-ориентированная архитектура Интернет систем основополагающая в реализации принципов технологии облачных вычислений.

1.2 Архітектура Web-застосування з базою даних в технології ASP.NET

ASP.NET — это платформа для создания Web-приложений и Web-сервисов, работающих под управлением IIS. Сегодня существуют другие технологии, позволяющие создавать Web-приложения. К ним относятся, прежде всего, очень популярные сегодня языки PHP и PERL, более старая и менее популярная технология CGI и т. д. Однако ASP.NET отличается от них высокой степенью интеграции с серверными продуктами, а также с инструментами Microsoft для разработки доступа к данным и обеспечения безопасности.

Кроме того, ASP.NET позволяет разрабатывать Web- и Windows-приложения, используя очень похожие технологические цепочки, одинаковые языки программирования, технологии доступа к данным. Более того, базовые языки программирования, с помощью которых сегодня возможна разработка Web-приложений, являются полностью объектно-ориентированными, что делает разработку исполнимой части, а также ее модификацию, обслуживание, отладку и повторное использование гораздо более простым занятием, чем в других технологиях. Существует достаточно большой перечень сильных сторон использования ASP.NET для создания сложных Web-приложений

Архитектура Web-приложения ASP.NET представлена на рисунке 1.2

Рис. 1.2 — Архітектура Web-застосування ASP.NET

ASP.NET функционирует исключительно на серверах Windows, так как требует наличия IIS. Для создания Web-приложений, не требующих IIS, а использующих, например, Web-сервер Apache и работающих на серверах под управлением операционных систем, отличных от Windows, применяются другие технологии.

Важным моментом в понимании архитектуры ASP.NET является тот факт, что она является частью инфраструктуры .NET Framework.

Целью данного курса является изучение одной из технологии создания Web приложения ASP.NET

2 Історія компонентних технологій Microsoft. Хронологія розвитку і основні переваги платформи Microsoft .NET.

2.1 Історія компонентних технологій Microsoft

Рассмотрим историю недавнего прошлого и ключевые технологии. Это следующие:

— Microsoft Visual Studio 6.0 и COM

Технология OLE (Object Linking and Embedding), так изначально называлась технология COM) появилась в начале 90-х. Технология OLE явилась большим шагом навстречу переиспользованию компонентов на уровне бинарного кода и переросла в дальнейшем в COM и ActiveX. Надо сказать, тут Microsoft породила существенную терминологическую путаницу, и разобраться, какая из этих аббревиатур какое понятие означает, довольно сложно. Будем рассматривать все эти три аббревиатуры вместе: OLE/COM/ActiveX, а для краткости называть COM (Component Object Model).

«COM – это метод разработки программных компонентов, небольших двоичных исполняемых файлов, которые предоставляют необходимые сервисы приложениям, операционным системам и другим компонентам. Разработка компонентов COM подобна разработке динамического объектно-ориентированного API. Компоненты COM объединяются друг с другом для создания приложений или систем компонентов. Компоненты можно отключать и менять во время выполнения, без перекомпиляции или перекомпоновки приложения»

С помощью COM появилась возможность переиспользовать готовые объекты, встраивая одни объекты в другие; в частности, хрестоматийный пример, который всегда приводился для объяснения COM, повествовал о том, как встроить таблицу Excel в документ Word. Собственно говоря, отсюда пошло первое название этой технологии, содержащее слово «встраивание» (embedding).

Технология DCOM (Distributed Component Object Model) , распределенная версия COM — появилась вслед за COM, в 1996 году в Windows NT 4.0 Несмотря на то, что с помощью DCOM стало возможным переиспользовать компоненты, находящиеся на других компьютерах, конфигурировать и настраивать приложения, использующие DCOM, было весьма сложно. Кроме того, DCOM использовал механизм RPC, что приводило со сложностями, связанными с файрволами. К минусам можно также отнести отсутствие DCOM на Windows 95/98.


Microsoft Visual Studio 6.0 и COM — вышла в 1998-м году. Она включила в себя IDE для нескольких языков, таких как Visual C++ и Visual Basic. Довольно долго этот пакет являлся рабочим инструментом для разработчиков в мире Microsoft. Поддержка COM была интегрирована в Visual Studio, особенно просто общаться с COM было возможно из Visual Basic. Однако Visual Basic не годится для системного программирования, стандартом де-факто для которого является до сих пор С++. Работа же с COM из Visual C++ была весьма нетривиальной. Вообще, программируя COM-приложения, программист сталкивался со слишком большим количеством технических тонкостей, отвлекающих его от непосредственной задачи. Скажем, различия в системе типов между разными языками, например, индексация массивов и строк, требовали написания специальных конверторов.

Илон Маск рекомендует:  Кэширование в PHP

Таким образом, несмотря на шаг вперед в интеграции между языками и поддержке этой интеграции в продукте Visual Studio 6.0, у программистов существовали немалые проблемы.

Перечислим основные недостатки COM:

— Для программирования COM требовалось быть тонким знатоком ее устройства, в частности, механизмов ручного подсчета ссылок, маршалинга (передачи между границами процессов) сложных типов, различия делегирующего и неделегирующего IUnknown и т.п., что определяло значительную сложность этого процесса.

— Физическая природа контрактов. В модели СОМ контракт компонента является физическим т.е. двоичным контрактом. Следовательно, компонент СОМ предъявляет жесткие требования к межкомпонентным вызовам. Для правильной работы контракта СОМ необходимы точные смещения виртуальной таблицы для каждого метода. Контракт СОМ требует точной дисциплины стека, используемого при вызове методов, точного смещения каждой структуры данных, передаваемой в качестве фактического параметра метода, точной информации о механизме размещения памяти, используемом вызываемым методом, а также точного формата ссылки на объект. В терминах технологии СОМ контракт компонента — это всего лишь протокол формирования кадров стека, полностью лишенный семантики приложения.

— Интенсивное использование реестра.

— Отсутствие общей системы типов — у разных языков разные типы, что приводило к тонким ошибкам, в частности, при работе с объектами С++ из VB приходилось писать код для адаптации некоторых типов.

— По сути, ориентация на С++.

— Отсутствие хорошей среды разработки

В конце 96 года появился COM+. Под этой аббревиатурой подразумевалось использование DCOM вместе с MTS (Microsoft Transaction Server). COM+ стал следующим шагом в сторону решения сложных инфраструктурных вопросов. В COM+, построенной на основе COM, появилось автоматическое управление транзакциями, пулы ресурсов и пулы потоков, защита на основе ролей и т.д. Именно в COM+ появилось аспектно-ориентированное программирование.

К недостаткам DCOM и COM+/MTS можно отнести еще большую сложность, чем сложность COM. Вместе с тем COM+ по сути является прародителем .NET. Существенная часть функциональности COM+ перешла в .NET под именем Enterprise Services.

2.2 Хронологія розвитку платформи Microsoft.NET

.NET – не только следующий шаг Microsoft в направлении компонентной разработки, но целая платформа, помогающая в борьбе за удешевление разработки по всем фронтам:

— использование языков более высокого уровня: C#, VB.NET;

— использование более мощных инструментов поддержки разработки — современная среда разработки Visual Studio.NET

— увеличение объема переиспользования собственного кода — новая технология компонентной разработки, основанная на метаданных

— увеличение объема использования сторонних библиотек — мощная библиотека классов FCL

Хронология событий примерно такая:

CTP (Community Technology Preview)

Visual Studio 7.0 Beta 1

VS Beta 2, Release Candidate 1

Приняты стандарты C# и CLI

Хронология событий выпуска последующих версий приведена в таблице 1.1

Перечислим основные преимущества платформы Microsoft.NET перед предыдущими технологиями компании:

— Единая программная модель

— Упрощенная модель программирования

— Автоматическое управление версиями

— Автоматическое управление ресурсами

— Проверка безопасности типов

— Единая среда разработки

— Возможность отладки многоязыковых приложений

— Единая модель обработки ошибок

— Современная модель безопасности

— Интеграция языков программирования

— Стандартизация основных частей .NET

Таблица 1.1 – Список версий .NET Framework

Версия CLR Номер версии Дата выхода Visual Studio
1.0 1.0 1.0.3705.0 1 мая 2002 г Visual Studio .NET
1.1 1.1 1.1.4322.573 1 апреля 2003 г Visual Studio .NET 2003
2.0 2.0 2.0.50727.42 11 июля 2005 г Visual Studio 2005
3.0 2.0 3.0.4506.30 6 ноября 2006 г Visual Studio 2005 + расширения
3.5 2.0 3.5.21022.8 9 ноября 2007 г Visual Studio 2008
4.0 4.0.30319.1 12 апреля 2010 г Visual Studio 2010
4.5 4.5.50709.17929 15 августа 2012 г Visual Studio 2012
4.5.1 4.5.50938.18408 17 октября 2013 г Visual Studio 2013
4.5.2 4.5.51209.34209 5 мая 2014 г Visual Studio 2013
4.6 4.6.1038.0 20 июля 2015 г Visual Studio 2015
4.6.1 4.6.23123.0 17 ноября 2015 г Visual Studio 2015 Update 1

Версия .NET Framework 3.0 улучшила возможности NET Framework 2.0 добавив 4 новые подсистемы:


— Windows Presentation Foundation (WPF) – новая подсистема интерфейса пользователя и программный интерфейс на основе XML и векторной графики.

— Windows Workflow Foundation (WF) – новая идеология программирования, предлагаемая компанией Microsoft, основанная на бизнес-сущностях и потоках.

— Windows Communication Foundation (WCF) – сервис-ориентированная система обмена сообщениями, которая позволяет программам взаимодействовать локально или удаленно подобно веб-сервисам.

— Windows CardSpace (WCS) – это способ безопасной идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей.

Рисунок 1.3 – Нововведения .NET Framework

Версия .NET Framework 3.5 предоставила новые возможности технологий из версий 2.0 и 3.0 и дополнительные технологии в виде новых сборок. В .NET Framework 3.5 впервые представлены следующие технологии:

— новые компиляторы для C#, Visual Basic, C++ и J#;

В .NET Framework 3.5 с пакетом обновления 1 (SP1) входят следующие технологии (рис. 1.3):

— платформа динамических данных ASP.NET;

— ADO.NET Entity Framework;

— поддержка поставщика данных SQL Server 2008;

— поддержка .NET Framework Client Profile.

Вышедшая Версия.NET Framework 4.0 получила следующие нововведения (рис.1.4):

— нововведения в CLR, а также в библиотеке классов самой платформы;

— усовершенствования в языках программирования Visual Basic и C#;

— улучшения в моделировании,а также в доступе к данным;

— усовершенствования в ASP.NET;

— улучшения в системе для построения клиентских приложений;

— улучшения в WF(Windows Workflow);

— нововведения в платформе для построения распределенных систем;

— улучшение эффективности параллельного программирования.

Основные новые возможности версии.NET Framework 4.5 и нововведения .NET 4.5.1 весьма важны для реализации Microsoft Azure:

— поддержка разработки приложений .NET для магазина Windows;

— поддержка разработки переносимых библиотек классов, в том числе — для Windows Phone и для магазина Windows;

— поддержка больших массивов, более 2 Гб;

— фоновая сборка мусора для серверов;

— фоновая JIT-компиляция для многоядерных процессоров;

Рис. 1.4 — Нововведения .NET Framework 4.0

— улучшенная производительность при извлечении ресурсов приложений;

— новые возможности для параллельных вычислений.

— автоматическая переадресация привязки для сборок, в Visual Studio 2013, при компиляции приложения, ориентированного на .NET Framework 4.5.1, в файл конфигурации приложения можно добавить переадресации привязок, если приложение или его компоненты ссылаются на несколько версий одной и той же сборки. Можно также включить эту функцию для проектов, предназначенных для более старых версий платформы .NET Framework;

— возможность сбора диагностической информации, чтобы помочь разработчикам повысить производительность серверных и облачных приложений;

— возможность явно уплотнять кучу больших объектов во время сборки мусора;

— дополнительные улучшения производительности, например, приостановка приложений ASP.NET, усовершенствования многоядерного JIT и более быстрый запуск приложений после обновления платформы .NET Framework.

3 Архітектура платформи Microsoft .NET

Microsoft.NET Framework – это платформа для создания, развертывания и запуска web-сервисов и приложений. Она представляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с применениями и сервисами следующего поколения, а также решать задачи развёртывания и использования интернет-приложений.

Концепция Microsoft.NET – целостный взгляд на новую эпоху в развитии информационных систем и Интернета, когда самые разные программные приложения доставляются пользователями как сервисы, взаимодействуют между собой в соответствии с конкретными потребностями бизнеса, доступны на самых разных устройствах от высокопроизводительного кластера до мобильного телефона, имеют понятный и полностью адаптирующийся к потребностям каждого пользователя интерфейс. Официальный старт платформы Microsoft.NET состоялся 13 февраля 2002 года. В этот день на грандиозной презентации в Сан-Франциско были представлены рабочие версии двух ключевых элементов платформы:

— операционной среды .NET Framework;


— инструментального набора Visual Studio.NET.

Структура и логика работы платформы Microsoft.NET представлена на рисунке 3.1.

На верхнем уровне архитектуры .NET находится совершенно новое средство разработки под названием Visual Studio.NET(VS.NET),которое делает возможным быструю разработку различных приложений и веб-сервисов. VS.NET представляет собой интегрированную среду разработки (Integrated Development Environment, IDE), поддерживающею четыре различных языка и такие средства, как межъязыковая отладка и редактор XML-схем, при этом каждый язык взаимодействует с .NET Framework через общий языковый интерфейс.

В центре .NET располагается Microsoft .NET Framework, который фактически представляет собой единую среду исполнения программ и поддержки их разработки, в которой собраны базовые классы для всех языков программирования, реализованные в виде библиотеки ядра System, а также большого числа специализированных библиотек. Над ними располагается набор средств формирования исполняемых модулей различного типа, единый для разных языков.

Рисунок 3.1- Структурная схема .NET Framework.

На нижнем уровне находится собственно операционная система, поверх которой и функционирует Microsoft .NET Framework

С одной стороны, такой механизм позволил достаточно просто подключать к рассматриваемой среде различные языки. В настоящее время о создании таких средств COBOL, FORTRAN, Perl и т.п. объявил целый ряд независимых разработчиков. В тоже время почти у всех этих инструментов есть альтернативные варианты среды, которые работают вне VS.NET и напрямую взаимодействуют с .NET Framework.

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

Microsoft .NET поддерживает не только языковую независимость, но и языковую интеграцию. Это означает, что разработчик может наследовать от классов, обрабатывать исключения и использовать преимущества полиморфизма при одновременной работе с несколькими языками. Платформа .NET Framework предоставляет такую возможность с помощью спецификации CTS (Common Type System — общая система типов), которая полностью описывает все типы данных, поддерживаемые средой выполнения, определяет, как одни типы данных могут взаимодействовать с другими и как они будут представлены в формате метаданных .NET. Например, в .NET любая сущность является объектом какого-нибудь класса, производного от корневого класса System.Object. Спецификация CTS поддерживает такие общие понятия, как классы, делегаты (с поддержкой обратных вызовов), ссылочные и размерные типы.

Важно понимать, что не во всех языках программирования .NET обязательно должны поддерживаться все типы данных, которые определены в CTS. Спецификация CLS (Common Language Specification — общая языковая спецификация) устанавливает основные правила, определяющие законы, которым должны следовать все языки: ключевые слова, типы, примитивные типы, перегрузки методов и т. п. Спецификация CLS определяет минимальные требования, предъявляемые к языку платформы .NET. Компиляторы, удовлетворяющие этой спецификации, создают объекты, способные взаимодействовать друг с другом. Любой язык, соответствующий требованиям CLS, может использовать все возможности библиотеки FCL (Framework Class Library — библиотека классов платформы). CLS позволяет и разработчикам, и поставщикам, и производителям программного обеспечения не выходить за пределы общего набора правил для языков, компиляторов и типов данных.

3.1 Архітектура .NET Framework

Платформа .NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows.

Собственно .NET Framework состоит из трёх основных частей:

— среда выполнения программ CLR (Common Language Runtime — общеязыковая среда выполнения), в которой выполняются объекты, построенные на этой платформе;

— иерархическое множество унифицированных библиотек классов FCL(Framework Class Labrary) для построения Web-служб и приложений, работающих в Windows и в Интернете;

— набор Framework уровня приложений;

— Отношения архитектурных компонентов платформы .NET Framework с концептуальной точки зрения представлены на рисунке 3.2.

Рисунок. 3.2. — Архитектура .NET Framework

Самым важным компонентом платформы .NET Framework является CLR (Common Language Runtime), предоставляющая среду, в которой выполняются программы. Главная ее роль заключается в том, чтобы обнаруживать и загружать типы .NET и производить управление ими в соответствии с полученными командами. CLR включает в себя виртуальную машину, во многих отношениях аналогичную виртуальной машине Java. На верхнем уровне среда активизирует объекты, производит проверку безопасности, размещает объекты в памяти, выполняет их, а также запускает сборщик мусора.

Под сборкой мусора понимается освобождение памяти, занятой объектами, которые стали бесполезными и не используются в дальнейшей работе приложения. В ряде языков программирования (например, C/C++) память освобождает сам программист, в явной форме отдавая команды как на создание, так и на удаление объекта. В этом есть своя логика. Однако в CLR задача сборки мусора и другие вопросы, связанные с использованием памяти решается в нужное время и в нужном месте исполнительной средой, ответственной за выполнение вычислений.

На на рис.3.2. над уровнем CLR находится набор базовых классов платформы, над ним расположены слой классов данных и XML, а также слой классов для создания Web-служб (Web Services), Web- и Windows-приложений (Web Forms и Windows Forms). Собранные воедино, эти классы известны под общим именем FCL (Framework Class Library). Это одна из самых больших библиотек классов в истории программирования. Она открывает доступ к системным функциям, включая и те, что прежде были доступны только через API Windows, а также к прикладным функциям для Web-разработки (ASP.NET), доступа к данным (ADO.NET), обеспечения безопасности и удаленного управления. Имея в своем составе большое количество классов, библиотека FCL способствует быстрой разработке настольных, клиент-серверных и других приложений и Web-служб.

Набор базовых классов платформы — нижний уровень FCL — не только прячет обычные низкоуровневые операции, такие как файловый ввод/вывод, обработка графики и взаимодействие с оборудованием компьютера, но и обеспечивает поддержку большого количества служб, используемых в современных приложениях таких как управление безопасностью, поддержка сетевой связи, управление вычислительными потоками, работа с отражениями и коллекциями и т. д..

Над этим уровнем находится уровень классов, которые расширяют базовые классы с целью обеспечения управления данными и XML. Классы данных позволяют реализовать управление информацией, хранящейся в серверных базах данных. В число этих классов входят классы SQL (Structured Query Language, язык структурированных запросов), дающие программисту возможность обращаться к долговременным хранилищам данных через стандартный интерфейс SQL. Кроме того, набор классов, называемый ADO.NET, позволяет оперировать постоянными данными. Платформа .NET Framework поддерживает также целый ряд классов, позволяющих манипулировать XML-данными и выполнять поиск и преобразования XML.

Базовые классы, классы данных и XML расширяются классами, предназначенными для построения приложений на основе трех различных технологий: Web Services (Web-службы), Web Forms (Web-формы) и Windows Forms (Windows-формы). Web-службы включают в себя ряд классов, поддерживающих разработку облегченных распределяемых компонентов, которые могут работать даже с брандмауэрами и программами трансляции сетевых адресов (NAT). Поскольку Web-службы применяют в качестве базовых протоколов связи стандартные протоколы HTTP и SOAP, эти компоненты поддерживают в киберпространстве подход «Plug & Play».

Инструментальные средства Web Forms и Windows Forms позволяют применять технику RAD (Rapid Application Development — быстрая разработка приложений) для построения Web- и Windows-приложений. Эта техника сводится к перетаскиванию элементов управления с панели инструментов на форму, двойному щелчку по элементу и написанию кода, который обрабатывает события, связанные с этим элементом.

Основные NET- технологии можно представить следующими ключевыми технологиями:

ASP.NET — компонентная версии ASP, называемая ASP.NET, это эволюция ASP в .NET. ASP.NET представляет собой полнофункциональ-ную платформу для создания сложных серверных веб-приложений. Неотъемлемой частью ASP.NET являются технологии Web-Forms и Web-Services. Сегодня ASP.NET пользуется небывалой популярностью, но с выхода первой версии .NET Framework более 12 лет назад появилось совершенно новое направление, составляющее конкуренцию традиционному программированию с использованием ASP.NET, которое получило название ASP.NET MVC

Web-Forms ( web-формы) – часть ASP.NET , поддерживающая серверные элементы управления, которые создают пользовательский HTML-интерфейс для программ просмотра и WEB-приложений, включают набор классов, позволяющих быстро разрабатывать веб-приложения с графическим интерфейсом пользователя.

Web-сервисы-XML — приложения, исполняющиеся на web-сервере и представляющееся интернет-клиентам набором функций API или web-методов, включают ряд классов, поддерживающих разработку облегченных распределенных компонентов, которые могут быть применены с использованием стандартных Интернет-протоколов в различных WEB-приложениях. XML – расширенный язык разметки. Представляет универсальный способ для описания и обмена структурированной информацией, независимо от приложений и разработчиков, используется для обмена данными между web-сервисами и клиентами.

Windows Forms – функциональная библиотека Windows для построения клиентских приложений, которая поддерживает набор классов, позволяющий разрабатывать обычные Windows-приложения, обеспечивая простую разработку графических интерфейсов, общий совместимый интерфейс для многих языков программирования. Набор классов содержится в пространстве имён System.Windows.Forms.

ADO.NET — набор средств и слоев , позволяющих приложению легко управлять и взаимодействовать со своим файловым или серверным хранилищем данных. ADO.NET – естественное развитие ADO. ADO(Active X Data Objects)- механизм доступа к БД, на платформах Microsoft, представляет собой набор COM – объектов, доступ к данным которых обеспечивают OLE-DB-провайдеры. ADO.NET снимает ограничения на обмен данными, используя XML в качестве формата.

3.2 Технології платформи Microsoft.NET

Платформа .NET Framework является мощным инструментом для разработчика, поскольку содержит большое обилие технологий для создания приложений.При этом, важным достоинством .NET Framework является то, что функциональность библиотеки базовых классов доступна во всех типах приложений.

В целом, все приложения можно разделить на несколько типов:

— настольные приложения — приложения, которые запускаются на локальном компьютере пользователя;

— веб-приложения — приложения, которые работают в рамках веб-сервера и доступны пользователю через браузер в рамках протокола HTTP/HTTPS;

— веб-приложения с богатым пользовательским интерфейсом — приложения, которые доставляются пользователю по протоколу HTTP/HTTPS в рамках браузера и исполняются на клиентской стороне;

— веб-сервисы — программный код, который выполняется на стороне сервера и может быть вызван с клиента для получения каких-либо данных или выполнения операции;


— мобильные приложения — приложения, которые выполняются на мобильных устройствах.

Для каждого из приведенных типов приложений в составе .NET Framework существуют соответствующие технологии, которые позволяют создавать приложения. Кроме того, .NET Framework содержит общие библиотеки, которые можно использовать в разных типах приложений.

Илон Маск рекомендует:  Числа с плавающей точкой

Настольные приложения отличаются тем, что запускаются непосредственно на компьютере пользователя. Это – наиболее распространенный тип приложений. Настольные приложения обычно имеют доступ к ресурсам компьютера пользователя, таким как жесткий диск, звуковое оборудование и т.д. К достоинствам такого типа приложений можно отнести интерактивность пользовательского интерфейса и возможность работы приложения вне зависимости от подключения к сети Интернет и другим ресурсам. Однако, для работы таких приложений их необходимо устанавливать на локальный компьютер.

Настольные приложения можно разделить на три вида – оконные приложения, консольные приложения и службы Windows. Оконные приложения обладают графическим интерфейсом. Консольные приложения обычно имеют вид командной строки, а интерфейс таких приложений является текстовым, а не графическим. Наконец, службы Windows вовсе не имеют пользовательского интерфейса, а работают в фоновом режиме.

Для построения приложений с оконным графическим интерфейсом в рамках платформы .NET Framework могут использоваться технологии Windows Forms (доступно начиная с .NET Framework 1.0) и Windows Presentation Foundation (доступно начиная с .NETFramework 3.0).

На рисунке 3.3 ниже показано окно создания проекта на .NET Framework. Как видно, доступны все описанные выше типы проектов.

Рисунок 3.3. — Создание проекта на .NET Framework.

Веб-приложения отличаются от настольных тем, что работают удаленно на веб-сервере. Пользователь использует возможности веб-приложений посредством браузера и протокола HTTP/HTTPS. Преимуществом этого типа приложений является то, что нет никакой необходимости устанавливать их на компьютер каждого пользователя – приложение нужно установить на веб-сервер, после чего оно становится доступным для всех пользователей. Однако, недостатком таких приложений является ограниченные возможности построения пользовательских интерфейсов. Это происходит из-за того, что пользовательский интерфейс строится на основе форматов HTML, CSS и JavaScript, которые являются достаточно ограниченными. Поэтому функциональность пользовательских интерфейсов обычно является достаточно ограниченной.

Для создания веб-приложений в рамках платформы .NET Framework используется платформа Microsoft ASP.NET. Это – универсальный и мощный механизм, который позволяет строить высокоэффективные и мощные веб-приложения.

На рисунке 3.4 ниже показано окно создания проекта веб-приложения на .NET Framework

Рисунок 3.4. — Создания проекта веб-приложения на .NET Framework

Поскольку веб-приложения обладают серьезным недостатком – ограниченными возможностями по формированию интерфейса пользователя – появился новый тип приложений, который называется богатые интернет-приложения или интернет-приложения с богатым пользовательским интерфейсом (Rich Internet Applications, RIA). Идеология этих приложений состоит в том, что в браузер интегрируется специальное дополнение (plugin), которое способно отображать дополнительный тип содержимого. После этого, когда пользователь отрывает страницу в браузере, на сторону клиента передается программный код, который работает в рамках этого дополнения. Поскольку в этом случае весь код отрабатывает на стороне клиента, у разработчиков появляется больше возможностей по формированию пользовательских интерфейсов.

Для построения подобного типа приложений существует несколько технологий. Одна из наиболее известных технологий – это технология Adobe Flash. Кроме того, существует также технология Microsoft Silverlight, которая позволяет наиболее удобно интегрироваться с остальными технологиями в рамках .NET Framework.

Зачастую возможности по построению приложений RIA комбинируют с построением обычных веб-приложений.

Другим типом приложений являются сервисыили веб-сервисы. Сервисы – это некий программный код, который расположен на сервере и запускается по запросу от пользователя. Например, можно создать набор сервисов по работе с данными из базы данных, хранящейся на сервере. Обычно, другие типы приложений, такие как настольные приложения, веб-приложения и другие обращаются к сервисам с целью выполнить какую-либо операцию на сервере или получить с сервера данные.

В рамках платформы .NET Framework существует ряд технологий, которые позволяют создавать сервисы. Наиболее старой технологией является ASP.NET Web Services. Она позволяет создавать простые веб-сервисы, которые работают по протоколу HTTP/HTTPS. Дальнейшим развитием стала технология Windows Communication Foundation (WCF). Эта платформа является наиболее мощным и гибким инструментом, которая поддерживает различные типы каналов (HTTP, TCP, именованные каналы и др.) и существенно расширяет возможности разработчика по созданию сервисов.

Также существуют дополнительные ответвления проекта WCF – это WCF Syndication Extensions (WCF REST) и ADO.NET Data Services. Эти проекты разработаны для того, чтобы можно было удобно строить сервисы доступа к данным.

Наконец, последним типом приложений являются мобильные приложения. Мобильные приложения работают в рамках мобильных устройств на базе операционной системы Windows Mobile. Для мобильных устройств также существует реализация подмножества возможностей .NET Framework, которая называется .NET Compact Framework.

Таким образом, весь спектр технологий в рамках платформы .NET Framework можно представить следующей схемой

Рисунок . 3.5. — Технологий и типы приложений платформы

3.3 Загальномовне виконуюче середовище Common Language Runtime(CLR) .Схема компіляції .NET-додатків

Common Language Runtime (CLR) – общая для языков среда исполнения, которая является краеугольным камнем в фундаменте организации вычислительных процессов всей концепции .NET с помощью её решаются основные задачи повышения надёжности и безопасности программ, платформенной независимости.

Все исполняемые модули .NET-приложений (CLR-модули) реализуются не в виде машинного кода, а с помощью так называемого байт-кода по спецификациям промежуточного языка Microsoft Intermediate Language (MSIL), т.е. каждый совместимый с .NET компилятор должен преобразовывать исходный код на языке высокого уровня в двоичный MSIL-код, который уже затем будет исполняться в среде CLR.

MSIL называют также псевдоассемблером, так как он определяет набор команд процессора, однако в данном случае процессором является CLR. MSIL содержит

В отличие от Java, CLR выполняет код не в режиме классического интерпретатора, а путём предварительной компиляции в машинный код отдельных фрагментов программы или целого приложения

.NET-приложения исполняются иначе, чем традиционные Windows-приложения. Такие программы компилируются фактически в два этапа. На первом этапе исходный код компилируется во время построения проекта и вместо исполняемого файла с машинными кодами получается сборка 2) (assembly), содержащая команды промежуточного языка MSIL (Microsoft Intermediate Language — промежуточный язык Microsoft). Код IL сохраняется в файле на диске. При этом файлы MSIL (сокращенно IL), генерируемые компилятором, например, С#, идентичны IL-файлам, генерируемым компиляторами с других языков .NET. В этом смысле платформа остается в неведении относительно языка. Самой важной характеристикой среды CLR является то, что она общая; одна среда выполняет как программы, написанные на С#, так и программы на языке VB.NET.

Второй этап компиляции наступает непосредственно перед фактическим выполнением страницы. На этом этапе CLR транслирует промежуточный код IL в низкоуровневый собственный машинный код, выполняемый процессором. Процесс происходит следующим образом: при выполнении .NET-программы системы CLR активизирует JIT-компилятор, который затем превращает MSIL во внутренний код процессора. Этот этап известен как оперативная компиляция «точно к нужному моменту» (Just-In-Time) или JIT-компиляция (JIT’ing), и он проходит одинаково для всех приложений .NET (включая, например, приложения Windows). При исполнении программы CLR берет на себя управление памятью, контроль типов и решает за приложение ряд других задач. На рис.3.6. показан этот двухэтапный процесс компиляции.

Стандартный JIT-компилятор работает по запросу. Когда вызывается тот или иной метод, JIT-компилятор анализирует IL-код и производит высокоэффективный машинный код, выполняемый очень быстро. JIT-компилятор достаточно интеллектуален, чтобы распознать, был ли код уже скомпилирован, поэтому во время выполнения программы компиляция происходит лишь при необходимости. По ходу своего выполнения .NET-программа работает все быстрее и быстрее, так как повторно используется уже скомпилированный код.

Спецификация CLS подразумевает, что все языки платформы .NET генерируют очень похожий IL-код. Кроме того, при компилировании программы в дополнение к MSIL формируется еще один компонент — метаданные. Они описывают данные, используемые программой, и это позволяет коду взаимодействовать с другим кодом. В результате объекты, созданные на одном языке, доступны и могут наследоваться на другом. То есть можно создать базовый класс на языке VB.NET, а производный от него класс — на языке С#.

В целом при написании приложения создается так называемый управляемый код (managed code), который выполняется под контролем среды исполнения CLR-приложения, не зависящей от языка. Поскольку приложение запускается под контролем CLR, управляемый код должен соответствовать определенным требованиям,т. е. компилятор должен создать MSIL-файл, предназначенный для CLR, а также использовать библиотеки .Net Framework, при выполнении которых он получает множество преимуществ, включая современное управление памятью, способность совмещать языки, высокий уровень безопасности передачи данных, поддержку контроля версии и понятный способ взаимодействия компонентов программного обеспечения.

Рис. 3.6. Схема компиляции .NET-приложения

Таким образом, компиляция .NET делится на два этапа с целью предоставления разработчикам удобных условий и мобильности. Перед созданием низкоуровневого машинного кода компилятору необходимо знать, в какой операционной системе и на каком базовом оборудовании будет функционировать приложение. Благодаря двум этапам компиляции можно создать скомпилированную сборку с кодом .NET и распределить ее более чем на одну платформу.

Конечно, компиляция не будет столь полезна, если ее выполнение будет необходимо каждый раз при запросе пользователем Web-страницы. Приложения ASP.NET не нужно компилировать всякий раз при запросе Web-страницы или Web-службы. Вместо этого код IL создается один раз и повторно генерируется только при изменении исходного кода. Подобным образом файлы собственного машинного кода кэшируются в системном каталоге.

3.4 Cтруктура CLR-модулів, збірка модулів.

Рассмотрим структуру CLR-модулей. CLR-модули состоят из исполняемого кода и метаданных. Метаданные, например, различные декларации полей, методов, свойств и событий, широко применяются и в COM-технологии, что и составляет ее основное отличие от обычных двоичных DLL. В CLR состав метаданных значительно расширен, что позволяет более эффективно контролировать версии, проверять надежность источников поступления программ и т. п.

Исполняемый код в основном представлен в виде «управляемого кода». Возможны и фрагменты «неуправляемого кода», но они будут отныне большой редкостью. Это означает, что CLR не просто преобразует MSIL в машинные инструкции, а выполняет эти действия с учетом определенных внешних установок. Например, Модуль1 может задать свой собственный набор прав, предоставляемый вызываемому им Модулю2, запретив, в частности, любые операции изменения файлов.

Платформенная независимость обеспечивается CLR, поскольку предполагается наличие JIT-компиляторов с любых возможных языков программирования через MSIL для разных типов процессоров и аппаратуры (карманные ПК, сотовые телефоны и т.п. ).

Компиляторы .NET Framework генерирует «управляемые модули», CLR-модули, которые содержат CIL + метаданные, но CIL не способен использовать CLR-модули напрямую, т.к. базовой единицей защиты, управления версиями и развёртыванием в .NET Framework является «сборка» (assembly).


Сборка – это файл или набор файлов, в совокупности составляющих логическую единицу. Большинство сборок содержит один файл, но может содержать несколько файлов. Все файлы в составе одной сборки должны находиться в одном каталоге.

Многофайловые сборки( рис.3.4) обычно служат для инсталляции модулей, написанных на разных языках и для объединения управляемых модулей с обычными файлами, содержащими изображения в формате JPEG и др. ресурсы.

Aux1.netmodule Image. jpg Aux2.netmodule

Рисунок 3.7 — Многофайловая сборка

Как CLR узнает, какие файлы относятся к сборке?

Один из файлов, входящих в состав, содержит декларацию (mainfest), содержащую дополнительные метаданные:

— список всех остальных файлов сборки вместе с криптографическими хэш-значениями, вычисленными по содержимому файлов;

— список типов данных, экспортируемых другими файлами сборки, и информация, связывающая эти типы данных с файлами, где они определены;

— номер версии в формате;

3.5 Бібліотека класів .NET Framework Class Library(FCL). Основні простори імен FCL

Библиотека классов .NET Framework – CLS совместимая библиотека классов, интерфейсов и типовых значений. Она обеспечивает доступ к системным возможностям и спроектирована, чтобы стать основой, на которой будут создаваться приложения .NET, компоненты и элементы управления. Это классы для сетевого взаимодействия, ввода-вывода, безопасности и т.п., которые разделены по функциональным группам.

FCL содержит более 7000 типов: классов, структур, интерфейсов, перечислений. Некоторые классы FCL содержат до 100 методов, свойств и других членов.Чтобы облегчить изучение и использование FCL, Microsoft разделила эту библиотеку на иерархические пространства имён. Всего в FCL около 100 таких пространств, в каждом содержаться классы и другие типы, имеющие общее назначение. Наборы «родственных» типов собраны в отдельные пространства имён. Например, API Windows для управления окнами инкапсулирована в пространство имён System.Windows Forms, пространство System.Collection – содержит классы хэш-таблиц, массивов переменной размерности и др.

Пространство имён System содержит базовый класс Object, из которого в конечном счёте порождаются все остальные типы. Таким образом, всякая сущность в .NET является объектом со своими полями и методами.

Кроме того, System содержит типы для целых чисел, символов, строк, обработки исключений, консольного ввода-вывода, группу типов для безопасного преобразования одних типов в другие, форматирования данных, генерации случайных чисел и выполнения математических операций. Типами из пространства имён System пользуются все приложения.

Для изменения существующего FCL-типа можно создать свой собственный производный тип. Можно создавать свои собственные пространства имён. Всё это будет чётко соответствовать принципам, предлагаемым платформой .NET.

Таким образом, FCL – это библиотека базовых функций, на основе которых строятся .NET-приложения. Принципиальная новизна заключается в том, что если ранее подобный набор создавался для каждого языка программирования, то теперь он – один для всех средств.

Таблица 3.1- Основные пространства имён FCL

Пространство имён Содержание
System Фундаментальные типы данных и вспомогательные классы
System.Collections Хэш-таблицы, массивы переменной размерности и другие контейнеры
System.Data Классы ADO.NET для доступа к данным
System.Drawing Классы для вывода графики (GDI+)
System.IO Классы файлового и потокового ввода-вывода
System.Net Классы для работы с сетевыми протоколами, например, с HTTP
System.Reflection Классы для чтения и записи метаданных
System.Runtime.Remoting Классы для распределённых приложений
System.ServiceProcess Классы для создания служб Windows
Sustem.Threading Классы для создания и управления потоками
System.Web Классы для поддержки HTTP
System.Web.Services Классы для разработки web-сервисов
System.Web.Services.Protocols Классы для разработки клиентов web-сервисов
System.Web.UI Основные классы, используемые ASP.NET
System.Web.UI.WebControls Серверные элементы управления ASP.NET
System.Windows.Forms Классы для приложений с графическим интерфейсом пользователя
System.Xml Классы для чтения и ввода данных в формате XML

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

Использования единого набора функций позволяет улучшить управление оперативной памятью, как известно, огромное число проблем надёжности программ связано с использованием неодинаковых механизмов динамического распределения пространства в разных языках.

Базовые функции перестали быть принадлежностью пользовательских приложений и превратились в неотъемлемый компонент ОС.

FCL – логически делится на:

— библиотеку базовых классов – классы поддерживают элементарную функциональность ввода-вывода, манипуляции со строками, управления безопасностью, функциональность отражений и коллекций и др. функций.

— библиотеку дополнительных классов – расширяет базовые классы поддержкой управления данными и XML (ADO.NET, SQL, XSLT, XPath, XML и т.д.).

3.6 Особливості та переваги ASP.NET

Когда платформа ASP.NET была выпущена впервые, от предыдущих продуктов Microsoft и конкурирующих платформ ее отличали семь ключевых фактов:

Код ASP.NET компилируется, а не интерпретируется

Подобно всем приложениям .NET, приложения ASP.NET всегда компилируются, а в действительности проходят через два этапа компиляции.

На первом этапе написанный код на C# компилируется в код на промежуточном языке, который называется MSIL или просто IL. Этот первый этап как раз и является одной из главных причин, по которым в .NET могут использоваться самые разные языки. Скомпилированный файл с кодом на IL представляет собой сборку.

Второй этап компиляции происходит непосредственно перед фактическим выполнением страницы. На этом этапе код IL компилируется в код на низкоуровневом машинном языке. Называется этот этап оперативной JIT компиляцией и выглядит одинаково для всех приложений .NET

Процесс компиляции в .NET разделен на два этапа для предоставления разработчикам как можно большего удобства и мобильности. Благодаря выполнению таких двух этапов компиляции, можно создавать скомпилированную сборку с кодом .NET и распространять ее среди более, чем одной, платформы. Код на IL создается один раз и генерируется заново только в случае изменения исходного кода, а файлы, содержащие машинный код, кэшируются в системном каталоге. Это бесспорно способствует ускорению процесса преобразования и отображения страниц Web-приложения и благотворно влияет на общую производительность системы

Дата добавления: 2020-11-24 ; просмотров: 1718 | Нарушение авторских прав

Какую локаль правильно указывать в атрибуте lang тега html?

Правильный, минимально достаточный вариант:

Суффикс -RU означает «тот русский, на котором говорят именно в России» и конкретно для русского языка является избыточным.

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

Различия между диалектами одного языка обычно не слишком существенны. (Украинский язык, насколько мне известно, самостоятелен [код «uk» согласно ISO 639-1] и диалектом русского не является.)

Пожалуй, определённая логика в этом есть, но учитывая, что она носит неоднозначный характер (только самому пользователю доподлинно известно, что именно он ищет на самом деле), а также тот факт, что на многих сайтах язык не указан вообще (что не означает, что контент соответствующих страниц не является качественным/релевантным), маловероятно, что поисковики снабжены столь тонкими механизмами. Более того, не факт, что поисковики используют атрибут lang как таковой.

В этом контексте были бы полезны комментарии официальных представителей основных поисковых сервисов, но вряд ли мы услышим здесь таковые.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL