
- •Архитектуры и модели программ и знаний
- •.NET – реализация современных архитектур и моделей программ
- •Немного истории
- •.NET первоначально разработана как набор
- •Инструменты Microsoft .NET
- •Основные идеи и принципы .NET
- •Преимущества подхода .NET
- •аббревиатуры .NET (1/2)
- •Основные концепции и аббревиатуры .NET (2/2)
- •Сравнение платформ .NET и Java
- •Вопросы и домашнее задание к лекции 17

Архитектуры и модели программ и знаний
Лекция 17
Базовые концепции и архитектура .NET
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

|
Литература по .NET |
1. |
Платт Д. Знакомство с Microsoft.NET. - MS Press, 2001 |
2. |
Нейгел К. и др. C# 2008 и платформа .NET 3.5 для |
3. |
профессионалов. – Вильямс, 2008 |
Рихтер Д. CLR via C#. Программирование для платформы |
|
|
Microsoft.NET Framework 2.0 на языке C#. – Русская |
4. |
редакция, 2006. |
Просиз Дж. Программирование для Microsoft.NET. –Русская |
|
5. |
редакция, 2004. |
Petzold Ch. Programming for Microsoft Windows in C# (Vol. 1-2). |
|
6. |
MS Press, 2002. |
Short S. XML Web Services Development with Microsoft.NET - |
|
7. |
2003 |
Franklin K. VB.NET for developers. - 2002 |
|
8. Уоткинз Д., Хаммонд М., Эйбрамз Б. Программирование на |
|
9. |
платформе Microsoft.NET. Вильямс, 2003. |
http://msdn.microsoft.com/net |
10. http://msdn.microsoft.com/net/sscli
11. http://www.gotdotnet.ru
12. V.O. Safonov’s Microsoft.NET course (2004): http://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=5 911
(C) Сафонов В.О. 2012

.NET – реализация современных архитектур и моделей программ
Из всех используемых платформ для разработки программ, .NET имеет наилучшие возможности для реализации большинства рассмотренных в предыдущих лекциях архитектур и моделей программ
.NET предоставляет надежную и безопасную для использования среду для реализации приложений любой сложности и любого видаВ данной части курса (лекции 17 – 22) рассмотрена
платформа .NET как пример наиболее современной платформы для разработки приложений и пример современной архитектуры и модели представления и исполнения программ
(C) Сафонов В.О. 2012

Немного истории
1960е – 1970 е гг. Джон Айлиф. “Принципы построения
базовой машины”;
Burroughs B 5000/6700/B7700 – впервые реализованы идея поддержки многоязыкового программирования и идея теговой архитектуры (динамической типизации)1979-1982. Многопроцессорные вычислительные
комплексы “Эльбрус-1” и “Эльбрус-2” с аппаратной поддержкой языков высокого уровня; многоязыковая система программирования на базе процедурных языков: Эль-76, Pascal, FORTRAN, COBOL, PL/1 и др. (всего реализовано более 20 языков)
Стековая система команд: A+B -> ВЕЛ А; ВЕЛ В; СЛ
Фактически данная система команд использовалась как
промежуточный язык (IL): выполнялась аппаратная JIT компиляция в трехадресную регистровую систему команд
Расширенный файл объектного кода = объектный код (в
постфиксной записи) + его расширение (унифицированные таблицы, представляющие структуру программы и определенные в ней сущности = метаданные)
Литература: Сафонов В.О. Языки и методы
программирования в системе Эльбрус.-М.: Наука, 1989, 400 с.
(C) Сафонов В.О. 2012

.NET первоначально разработана как набор
международных стандартов ECMA, а не как конкретная коммерческая технология
ECMA International (www.ecma-international.org) –
международная некоммерческая ассоциация , включающая
представителей IBM, Microsoft, HP, Sun и др.
В 2000 г. выпущена первая версия ECMA-стандартов .NET (архитектура, CLI, CTS, CLS, библиотеки, C#)
На данный момент имеются три наиболее известных
реализации стандартов .NET – Microsoft.NET, SSCLI/Rotor, Mono
В 2006 г. выпущена новая версия стандартов ECMA .NET. Она включает спецификацию новых возможностей, например, параметризованных типов (generics). Рекомендуется использовать данную версию для ссылок и презентаций
(C) Сафонов В.О. 2012

Инструменты Microsoft .NET
Microsoft.NET Framework SDK – базовый
инструментарий, используемый в режиме командной
строки, бесплатно доступный через Web. Входит в
состав новых версий Windows 2003, Windows Vista. Текущая версия (весна 2008 г.) - .NET Framework 3.5
Microsoft Visual Studio .NET – мощная интегрированная
среда (IDE) для .NET; включает в себя реализации
языков C#.NET, VB.NET, C++.NET, JScript.NET и J#.NET.
Текущая версия – Visual Studio 2008 (Orcas)
Всего в данный момент для .NET реализовано более 30
языков, включая Oberon и Eiffel - объектно- ориентированные языки; ML – язык функционального программирования; Python и многие другие
Shared Source Common Language Infrastructure (SSCLI,
или Rotor) – некоммерческая академическая shared source - версия .NET, работающая в средах Windows 2000/XP/2003, UNIX FreeBSD и MacOS).
Rotor 2.0 – наиболее новая версия – выпущен в марте
2006 г.
Spec# - инструмент для формальной спецификации и
верификации программ на C#
FxCop - инструмент для статического анализа сборок
.NET на соответствие(C) СафоновтребованиямВ.О. 2012 безопасности и др.
Набор правил для анализа является расширяемым

Основные идеи и принципы .NET
Компилятор с любого языка (например, C# или VB)
транслирует исходный код приложения в общий для всех входных языков формат - CIL (Common
Intermediate Language; другое название - MSIL –
Microsoft Intermediate Language);
Кроме CIL-кода, компилятор также генерирует
метаданные – общую для всех языков информацию
о типах и других именованных сущностях (классах,
методах, полях и др.), определенных и
использованных в данном приложении;
CIL + метаданные + манифест = сборка, состоящая
из одного или более PE (Portable Executable) файлов
Во время выполнения CIL-код динамически
компилируется (“на лету” - on-the-fly) в объектный
код конкретной целевой платформы (x86, x64, Mac,
IA-64 и др.) с помощью Just-in-Time (JIT) - компилятора
Все данные, передаваемые через Internet/Intranet,
а также все конфигурационные файлы
представлены в формате XML
(C) Сафонов В.О. 2012

Преимущества подхода .NET
.NET Portable Executable (PE) – файлы, генерируемые
компиляторами NET, и данные в XML-формате могут
быть переданы через Internet (например, по протоколу HTTP) и JIT-компилированы или интерпретированы на
клиентских компьютерах
Использование метаданных во время выполнения
обеспечивает исполнение управляемого кода (managed code execution), с динамическим контролем типов,
проверками безопаснности во время выполнения и т.д.
Программист может разработать свое приложение на
любом удобном ему языке, реализованном для .NET, и
включить в приложение любые модули, написанные на других языках, также реализованных для .NETПовышенная степень безопасности: ролевая безопасность (role-based security), безопасность доступа к коду (code access security), безопасность на основе информации о сборках (evidence-based security),
“прогулка по стеку” (security stack walk)
XML Web-сервисы и ASP.NET – особенно важны для
современного программирования; только для их использования стоит изучить .NET
(C) Сафонов В.О. 2012

аббревиатуры .NET (1/2)
.NET – общая инфраструктура языков, соответствующая стандартам ISO/ECMA; например: Microsoft.NET (работающая в среде Windows 2000/XP/2003/Vista); SSCLI (Rotor) работающая для Windows 2000/XP/2003, UNIX FreeBSD, MacOS)
CLI (Common Language Infrastructure) – ECMA-стандарт на общую инфраструктуру языков .NET
CTS (Common Type System) – ECMA-стандарт на общую систему типов .NET
CLR (Common Language Runtime) – ECMA-стандарт на общее окружение времени выполнения .NET - библиотека, состоящая из нескольких тысяч классов
CIL – ECMA- стандарт на единый промежуточный язык .NET, основанный на постфиксной записи
NB: В документации по Microsoft Phoenix “CIL” означает промежуточный язык компилятора Visual C++ !
VES (Virtual Execution System) – виртуальная машина CLR, используемая для исполнения управляемого кода
COR (Common Object Runtime) – предшественник .NET. Данное сокращение до сих пор используется в именах системных файлов
.NET, например, msCORee.dll – главная DLL .NET
LINQ (Language – INtegrated Query) – запросы к базам данных (MS SQL Server) непосредственно из языков .NET (C#, VB.NET, C++.NET) – начиная с .NET 3.0, 2006 г.
(C) Сафонов В.О. 2012

Основные концепции и аббревиатуры .NET (2/2)
Метаданные (metadata) – единое (табличное)
представление информации о типах и других именованных
сущностях, определеленных и используемых в .NET-
приложении. По структуре очень близки к реляционной СУБД
Манифест (manifest) – содержимое (“инвентарный список”)
сборки, в частности, включающей PE-файл,
представляющий данную сборку
PE (Portable Executable) – файл переносимого исполняемого кода, содержащий CIL-код, метаданные, ресурсы и манифест
Сборка (Assembly) – представление программы в форме PE- файла или набора PE-файлов, генерируемых
компилятором .NET
WPF (Windows Presentation Foundation) – API для
представления GUI в Windows на основе .NET
WCF (Windows Communication Foundation) – API для
сетевого программирования на основе .NET
(C) Сафонов В.О. 2012