Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
27.03.2016
Размер:
72.19 Кб
Скачать

ADO.NET — основная модель доступа к данным для приложений, основанных на Microsoft .NET. Не является развитием более ранней технологии ADO. Скорее представляет собой совершенно самостоятельную технологию. Компоненты ADO.NET входят в поставку оболочки .NET Framework; таким образом, ADO.NET является одной из главных составных частей .NET.

ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 4.0[1]. ASP.NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP.NET. В то же время внутреннее устройство ASP.NET существенно отличается от ASP, поскольку она основана на платформе .NET и, следовательно, использует все новые возможности, предоставляемые этой платформой.

Common Language Runtime (CLR) — «общеязыковая исполняющая среда» — компонент пакета Microsoft .NET Framework, виртуальная машина, исполняющий программы, написанные на .NET-совместимых языках программирования.CLR интерпретирует и исполняет код на языке IL (реализация компиляции которого компанией Microsoft называется MSIL), а также предоставляет MSIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотекам классов .NET Framework, или так называемой .NET FCL (англ. Framework Class Library).Среда CLR является реализацией спецификации CLI (англ. Common Language Infrastructure), спецификации общеязыковой инфраструктуры компании Microsoft.Основное назначение CLR — выполнение приложений, соблюдение всех программных зависимостей, управление памятью, обеспечение безопасности, интеграция с языками программирования и т.п. Среда выполнения обеспечивает множество сервисов, облегчающих создание и внедрение приложений, и существенно улучшает надежность последних.

Microsoft Intermediate Language

В вышеприведенном дампе намеренно пропущена важная часть — код на языке IL. Когда мы компилируем наш код, результатом этого процесса становится не код на языке, понятном конкретной платформе, а код на промежуточном языке, называемом Microsoft Intermediate Language (MSIL), который представляет собой набор инструкций, не зависящих от конкретного процессора. Ниже приведен IL-код нашего метода Main():

.method public static void Main() cil managed

{

.entrypoint

.custom instance void

[mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )

// Code size 11 (0xb)

.maxstack 8

IL_0000: ldstr "Running under .NET"

IL_0005: call void

[mscorlib]System.Console::WriteLine(string)

IL_000a: ret

} // end of method Cons::Main

Если опустить пролог, наш код занимает 8 ячеек стека и состоит из 3 инструкций. Первая инструкция — ldstr — загружает строку в стек. Инструкция call вызывает указанный метод из сборки и передает ей параметр. Выполнение завершается инструкцией ret. Несмотря на то что язык IL является достаточно простым, писать программы на нем не имеет особого смысла, однако общее понимание инструкций может помочь вам разобраться в логике работы программ, а также ядра .NET Framework. (Дополнительную информацию можно получить из спецификации Common Language Infrastructure, Partition 3. CIL Instruction Set, доступной на Web-сайте фирмы Microsoft.)

Just-In-Time Compiler

Программа на языке IL остается неизменной до тех пор, пока мы не вызовем на выполнение тот файл, в котором она хранится. В момент, когда управление передается среде исполнения, IL-код преобразуется в код для конкретной платформы. Эту задачу выполняет компилятор, называемый Just-In-Time Compiler (JIT). Теоретически только указанный компилятор является компонентом .NET, зависящим от конкретной платформы. Однако на самом деле от платформы также зависят и значительная часть библиотеки классов, и ряд других компонентов, например следующие компоненты платформы .NET:

mscorlib

System

System.Design

System.Drawing

System.Windows.Forms

Тем не менее существует реальная возможность наличия .NET для не-Windows-платформ, и, возможно, уже в ближайшее время мы увидим реализации .NET для Linux.

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

Интересно, что JIT-компилятор не выполняет компиляцию всего IL-кода при первом обращении к программе. Вместо этого каждый метод компилируется при первом обращении к нему, и, таким образом, неиспользуемый код не компилируется. Откомпилированный код хранится в памяти, а последующие обращения к программе выполняют уже откомпилированный код. Microsoft предоставляет специальный компилятор CLR Native Image Generator (NGEN), который выполняет компиляцию всего IL-кода и сохраняет результат на диске

Утили́та (англ. utility или tool) — компьютерная программа, расширяющая стандартные возможности оборудования и операционных систем, выполняющая узкий круг специфических задач.

Reflection

Отражение (reflection) — это средство С#, которое позволяет получить информацию о типе. Термин отражение произошел от характера процесса: объект класса Туре воспроизводит, или отражает, базовый тип, который он представляет. Для получения интересующей вас информации вы "задаете вопросы" объекту класса Туре, а он возвращает (отражает) для вас информацию, связанную с этим типом. Отражение — мощный механизм, позволяющий узнать характеристики типа, точное имя которого становится известным только во время выполнения программы, и соответствующим образом использовать их. Многие классы, которые поддерживают средство отражения, являются частью интерфейса .NET Reflection API, который определен в пространстве имен System.Reflection. Таким образом, в программы, которые используют средство отражения, обычно включается следующая инструкция: using System.Reflection;

.NET

Вообще .NET - среда разработки приложений от Microsoft ориентированная на Internet. Несмотря на то что .NET позволяет создавать обычные Windows-приложения основной упор делается на обмен информацией посредством Internet (через Web-Services). При этом инфраструктурой для новой среды построение приложений является .NET Framework, которую в свою очередь можно разделить на CLR (Common Language Runtime - общеязыковую исполняющую среду) и FCL (Framework Class Library - библиотеку классов, упрощающую разработку). В FCL входят такие библиотеки как Windows Forms, GDI+, ADO.NET, ASP.NET и т.д. Основными преимуществами Framework являются: отсутствие проблем с версиями библиотек; интеграция языков программирования, поддерживающих CLS (Common Language Specification); автоматическое управление памятью; безопасность типов и т.д. В настоящее время

.NET Framework реализован для Win 98/98 SE/Me/NT 4.0/2000/XP/.NET Server Family (aka 2003) + .NET Compact Framework для Windows CE.

За дальнейшей информацией обратитесь [1], [2]

Сборки

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

Stream

Класс Stream является абстрактным базовым классом всех потоков. Поток — это абстракция последовательности байтов, например файл, устройство ввода-вывода, канал взаимодействия процессов или сокет TCP/IP. Класс Stream и его производные классы предоставляют универсальное представление различных типов ввода и вывода, изолируя программиста от отдельных сведений операционной системы и базовых устройств. При вызове метода Close для класса Stream все данные буфера будут очищены, по сути выполняется вызов метода Flush. Метод Close также освобождает такие ресурсы операционной системы, как дескрипторы файлов, сетевые подключения или память, используемую для внутренней буферизации. Класс BufferedStream предоставляет возможность создания оболочки в виде буферного потока вокруг другого потока, что позволяет повысить производительность при чтении и записи.

Ссылочный тип данных (указатели)

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

Атрибут

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

Литералы

В С# существует четыре типа литералов:

• целочисленный литерал;

• вещественный литерал;

• символьный литерал;

• строковый литерал.

Литералы — это особая категория слов языка. Для каждого подмножества литералов используются собственные правила словообразования. Мы не будем приводить их здесь, ограничившись лишь общим описанием структуры и назначения каждого подмножества литералов. После этого правила станут более-менее понятны.

Целочисленный литерал служит для записи целочисленных значений и является соответствующей последовательностью цифр (возможно, со знаком '-'). Целочисленный литерал, начинающийся со знака 0, воспринимается как восьмеричное целое. В этом случае цифры 8 и 9 не должны встречаться среди составляющих литерал символов. Целочисленный литерал, начинающийся с Ох или ОХ, воспринимается как шестнадцатеричное целое. В этом случае целочисленный литерал может включать символы от А или а, до F или f, которые в шестнадцатеричной системе эквивалентны десятичным значениям от 10 до 15. Непосредственно за литералом могут располагаться в произвольном сочетании один или два специальных суффикса: U (или и) и L (или l).

Вещественный литерал служит для отображения вещественных значений. Он фиксирует запись соответствующего значения в обычной десятичной или научной нотациях. В научной нотации мантисса отделяется от порядка литерой Е (или е). Непосредственно за литералом может располагаться один из двух специальных суффиксов: F (или f) и L (или l).

Значением символьного литерала является соответствующее значение ASCII кода (это, разумеется, не только буквы, буквы-цифры или специальные символы алфавита С#). Символьный литерал представляет собой последовательность одной или нескольких литер, заключенных в одинарные кавычки. Символьный литерал служит для представления литер в одном из форматов представления. Например, литера Z может быть представлена литералом «Z», а также литералами «\132» и «\х5А». Любая литера может быть представлена в нескольких форматах представления: обычном, восьмеричном и шестнадцатеричном.

Строковые литералы являются последовательностью (возможно, пустой) литер в одном из возможных форматов представления, заключенных в двойные кавычки. Строковые литералы, расположенные последовательно, соединяются в один литерал, причем литеры соединенных строк остаются различными. Так, последовательность строковых литералов «\xF» «F» после объединения будет содержать две литеры, первая из которых является символьным литералом в шестнадцатеричном формате «\xF», вторая — символьным литералом «F». Строковый литерал и объединенная последовательность строковых литералов заканчиваются пустой литерой, которая используется как индикатор конца литерала.

GUI

Графи́ческий интерфе́йс по́льзователя (ГИП), графический пользовательский интерфейс (ГПИ) (англ. Graphical user interface, GUI; сленг. ГУИ, ГУЙ) — разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений.

API

Интерфейс прикладного программирования (иногда интерфейс программирования приложений) (англ. Application Programming Interface, API [эй-пи-ай])[1] — набор готовых классов, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

Win32 — 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в DLL kernel32.dll и advapi32.dll; базовые модули GUI — в user32.dll и gdi32.dll. Win32 появился вместе с Windows NT и затем был перенесён (в несколько ограниченном виде) в системы серии Windows 9x. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUI обеспечивают два модуля: csrss.exe (Client/Server Runtime Subsystem), работающий в пользовательском режиме, и win32k.sys в режиме ядра. Работу же системных Win32 API обеспечивает ядро — ntoskrnl.exe

MFC

Пакет Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.

Атомарные операции

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

Атомарная операция открыта влиянию только одного потока.

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

Хеш-таблица

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

IDE

Интегри́рованная среда́ разрабо́тки (англ. IDE, Integrated development environment) — система программных средств, используемая программистами для разработки программного обеспечения.

Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков — такие как Eclipse, NetBeans или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования — как например, Visual Basic.

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

Свойства и индексаторы

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

Свойства позволяют получать доступ к членам объектов или классов. При использовании свойст класса, их поведение подобно поведению обычных полей, однако доступ осуществляется путем исполнения метода доступа - аксессора. Свойства позволяют удобно производить инкапсуляцию полей класса. (В С++ для этого обычно создаются методы GetValueName() и SetValueName()).

Индексаторы позволяют обращаться к элементам классов, структур или других объектов как к элементам массива. Для организации нумерации элементов используются аксессоры (методы доступа).

Как вы помните, в C++ мы частенько прибегали к тому, что создавали методы а-ля Smth_Type GetSmth() и void SetSmth(Smth_Type Smth), чтобы в дальнейшем можно было контролировать присваивание значений какой-либо переменной. Т.е. Эта переменная объявлялась private, чтобы мы туда случайно извне ничего не записали, а механизм доступа в виде public метода обеспечивал корректную работу с ней (например мы запрещали присвоение переменной, определённого диапазона значений). В C# это можно реализовать чуть короче, с помощью тех же аксессоров. Например

class My

{int prop; // private переменная, для которой мы создадим свойство

public int myprop

{get

{return prop; }

set

{ if(value >= 0 && value < 42) prop = value;

}}}

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

Как вы помните, в C++ можно было перегружать operator[] для индексации массива, и вытворять с индексацией что угодно, хоть operator[](double index). Чтобы использовать собственные индексируемые объекты как справа, так и слева присваивания, мы говорили, что перегруженный метод индексации возвращает ссылку на наш объект. В C# всё организованно следующим образом:

тип_элемента this[int индекс] {

get // Аксессор считывания данных,

{ // Возврат значения, заданного элементом индекс.}

Set // Аксессор установки данных,

{// Установка значения, заданного элементом индекс.}

тип_элемента ― это тип каждого элемента, к которому предоставляется доступ посредством индексатора. Он соответствует базовому типу массива. Параметр индекс получает индекс опрашиваемого (или устанавливаемого) элемента. Строго говоря, этот параметр не обязательно должен иметь тип int, но поскольку индексаторы обычно используются для обеспечения индексации массивов, целочисленный тип ―

наиболее подходящий. В теле индексатора определяются два аксессора (средства доступа) с именами get и set. Аксессор подобен методу за исключением того, что в нем отсутствует объявление типа возвращаемого значения и параметров.

class Indexed

{int[,] classprop;

Indexed()

{classprop = new int[42, 42];}

public int this[double index1, double index2]

{get

{return classprop[(int)index1, (int)index2];}

set

{if (value is int) classprop[(int)index1, (int)index2] = value;

Else Console.WriteLine("Ошибка типа");}}}

Соседние файлы в папке Мулаточки 18+