Common Intermediate Language
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Common Intermediate Language

 

 



Определения

 

 


.

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

 

 
Сборки это наименьшие строительные блоки платформы .NET, являющиеся её фундаментом

 

 


Задачи Сборок

 

         
хранения кода приложений и библиотек среды .NET
 
обеспечение работы политики версий для приложений .NET.

 

 

Виды сборок

 

                           
располагаются на диске в файлах формата PE (Portable Executable)
располагаются в памяти
создаются во время исполнения программы
 
могут содержать заранее откомпили-рованный IL код
 
Используют специальные средства общей библиотеки классов (FCL), называемые технологией отражения (reflection)
могут содержать дополнительные ресурсы

 

 



Статические сборки

 

 

 

 


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

 

Вызовы между системой и такими приложениями идут при помощи стандартных интерфейсов предоставляемых форматом PE:

 

 


Основные элементы файлов статических сборок

 

   
 

 

 



Классификация сборок по расположению

 

 



Состав файла . NET сборки (однофайловой)

Сборка из одного файла

 

 

Сборка из нескольких файлов

 

Преимущества многофайловых сборок

 



Манифест сборки

Хранит следующие данные.

 



Способы хранения манифеста сборки.

 

Назначение Манифеста сборки

 

 

 


В манифест сборки включается:

· Имя сборки

· Сведения о версии

· Сведения о культуре

· Данные строгого имени

· Список файлов сборки

· Сведения о типах ссылок

· Сведения о ссылочных и зависимые сборки

Код MSIL, содержащихся в сборке не может быть выполняется непосредственно. Вместо этого выполнение кода MSIL осуществляется с помощью среды CLR. По по умолчанию, при создании сборки, сборка является закрытой для приложение. Для создания общей сборки необходимо назначить строгое имя для сборки, а затем опубликовать ее в глобальной сборки кэш




Окно утилиты ildasm.exe

Информацию о манифесте можно просмотреть используя IL листинг данной сборки (он может быть получен при помощи утилиты ildasm.exe



Отображения на Экране

 

 

 

Версия сборки · Первый идентификатор — основной номер версии. · Второй идентификатор — дополнительный номер версии. · Третий идентификатор — номер сборки. · Четвёртый идентификатор — номер редакции.

Компилятор командной строки

Настройка csc

                     
 
Переменные среды
 
Системные переменные
Path
путь к размещению .NET Framework SDK
 

 


 C:\Windows\Microsoft.NET\Framework\ v4.0.30319


Настройка csc

 


3. Как еще вызвать компилятор С#


 Причины, по которым освоение csc может оказаться полезным:





Необходимость csc.ехе

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

 

Работа с ответными файлами

ответные файлы (response files) - файлы С#, в которых размещаются все инструкции, необходимые в процессе компиляции текущей сборки.

 

расширение *.rsp (

Создание ответного файла

Имя- TestApplication.rsp,

 

# Это ответный файл для примера

# TestApplication.exe

 

/r:System.Windows.Forms.dll

 

# Параметры вывода и подлежащие компиляции файлы

 

/target:exe /out:TestApplication.ехе *.cs

 

С:\111>csc @TestApplication.rsp

 

несколько ответных *.rsp файлов:

csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp

 

 

Недостаток компилятора С#:

Компилятор обрабатывает параметры команд по мере их поступления.

 

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



Ответный файл csc.rsp

· используется по умолчанию

· размещен в том же каталоге, что и файл csc.ехе

· Открывается Notepad (Блокнот),

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

· ссылка на этот ответный файл добавляется автоматически

· Не содержит mscorlib.dll:

Т.к. в csc.rsp уже содержится ссылка на System.Windows.Forms.dll, то команда компоновки:

С:\111>csc /out:TestApplication.exe *.cs

Л9- Тailings and refunds

9.1. XML -комментарии в С#

Пример кода с XML-комментариями:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

/// <summary>

/// Класс Program

/// основной класс программы

/// выводящий текст "Hello, World!"

/// </summary>

class Program

{

   /// <summary>

   /// Метод Main() является

   /// входной точкой работы программы

   /// </summary>

/// <param name="args"> Аргумент метода Main()</param>

   static void Main(string[] args)

   {               // Форматируем шапку программы

       Console.BackgroundColor = ConsoleColor.Green;

       Console.ForegroundColor = ConsoleColor.Black;

       Console.WriteLine("********************");

       Console.WriteLine("**** Мой проект ****");

       Console.WriteLine("********************");

       // Основная программа

       Console.BackgroundColor = ConsoleColor.Black;

       Console.ForegroundColor = ConsoleColor.Green;

       Console.WriteLine();

       Console.WriteLine("Hello, World!");

// Ожидание Enter перед завершением работы

       Console.ReadLine();

   } } }

9.2. Настройки Build (VS-2008):

 - клик ПКМ на имени проекта в окне построителя и Свойства:

Заполнить вручную путь XML-файл документации.

Получаем Hellodoc.xml:

<?xml version="1.0"?>

<doc>

<assembly>

   <name>hellodoc</name>

</assembly>

<members>

   <member name="T:hellodoc.Program">

       <summary>

        Класс Program

        основной класс программы

        выводящий текст "Hello, World!"

       </summary>

   </member>

   <member name="M:hellodoc.Program.Main(System.String[])">

       <summary>

       Метод Main() является

       входной точкой работы программы

       </summary>

 <param name="args">Аргумент метода Main()</param>

   </member>  </members> </doc>

9.3. Для DLL вычисления Sin (xml- файл ):

<?xml version="1.0"?>

<doc>

<assembly>

   <name>libsin</name>

</assembly>

<members>

   <member name="T:libsin.Class1">

       <summary>

       Выч Тригон.ф.

       </summary>

   </member>

 <member name= "M:libsin.Class1.Sin(System.Double,System.Int32)">

       <summary>

       Sin(x)

       </summary>

       <param name="x"> угол в рад.</param>

       <param name="n">показ.степени</param>

       <returns>результат</returns>

   </member>

</members>

</doc>

 

Результат работы программ:

 

Можно сделать то же и командой csc.

csc /t:library /doc:MyApplication.xml MyApplication.cs

9. 4 . .NET и C#

 

     

 

NET Framework

 

.NET Framework — программная платформа, выпущенная компанией Microsoftв 2002 году. – ответ Microsoft на платформу Java компании Sun Microsystems (ныне принадлежит Oracle).

 

NET Framework 1.0

· вышел 5 января 2002 года

· для Windows 98, NT 4.0, 2000 и XP.

· Расширенная поддержка –до 14 июля 2009 года[11].

NET Framework 1.1

· вышел 1 апреля 2003 года.

· первая версия, автоматически устанавливаемая вместе с операционной системой (Win Server 2003).

· расширенная поддержка до 8 октября 2013 года

 

Независимые проекты (Mono и Portable.NET),

 

NET Framework 2.0

выпущена одновременно с Visual Studio 2005, SQL Server 2005 и BizTalk 2006.

добавлена поддержка настраиваемых (обобщённых) (англ. generic) классов, анонимных методов, полная поддержка 64-битных платформ x64 и IA-64? Windows Forms, ADO .NET, ASP.Net.

расширенная поддержка до 12 апреля 2016 года

ASP (англ. Active Server Pages — «активные серверные страницы») — технология динамического создания страниц на стороне сервера,

ASP.NET — технологии создания веб-приложений, основанной уже на платформе Microsoft .NET.

ADO.NET

ADO.NET - новая технология доступа к базам данных, специально оптимизированная для нужд построения рассоединенных (disconnected ) систем на платформе .NET

 


Отличительные особенности ADO.NET:

 




Назначение ADO.NET

     
 
установить соединение с хранилищем данных;
создать и заполнить данными объект DataSet;
отключиться от хранилища данных и вернуть изменения, внесенные в объект DataSet обратно в хранилище данных;

 


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

 

Включает РБД, такие как Microsoft SQL Server, Microsoft Access, Compact и др.


NET Framework 3.0

Первоначальное имя - WinFX

Использует CLR версии 2.0.

 

Новые компоненты

           
1. Windows Presentation Foundation (WPF) — презентационная графическая подсистема, использующая XAML;
 
2.Windows Communication Foundation (WCF) — унифицированная программная модель межплатформенного взаимодействия;
 
3. Windows Workflow Foundation (WF) — технология определения, выполнения и управления рабочими процессами;
4. Windows CardSpace— технология унифицированной идентификации.

 


Поддержка, Майкрософт, до 12 июля 2011 года.


NET Framework 3.5

Использует CLR версии 2.0.

 

Новшества:

· C# 3.0 и VB.NET 9.0

· Добавлен язык LINQ и провайдеры LINQ to Objects, LINQ to XML и LINQ to SQL

· ASP.NET AJAX включён в поставку

· Расширена функциональность WF и WCF

· Добавлено пространство имён System.CodeDom

Взаимодействие с объектами

· посредством LINQ в виде LINQ to Entities,

· с использованием Entity SQL.

 

Для облегчения построения web-решений используется

· ADO.NET Data Services (Astoria),

· связка из Windows Communication Foundation и Windows Presentation Foundation, позволяющая строить многоуровневые приложения, реализуя один из шаблонов проектирования MVC, MVP или MVVM



NET Framework 4.0

 

29 сентября 2008 года

Первая бета-версия появилась 20 мая 2009 года, вместе с бета-версией Visual Studio 2010

 

Нововведения:

· Parallel Extensions — PLINQ (Parallel LINQ) и библиотеку параллельных задач (Task Parallel Library)[14], предназначенные для упрощения программирования для многопроцессорных и распределённых систем

· Нововведения в Visual Basic и C#

· Технологию Managed Extensibility Framework (MEF)

· Полную поддержку IronPython, IronRuby и F#

· Поддержку подмножеств .NET Framework и ASP.NET в варианте Server Core

· Поддержку Code Contracts

· Средства моделирования Oslo и язык программирования M, предназначенный для создания предметно-ориентированных языков и моделей

Окончательная версия .NET Framework 4.0 была выпущена 12 апреля 2010 года вместе с окончательной версией Visual Studio 2010.



NET Framework 4.5

 

!!! Не совместима с Windows XP и более ранними версиями Windows.

 

Нововведения:

· Возможность уменьшения количества перезапусков системы путем обнаружения и закрытия приложений платформы .NET Framework версии 4 во время развертывания.

· Поддержка массивов, размер которых превышает 2 гигабайта (ГБ) на 64-разрядных платформах.

· Улучшенная производительность благодаря фоновой сборке мусора для серверов. (включается автоматически).

· Фоновая компиляция по требованию (JIT), опционально доступна на многоядерных процессорах, для повышения производительности

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

· Поддержка кодировки Юникод (UTF-16) в консоли; улучшения сжатия ZIP; повышение производительности при извлечении ресурсов;

· Поддержка определения и управления версиями культурных данных сортировки и сравнения строк.

· Возможность настраивать контекст отражения для переопределения поведения отражения по умолчанию

· Поддержка версии 2008 стандарта интернационализированных доменных имен

· Делегирование сравнения строк операционной системе, которая реализует Юникод 6.0, если платформа .NET Framework используется в Windows 8 (на других платформах платформа - Юникод 5.xx.)

· Возможность вычисления хэш-кода для строк на основе домена для каждого приложения.



Критика

· не рациональное использование ресурсов системы (по сравнению с другими технологиями).

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

· С технической точки зрения: отсутствие поддержки вызовов Streaming SIMD Extensions (SSE) в управляемом коде. Правда, в Mono решили эту проблему, добавив поддержку SIMD Extensions версии 2.2 в пространство имён Mono.Simd.

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

· версии платформы 3.5 и далее не предустанавливаются в версии Windows, предшествовавшие выходу Windows 7, что вынуждает пользователей тратить значительное время на их установку

Об’єктна модель ADO .NET

 

 


Модель об’єктів ADO .NET (ActiveX Data Objects .NET) – це набір класів, що реалізують програмні інтерфейси для полегшення підключення до баз даних та інших джерел даних.

 

 

 


     
 
.Net data provider

 





Т ипи джерел даних

(множини класів)

 

 


Групи класів

 


Ієрархія класів ADO . Net

 

Призначення класів ADO.NET

 

- встановити з'єднання з базою даних;

- створити і заповнити даними об'єкт DataSet;

- відключитися від сховища даних;

- внести зміни в дані в об'єкті DataSet

- знову встановити з'єднання з базою даних і повернути внесені зміни назад в сховище даних.

 

Засоби роботи з ADO . Net

 

         
 
MySql
 
Oracle l

 

Создание новых таблиц в БД

                   
Вид
 
Другие окна
Обозреватель БД
 
Таблицы
 
О Х
Создать таблицу


Создаем таблицу: задаем поля, свойства, Имя таблицы

Например: Tab1

Имя столбца Тип данных Длина Разрешить null
CustomerID nchar 5 Нет
CompanyName nvarchar 40 Нет
ContactName nvarchar 30 Да
ContactTitle nvarchar 30 Да
Street nvarchar 60 Да
City nvarchar 15 Да
PostalCode nvarchar 10 Да
Country nvarchar 15 Да
Phone nvarchar 24 Да

Tab2

Имя столбца Тип данных Длина Разрешить null
OrderID int 4 Нет
CustomerID nchar 5 Да
EmployeeID int 4 Да
OrderDate datetime 8 Да
RequiredDate datetime 8 Да
ShippedDate datetime 8 Да
ShipVia int 4 Да
Freight money 19 Да
ShipName nvarchar 40 Да

4.Создание отношений между таблицами

 

 

 



Создание копии базы данных

 

Файл - Сохранить все.

Файл- Закрыть решение.

В папке Projects – SDB1. sdf - скопируйте его.

Перейдите к папке, в которой хотите сохранить базу данных, и вставьте копию в эту папку

 

 

Особенности ADO.NET

1. ADO расширяет концепцию объектов-наборов записей в базе данных новым типом DataSet,

DataSet - локальная копия сразу множества взаимосвязанных таблиц.

DataSet – пассивный контейнер для данных, который обеспечивает только их хранение.

При помощи объекта DataSet пользователь может локально производить различные операции с содержимым базы данных, будучи физически рассоединен с СУБД, и после завершения этих операций передавать внесенные изменения в базу данных при помощи "адаптера данных" (data adapter);

DataAdapter определяет, что нужно поместить в пассивный контейнер DataSet

2.

формат XML
В ADO.NET реализована полная поддержка представления данных в XML - совместимых форматах.

 


3. ADO.NET - это библиотека управляемого кода и взаимодействие с ней производится как с обычной сборкой .NET.

Обращение к типам ADO.NET (и их членам) производится практически одинаково вне зависимости от того, какой язык используется.




Объект DataSet

 

Объект DataSet – это тип данных, представляющий локальный набор таблиц и информацию об отношениях между ними.

 

Структура объекта DataSet

 

DataSet - набор связанных таблиц.

DataSet на клиенте = полная копия удаленной БД

 

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

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

 

Создание DataSet осуществляется при помощи управляемого провайдера ( managed provider ).



Управляемый провайдер

Управляемый провайдер - это набор классов, реализующих интерфейсы, определенные в пространстве имен System.Data.

 

 

Таблица 1. Пространства имен ADO.NET

Пространство имен Описание System.Data Главное (Обязательное) пространство имен ADO.NET. В нем определены типы, представляющие таблицы, столбцы, записи, ограничения и тип - DataSet. System.Data.Common Определены типы, общие для всех управляемых провайдеров. Многие из них выступают в качестве базовых классов для классов из пространств имен для провайдеров SQL и OleDb System.Data.OleDb В этом пространстве имен определены типы для установления соединений с OLE DB-совместимыми источниками данных, выполнения к ним SQL-запросов и заполнения данными объектов DataSet. для установления соединения с источником данных System.Data.SqlCIient В этом пространстве имен определены типы, которые составляют управляемый провайдер SQL. для установления соединения с источником данных System.Data.SqlTypes Представляют собой "родные" типы данных Microsoft SQL Server.

Типы пространства имен System.Data предназначены для представления данных, полученных из источника (но не для установления соединения непосредственно с источником).



N-tier - архитектура

 

Технология ADO.NET ориентирована на приложения N-tier - архитектуры многоуровневых приложений, которая в настоящее время стала фактическим стандартом для создания распределенных систем.

 

 

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



Трехуровневая архитектура

Термин "уровни" используется для описания физического распределения компонентов системы на отдельные серверы, компьютеры, или сети (обработка узлов).

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

Состав объекта трехуровневой архитектуры:

 

· уровень представления,

· уровень доступа к данным (бизнес-логика),

· уровень данных.

 

 

 

 



Модель доступа данным

 

         
   

 


Среда передачи данных:

 




Правила работы с данными

 

1.Связь с БД активна только на период выполнения запроса или хранимой процедуры.

 

2.При исполнении команда возвращает либо данные (набор данных), либо код ошибки.

 

3.Если необходимо выполнить последовательность команд: Каждая команда выполняется отдельно, последовательно одна за другой. Между выполняемыми командами соединение с базой отсутствует.

 

4.Команды работы с данными могут содержать параметры (параметризированные запросы):

SELECT * FROM customers WHERE (customer_id=@customerid)

 

5.Значения параметров могут задаваться динамически, во время выполнения приложения.

ASP.NET

ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 4.5

 

ASP.NET —технология динамического создания Web-страниц с помощью кода на стороне сервера.

 

Для создания сайтов на ASP.NET нужно знать:

· С# (или VB.NET)

· HTML

· Java Script

 

ASP

ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам.

Технология:

1. Пишется программа, кладется в файл на сервере

2. Браузер клиента запрашивает файл

3. Файл сначала интерпретируется сервером, на выходе производится HTML-код

4. HTML посылается клиенту

 

Особенности ASP

  1. Файлы asp – это обычные текстовые файлы, содержащие исходные тексты программ. Файлы делаются с помощью любого текстового редактора.

2. Программные фрагменты заключаются в скобки <% %>.

  1. переменные (описывать не обязательно, тип явно не задается)

4. Используются конструкции структурного программирования (if, while, case, etc)

5. Поддерживаются объекты– Object.Property, Object.Method

6. Реализована технология встроенных объектов:Request, Response, Session, Server, Connection, Recordset

6. Можно добавлять другие компоненты

7.Расширение .asp

 

Ввод - Вывод

Вывод :

Response.Write("<h2>Hello, world!</h2>").

 

Response.Buffer - регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы

Response.Redirect - перенаправляет браузер на другую страницу

 

Ввод

Программа на ASP получает данные из других страниц, либо через URL

Передаваемые параметры помещаются во входной поток и доступны через объект Request

 

передать переменную var в программу test.asp

test.asp?var=abc

 

получить значение этой переменной

var = Request("var")

 

Несколько переменных

test.asp?var1=abc&var2=def

 



Формы HTML

 

Начало формы

 

Конец формы

 

Код в вызывающей странице:

<form method="get" action="test.asp">

<input type=text name="var1" value="default">

<input type=hidden name="var2" value="var2value">

<input type=submit value="Submit Form">

</form>

 

Формы HTML используются для организации диалога с пользователем.

 

Поддерживаются стандартные элементы управления:

· INPUT (с параметром TYPE=)

· SELECT

· TEXTAREA

 

Сессия

Сессия – это еще один метод передачи данных между страницами. Одна страница пишет данные в сессию, другая – берет потом оттуда.

 

объект Session создается для каждого нового пользователя

 

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

Записать данные в этот объект

Session("var") = var

Считать данные

var = Session("var")

 

Объект Application

Application существует в единственном экземпляре и может использоваться всеми страницами приложения.

 

Application("var") = var

var = Application("var")

 


Управление приложением

 

4 события: старт/стоп приложения и старт/стоп каждой сессии

 

Для реализации этих событий предназначен файл global.asa (должен располагаться в корневом каталоге приложения)

Стандарт global.asa

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

 

SUB Application_OnStart

END SUB

 

SUB Application_OnEnd

 

END SUB

 

SUB Session_OnStart

 

END SUB

 

SUB Session_OnEnd

 

END SUB

 

</SCRIPT>

 




Работа с базами данных

технологии: ODBC, OLE DB, ADO

пример:

<%

Dim Conn, RS, strSQL, strOut

strOut = ""

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Data-Source-Name"

Set RS = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT * FROM AGENTS ORDER BY USER_ID"

RS.Open strSQL, Conn

RS.MoveFirst

strOut = strOut & "<P>Here is the data:"

strOut = strOut & "<TABLE BORDER=""1"">"

strOut = strOut & "<TR><TH>USER_ID</TH><TH>Name</TH></TR>"

Do While Not RS.EOF

          strOut = strOut & "<TR>"

          strOut = strOut & "<TD>" & RS.Fields("USER_ID") & "</TD>"

          strOut = strOut & "<TD>" & RS.Fields("NAME") & "</TD>"

          strOut = strOut & "</TR>"

          RS.MoveNext

Loop

strOut = strOut & "</TABLE>"

strOut = strOut & "<HR>"

strOut = strOut & "That's it!"

RS.Close

Set RS = Nothing

Conn.Close

Set Conn = Nothing

Response.Write strOut

%>

 

Принципы ASP.NET

  • Основа - Common Language Runtime (CLR),
  • Языки программирования – любые, входящие в комплект .NET Framework (C#, Visual Basic.NET и JScript .NET). Возможны – Perl, и т.п.
  • При первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.

 

Расширения

· ASP.NET AJAX

· ASP.NET MVC Framework

Счет версий ASP.NET происходит параллельно с .NET Framework.



Пример манифеста.

// Metadata version: v2.0.50727 .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )     // .z\V.4.. .ver 2:0:0:0 } .assembly extern Microsoft.VisualStudio.HostingProcess.Utilities.Sync { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )       // .?_....: .ver 9:0:0:0 } .assembly vshost { // пользовательские атрибуты (добавляются автоматически) .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 2E C2 A9 20 4D 69 63 72 6F 73 6F 66 74 20 // ..... Microsoft                                                                                              43 6F 72 70 6F 72 61 74 69 6F 6E 2E 20 41 6C 6C // Corporation. All                                                                                              20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 // rights reserved                                                                                              2E 00 00 )                                   // ... .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyDefaultAliasAttribute::.ctor(string) = ( 01 00 0A 76 73 68 6F 73 74 2E 65 78 65 00 00 ) // ...vshost.exe.. .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 15 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72 // ...Microsoft Cor                                                                                            70 6F 72 61 74 69 6F 6E 00 00 )              // poration.. .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 24 4D 69 63 72 6F 73 6F 66 74 20 28 52 29 // ..$Microsoft (R)                                                                                            20 56 69 73 75 61 6C 20 53 74 75 64 69 6F 20 28 // Visual Studio (                                                                                            52 29 20 32 30 30 38 00 00 )                 // R) 2008.. .custom instance void [mscorlib]System.Resources.NeutralResourcesLanguageAttribute::.ctor(string) = ( 01 00 05 65 6E 2D 55 53 00 00 )              // ...en-US.. .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0B 39 2E 30 2E 33 30 37 32 39 2E 31 00 00 ) // ...9.0.30729.1.. .custom instance void [mscorlib]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 0B 39 2E 30 2E 33 30 37 32 39 2E 31 00 00 ) // ...9.0.30729.1.. .custom instance void [mscorlib]System.Resources.SatelliteContractVersionAttribute::.ctor(string) = ( 01 00 07 39 2E 30 2E 30 2E 30 00 00 )        // ...9.0.0.0.. .custom instance void [mscorlib]System.Reflection.AssemblyKeyFileAttribute::.ctor(string) = ( 01 00 25 66 3A 5C 64 64 5C 74 6F 6F 6C 73 5C 64 // ..%f:\dd\tools\d                                                                                            65 76 64 69 76 5C 46 69 6E 61 6C 50 75 62 6C 69 // evdiv\FinalPubli                                                                                            63 4B 65 79 2E 73 6E 6B 00 00 )              // cKey.snk.. .custom instance void [mscorlib]System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 01 00 00 )   // --- Следующий настраиваемый атрибут добавлен автоматически, не следует отменять преобразование в комментарий ------- // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )   .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx                                                                                                         63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )  // ceptionThrows. .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$..............            00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........            07 D1 FA 57 C4 AE D9 F0 A3 2E 84 AA 0F AE FD 0D // ...W............            E9 E8 FD 6A EC 8F 87 FB 03 76 6C 83 4C 99 92 1E // ...j.....vl.L...            B2 3B E7 9A D9 D5 DC C1 DD 9A D2 36 13 21 02 90 // .;.........6.!..            0B 72 3C F9 80 95 7F C4 E1 77 10 8F C6 07 77 4F // .r<......w....wO            29 E8 32 0E 92 EA 05 EC E4 E8 21 C0 A5 EF E8 F1 // ).2.......!.....            64 5C 4C 0C 93 C1 AB 99 28 5D 62 2C AA 65 2C 1D // d\L.....(]b,.e,.            FA D6 3D 74 5D 6F 2D E5 F1 7E 5E AF 0F C4 96 3D // ..=t]o-..~^....=            26 1C 8A 12 43 65 18 20 6D C0 93 34 4D 5A D2 93 ) // &...Ce. m..4MZ.. .hash algorithm 0x00008004 .ver 9:0:0:0    } .module vshost.exe // MVID: {69704547-92AE-4E10-B632-1498EB2D0B50} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0002  // WINDOWS_GUI .corflags 0x00000009 // ILONLY // Image base: 0x017D0000


Описание директив манифеста

Директива IL Описание
assembly extern <имя Сборки> Указывает внешнюю сборку, необходимую для работы данной (ссылка на общую библиотеку классов mscorlib)
.publickeytoken <хеш> Маркер открытого ключа подключаемой сборки. Необходим для точной идентификации сборки.
.ver <версия> Определяет необход.версию подключаемой сборки
.assembly <имя сборки> Указывает имя сборки. Текстовая строка
.hash algorithm Определяет алгоритм, по которому рассчитывался маркер открытого ключа данной сборки.
.ver 0:0:0:0 Определяет версию сборки. Основной и дополнительный номера версии, номер редакции и номер построения.
.public Открытый ключ, встраиваемый в сборку
.culture Указывает региональную принадлежность сборки и язык
.module <имя файла> Указывает имя основного модуля данной сборки.
module extern<имя Файла> Указывает имя внешнего модуля входящего в данную сборку, на который есть ссылки в коде данной сборки
.imagebase <адрес> Указывает адрес, по которому следует загружать данную сборку в адресное пространство приложения.
.subsystem <константа> Указывает на тип приложения. В нашем случае число 3 указывает на то, что приложение консольное.
.file alignment <512> Определяет выравнивание, использовавшееся компилятором при создании данного файла.
.corflags <константа> Директива является зарезервированной.
.mresource public <название ресурса> Указывает на то, что к сборке будет подключен общедоступный ресурс с заданным именем.
.file <имя файла> Определяет имя файла в котором располагается ресурс.
stackreserve Задает общий объем виртуальной памяти, выделяемой под стека в байтах. Для x86 и x64 по умолчанию 1 МБ. Используется для исполняемого файла.
.entrypoint Указывает на то, что точка входа в приложение будет располагаться в данном модуле.

Сборка. Сведения о версии

 

 


Синтаксис Номера версии сборки :

<основная версия >.< дополнительная версия> .<номер построения>.<редакция>

 

Например, номер версии "2.3.1354.0"

число "2" -код основной версии, "3" — дополнительный (уточняющий) номер версии, "1354" — номер построения, а "0" — номер редакции.

 

Синтаксис Информационной версии сборки :

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

 

Например: "Среда CLR версии 2.0" или "Элемент управления NET 3.5".

В Microsoft Windows эта информация отображается в элементе "Версия продукта" на вкладке "Версии" в диалоговом окне свойств файла

 

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

 

 


Закрытые и общие сборки

Сборка считается закрытой ( private deployment ), если она не предназначена для использования другими приложениями.

Помещают в базовый каталог приложения или в его подкаталог

 

Проблемы безопасности:

· Коллизия имен (возможен такой вариант что ваша сборка использует типы с теми же именами, что используются в разделяемой сборке).

· Вопрос совместимости.

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

 

 

Разделяемые сбороки размещают в поддереве файловой системе

( GAC - global assembly cache) - глобальном кеше сборок.

 

С:\Windows\Assembly\GAC ).

 

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

 

 


6.Способы развертывания сборки в глобальном кэше сборок:

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

 

· Использование инструмента разработчика под названием средство глобального кэша сборок (Gacutil.exe), предоставляемого в SDK (пакет средств разработки программного обеспечения) для Windows (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gasutil.exe)

 

· Использовать Windows Explorer для перетаскивания сборок в кэш.

 

 


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

 



Пример идентификации файла сборки

 

"MyTypes, Verslon=1.0.8123.О, Culture=neutral, PublicKeyToken=b77a5c561934e089" "MyTypes, Version=1.0.8123.О, Culture="en-US", PublicKeyToken=b77a5c561934e089" "MyTypes, Version=2.0.1234.0, Culture=neutral, PublicKeyToken=b77a5c561934e089-T "MyTypes, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

 

Формирование строгого имени

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

 

· Дружественное имя сборки (которое представляет собой имя сборки без файлового расширения)

 

· Номер версии сборки (назначается в атрибуте [AssemblyVersion]).

 

· Значение открытого ключа (назначается в атрибуте [AssemblyKeyFile]).

 

· Значение, обозначающее культуру, которое является необязательным и может предоставляться для локализации приложения (присваивается в атрибуте [AssemblyCulture]).

 

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

 

Утилита для генерации открытого и секретного ключей:

Sn.exe



Пример сборок, размещенных в Кэше

 

 

Common Intermediate Language

 

 



Определения

 

 


.

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

 

 
Сборки это наименьшие строительные блоки платформы .NET, являющиеся её фундаментом

 

 


Задачи Сборок

 

         
хранения кода приложений и библиотек среды .NET
 
обеспечение работы политики версий для приложений .NET.

 

 

Виды сборок

 

                           
располагаются на диске в файлах формата PE (Portable Executable)
располагаются в памяти
создаются во время исполнения программы
 
могут содержать заранее откомпили-рованный IL код
 
Используют специальные средства общей библиотеки классов (FCL), называемые технологией отражения (reflection)
могут содержать дополнительные ресурсы

 

 



Статические сборки

 

 

 

 


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

 

Вызовы между системой и такими приложениями идут при помощи стандартных интерфейсов предоставляемых форматом PE:

 

 








Дата: 2019-02-25, просмотров: 238.