.NET Framework

Поделись знанием:
(перенаправлено с «Microsoft .NET»)
Перейти к: навигация, поиск
.NET Framework
Тип

Компьютерная платформа

Разработчик

Microsoft

Операционная система

Windows, ReactOS, OS X, GNU/Linux

Последняя версия

4.6.2 (20 июля 2016)

Лицензия

MIT[1]

Сайт

[www.microsoft.com/net rosoft.com/net]

К:Википедия:Статьи без изображений (тип: не указан)

.NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.

Считается, что платформа .NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит Oracle).

Хотя .NET является патентованной технологией корпорации Microsoft и официально рассчитана на работу под операционными системами семейства Microsoft Windows, существуют независимые проекты (прежде всего это Mono и Portable.NET), позволяющие запускать программы .NET на некоторых других операционных системах.





Разработка

Разработка платформы началась в 1999 году[2]. Официально о разработке новой технологии было объявлено 13 января 2000 года, в день, когда Билл Гейтс официально объявил о передаче поста главы Microsoft Стиву Балмеру. В этот день руководством корпорации была озвучена новая стратегия компании, получившая название Next Generation Windows Services (NGWS, «новое поколение служб Windows»). Новая стратегия должна была объединить в единый набор существующие и будущие разработки Microsoft для предоставления возможности пользователям работать со Всемирной паутиной с беспроводных устройств, обладающих доступом в Интернет, как со стационарных компьютеров[3].

Цели и задачи

Во время проходящей в тот день пресс-конференции Балмер заявил, что, несмотря на огромные возможности домашних компьютеров, корпорация считает важным обеспечение гарантированной работы служб нового поколения и на устройствах, отличных от ПК. Что касается Гейтса, то аналитик компании Patricia Seybold Group Энн Томас Мейнс, проанализировав его слова, заявила о том, что компании будет полезен отход от ориентации исключительно на стационарные компьютеры и переход к разработке под мобильные устройства. По её оценке, Гейтс провозгласил курс на переход к новой эре работы с компьютером, которая не будет жёстко привязана к Windows[3].

Ввиду небольшой мощности источников питания мобильных устройств хранение и передача приложений должна осуществляться серверами, тогда как на тот момент практически вся пользовательская информация и ПО хранились на стационарных компьютерах локально. Тогда идея перехода к «сервероцентрической» модели имела крепкую поддержку среди руководителей крупнейших IT-компаний. Так, например, Скотт МакНилли, глава Sun Microsystems, объявил о приобретении компании офисного ПО, конкурировавшего с Microsoft Office, для перехода к сервер-клиентскому ПО[3].

У Microsoft на тот момент было множество причин перехода к новой стратегии. Компания доминировала на рынке операционных систем и веб-браузеров, обладала множеством наработок в области ПО для Интернета, включая порталы MSN и WebTV, а также имела долю в компаниях, занимавшихся предоставлением ПО в прокат через Интернет[3]. Кроме того, как позднее вспоминал Андерс Хейлсберг, у корпорации имелось множество различных (и зачастую несовместимых между собой) сред и технологий программирования, поскольку разработка инструментов для программистов была языкоориентированной, то есть для Visual Basic существовал свой набор приложений, а для C++ — свой. Поэтому одной из целей разработки новой платформы было объединение всех наиболее удачных наработок в рамках единой платформы и их унификация. Кроме того, ставилась задача следования всем актуальным тенденциям в области программирования на тот момент. Так, например, новая платформа должна была напрямую поддерживать объектно-ориентированность, безопасность типов, сборку мусора и структурную обработку исключений. Кроме того, корпорации необходимо было предоставить свой ответ набиравшей популярность платформе Java от Sun Microsystems[4].

Согласно озвученным на тот момент планам, в них входила разработка новой версии операционной системы, а также новой версии среды разработки для программистов, которая была бы предназначена для разработки веб-ориентированных приложений. Кроме того, переведён на новую платформу должен был быть и Microsoft Office. Пол Моритц, вице-президент Microsoft, в качестве одной из будущих служб новой стратегии привёл в пример службу Passport, представлявшую собой электронный бумажник, позволяющий пользователям, зарегистрировавшись однажды, совершать онлайн-покупки без необходимости ввода на различных сайтах номеров кредитных карт и персональных данных. Тогда же, на конференции, Балмер привёл пример реализации новой стратегии, которая позволит пациентам решать множество их проблем через Интернет, начиная с чтения своей медицинской карты и заканчивая оплатой счетов от врачей за медицинские услуги[3].

По словам Моритца, основой для новой стратегии компании послужила разработка Windows DNA 2000, представленная в сентябре 1999 года. Windows DNA 2000 объединила в себе новую версию СУБД SQL Server и новые программные инструменты для облегчения разработки веб-приложений[3].

Концепция

В феврале 2000 года Стив Балмер, выступая на конференции VBITS 2000 в Сан-Франциско, рассказал о новой версии Visual Basic и Visual C++, являвшихся до той поры краеугольными камнями Visual Studio. Поскольку график выхода версий Visual Studio к тому моменту был заметно нарушен (Visual Studio 6.0 вышла в сентябре 1998 года, а до этого выпуски входящих в её состав инструментов происходили ежегодно), то информация о нововведениях вызывала изрядный интерес[5].

Тогда же Балмер и представил концепцию стратегии NGWS (рабочее название которой Балмер счёл весьма ужасным и пообещал сменить его к моменту выпуска) в виде некоей программной платформы, которая позволит пользователям Windows получать доступ к множеству веб-служб. Для этого Microsoft рассчитывала значительно изменить Windows-платформу. Первым шагом к новой версии платформы стала Windows 2000, которую Балмер назвал основой «пользовательского знакомства с Интернет». Windows 2000 являлась одной из частей технологии Windows Distributed interNet Applications (DNA) 2000, в рамках которой была представлена последняя на тот момент схема трёхуровневой модели программирования, впервые представленная на Windows NT 4.0[5].

На тот момент данная схема состояла из клиентской части (Windows- или веб-приложение), среднего уровня, базировавшегося на компонентах COM+, и базы данных (как правило, SQL Server). NGWS должна была сменить путь разработки Windows DNA на исключительное использование XML как стандарта обмена данными. XML был выбран потому, что являлся развитием языка разметки HTML, ставшего основным языком разметки во Всемирной паутине, а кроме того, он предоставлял удобный способ описания данных. В модели NGWS каждая часть трёхзвенной структуры (клиентское приложение, промежуточный слой и база данных) должна была взаимодействовать с остальными при помощи XML-пакетов. Для упрощения разработки кода с использованием XML предполагалось, что новая версия Visual Studio будет генерировать XML-код, освобождая разработчиков от необходимости ручного написания XML-кода[5].

Так, например, планировалось, что разработчики смогут писать веб-сайт для электронной коммерции целиком на новой версии Visual Basic, а благодаря тому, что обмен информацией будет происходить при помощи XML, разработчики смогут создавать клиентские приложения, функционирующие на Linux, Solaris и Mac OS. То есть для того, чтобы приложение или операционная система могли взаимодействовать друг с другом, нужна была лишь поддержка стандарта с их стороны[5].

Для демонстрации своего замысла Microsoft запустила веб-сайт [www.passport.com/ Passport], зайдя на который, пользователь мог бесплатно завести себе электронный кошелёк (eWallet), упрощавший процесс совершения покупок в интернет-магазинах[5].

Смена названия

22 июня 2000 года на проходившем в Редмонде Forum 2000 Билл Гейтс заявил о переименовании платформы в Microsoft.Net, объявив при этом, что «стратегия корпорации целиком и полностью будет определяться платформой .Net», а все продукты Microsoft со временем будут переписаны для поддержки этой платформы. Также, по его словам, в течение ближайших двух лет Microsoft планировала выпуск новой версии своей ОС (было озвучено предполагаемое название Windows.Net, позже реализованный как Microsoft Singularity) и комплекта средств разработки, который должен был называться Visual Studio.Net. Помимо этого, изменения должны были затронуть и серверные приложения — Microsoft SQL Server, Exchange, BizTalk, а офисный пакет Microsoft Office должен был быть преобразован в Office.Net[6].

К выступлению Гейтса на июньском Forum 2000 было приурочено и опубликование документа под названием Microsoft .NET: Realizing the Next Generation Internet (англ. Microsoft .NET: Создавая Интернет следующего поколения) на официальном сайте Microsoft. В нём приводился общий обзор новой платформы, а само появление новой платформы описывалось как некая «революция». В этом документе впервые было приведено описание (хотя и краткое) технической реализации платформы. Так, разработчикам предлагалось вместо ручного набора большой массы кода собирать свои приложения из готовых блоков, что должно было ускорить разработку ПО. К таким «строительным блокам» относились, в частности, следующие модули:

  • Identity («Личность») — технология, объединяющая Windows-аутентификацию и Microsoft Passport, созданная для обеспечения различных уровней безопасности, начиная от паролей и электронных кошельков и заканчивая смарт-картами и устройствами биометрической идентификации[7].

Презентация предварительной версии .NET

11 июля 2000 года на PDC во Флориде состоялась презентация предварительной версии .NET Framework, которая была представлена как «часть .NET Platform»[8].

Выпуск первых версий

12 ноября 2000 года Microsoft опубликовала на своём сайте .NET Framework SDK Beta 1, содержащий всё необходимое для первых опытов с новой платформой. Однако из-за «сырости» программы компания рекомендовала ставить её только на компьютеры, предназначенные исключительно для тестов. Данный SDK мог работать лишь в Windows 2000, Windows NT 4.0 (содержащий NTOP для поддержки ASP.NET), Windows 98 и Windows ME, причём стабильная работа с незадолго до этого вышедшим SQL Server 2000 вовсе не гарантировалась[9]. Данная версия содержала огромное количество ошибок, начиная с проблем при установке и заканчивая неполной поддержкой собственных пространств имён в зависимости от версии Windows[10].

Базовые принципы проектирования

Основной идеей при разработке .NET Framework являлось обеспечение свободы разработчика за счёт предоставления ему возможности создавать приложения различных типов, способные выполняться на различных типах устройств и в различных средах[11].

Вторым принципом стала ориентация на системы, работающие под управлением семейства операционных систем Microsoft Windows[11].

Архитектура .NET

Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). В терминах .NET получается сборка, англ. assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Архитектура .NET Framework описана и опубликована в спецификации Common Language Infrastructure (CLI), разработанной Microsoft и утверждённой ISO и ECMA. В CLI описаны типы данных .NET, формат метаданных о структуре программы, система исполнения байт-кода и многое другое.

Объектные классы .NET, доступные для всех поддерживаемых языков программирования, содержатся в библиотеке Framework Class Library (FCL). В FCL входят классы Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation и другие. Ядро FCL называется Base Class Library (BCL).

Среды разработки

Среды разработки, поддерживающие .NET:

Приложения .NET также можно разрабатывать в текстовом редакторе, просто вызывая компилятор из командной строки.

Версии

Microsoft начала разрабатывать .NET Framework в конце 1990-х под именем «Next Generation Windows Services» (NGWS). В 2000 году была выпущена первая бета-версия .NET 1.0.

Версия CLR Номер версии Дата выхода Visual Studio По умолчанию в Windows Заменяет
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 Windows Server 2003 1.0
2.0 2.0 2.0.50727.42 11 июля 2005 года Visual Studio 2005 Windows Vista, Windows 7, Windows Server 2008 R2 -
3.0 2.0 3.0.4506.30 6 ноября 2006 года Visual Studio 2005 + расширения Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2 2.0
3.5 2.0 3.5.21022.8 9 ноября 2007 года Visual Studio 2008 Windows 7, Windows Server 2008 R2 2.0, 3.0
4.0 4 4.0.30319.1 12 апреля 2010 года Visual Studio 2010 Windows 8, Windows Server 2012 -
4.5 4 4.5.50709.17929 15 августа 2012 года Visual Studio 2012 Windows 8, Windows Server 2012 4.0
4.5.1 4 4.5.50938.18408 17 октября 2013 года Visual Studio 2013 Windows 8.1, Windows Server 2012 R2 4.0, 4.5
4.5.2 4 4.5.51209.34209 5 мая 2014 года 4.0-4.5.1
4.6 4 4.6.1038.0 20 июля 2015 года Visual Studio 2015 Windows 10 4.0-4.5.2
4.6.1 4 4.6.23123.0 17 ноября 2015 года Visual Studio 2015 Update 1 Windows 10 Version 1511 4.0-4.6
4.6.2 4 20 июля 2016 года 4.0-4.6.1

Поддержка ОС

[12] [13] [14]

Версия .NET Framework
ОС 1.0 1.1 2.0 3.0 3.5 4.0 4.5 4.5.1 4.5.2 4.6 4.6.1 4.6.2
Windows 98 +
Windows NT +
Windows Me +
Windows 2000 + + +
Windows XP + + + + + +
Windows Server 2003 + + + + +
Windows Server 2008 + + + + + + + +
Windows Vista + + + + + + + +
Windows 7 + + + + + + + + + +
Windows Server 2008 R2 + + + + + + + + + +
Windows Server 2012 + + + + + + + + + +
Windows 8 + + + + + + + + + +
Windows 8.1 + + + + + + + + + +
Windows Server 2012 R2 + + + + + + + + + +
Windows 10 + + + + + + + + + +

.NET Framework 1.0

Первый релиз .NET Framework вышел 5 января 2002 года для Windows 98, NT 4.0, 2000 и XP. Общая поддержка, осуществляемая компанией Майкрософт, закончилась 10 июля 2007 года, расширенная поддержка закончилась 14 июля 2009 года[15].

.NET Framework 1.1

Следующий релиз .NET Framework вышел 1 апреля 2003 года. Это была первая версия, автоматически устанавливаемая вместе с операционной системой (Windows Server 2003). Для более старых операционных систем .NET Framework 1.1 была доступна в виде отдельного установочного пакета. Общая поддержка, осуществляемая компанией Майкрософт, закончилась 14 октября 2008 года, а расширенная поддержка закончилась 8 октября 2013 года[15].

.NET Framework 2.0

Версия 2.0 была выпущена одновременно с Visual Studio 2005, SQL Server 2005 и BizTalk 2006. С выходом версии 2.0 была добавлена поддержка настраиваемых (обобщённых) (англ. generic) классов, анонимных методов, полная поддержка 64-битных платформ x64 и IA-64. Общая поддержка, осуществляемая компанией Майкрософт, закончилась 12 апреля 2011 года, а расширенная поддержка закончилась 12 апреля 2016 года[15].

.NET Framework 3.0

Первоначально .NET Framework 3.0 носила имя WinFX, что отражало её суть: расширение .NET Framework 2.0 с сохранением всех библиотек и добавлением четырёх новых компонентов:

Поддержка, осуществляемая компанией Майкрософт, закончилась 12 июля 2011 года[15].

.NET Framework 3.5

Как и версия 3.0, .NET 3.5 использует CLR версии 2.0. Новшества по сравнению с .NET Framework 3.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

.NET Framework 4.0

Microsoft анонсировала .NET 4.0 29 сентября 2008 года[16]. Первая бета-версия появилась 20 мая 2009 года, вместе с бета-версией Visual Studio 2010[17]. Нововведения включают в себя:

  • Parallel Extensions — PLINQ (Parallel LINQ) и библиотеку параллельных задач (Task Parallel Library)[18], предназначенные для упрощения программирования для многопроцессорных и распределённых систем
  • Нововведения в 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

При установке заменяет .NET Framework 4.0. Несовместима с Windows XP и более ранними версиями Windows. Нововведения включают в себя:

  • Возможность уменьшения количества перезапусков системы путём обнаружения и закрытия приложений платформы .NET Framework версии 4 во время развертывания.
  • Поддержка массивов, размер которых превышает 2 гигабайта (ГБ) на 64-разрядных платформах.
  • Улучшенная производительность благодаря фоновой сборке мусора для серверов. При использовании серверной сборки мусора в .NET Framework 4.5 фоновая сборка мусора включается автоматически.
  • Фоновая компиляция по требованию (JIT), которая опционально доступна на многоядерных процессорах для повышения производительности приложения.
  • Возможность ограничить, как долго обработчик регулярных выражений будет пытаться разрешить регулярное выражение до истечения времени ожидания.
  • Возможность определить культуру по умолчанию для домена приложения.
  • Поддержка кодировки Юникод (UTF-16) в консоли.
  • Поддержка управления версиями культурных данных сортировки и сравнения строк.
  • Улучшенная производительность при извлечении ресурсов.
  • Улучшения сжатия ZIP.
  • Возможность настраивать контекст отражения для переопределения поведения отражения по умолчанию.
  • Поддержка версии 2008 стандарта интернационализированных доменных имен в приложениях, когда класс используется в Windows 8.
  • Делегирование сравнения строк операционной системе, которая реализует Юникод 6.0, если платформа .NET Framework используется в Windows 8. При работе на других платформах платформа .NET Framework включает собственные сведения о сравнении строк, которые реализуют Юникод 5.xx.
  • Возможность вычисления хэш-кода для строк на основе домена для каждого приложения.
  • Поддержка JSON

.NET Framework 4.5.1

.NET Framework 4.5.1 выпущен 17 октября 2013 года вместе с Visual Studio 2013. Эта версия требует Windows Vista SP2 или более свежую версию, и поставляется вместе с Windows 8.1 и Windows Server 2012 R2.

.NET Framework 4.5.2

.NET Framework 4.5.2 является обновлением .NET Framework 4.5.1, .NET Framework 4.5, и .NET Framework 4. Устанавливается, при необходимости, бок о бок с .NET Framework 3.5 Service Pack 1.

.NET Framework 4.6

.NET Framework 4.6 является обновлением .NET Framework 4.5.2, .NET Framework 4.5.1, .NET Framework 4.5, и .NET Framework 4. Устанавливается, при необходимости, бок о бок с .NET Framework 3.5 Service Pack 1.

Является частью редакции Microsoft Visual Studio 2015.

.NET Framework 4.6 поддерживает новый JIT-компилятор для 64-разрядных систем (RyuJIT); WPF и WinForms обновлены для поддержки экранов с высоким DPI; в WCF была добавлена поддержка TLS 1.1 и TLS 1.2. Криптографический API в .NET Framework 4.6 использует последнюю версию API от Microsoft CryptoAPI, благодаря этому стал доступен набор алгоритмов шифрования «Suite B» — AES, SHA-2, Elliptic curve Diffie-Hellman, ECDSA[19].

.NET Framework 4.6.1

.NET Framework 4.6.1 является обновлением .NET Framework 4.6, .NET Framework 4.5.2, .NET Framework 4.5.1, .NET Framework 4.5, и .NET Framework 4. Устанавливается, при необходимости, бок о бок с .NET Framework 3.5 Service Pack 1.

Является частью редакции Microsoft Visual Studio 2015 Update 1.

.NET Framework 4.6.2

.NET Framework 4.6.2 является обновлением .NET Framework 4.6.1, .NET Framework 4.6, .NET Framework 4.5.2, .NET Framework 4.5.1, .NET Framework 4.5, и .NET Framework 4. Устанавливается, при необходимости, бок о бок с .NET Framework 3.5 Service Pack 1.

Языки программирования в .NET

Одной из основных идей Microsoft .NET является совместимость программных частей, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

Языки, поставляемые вместе с Microsoft Visual Studio:

Критика

Реализация платформы .NET Framework вызывала и вызывает множество нареканий.

  • Одним из главных объектов критики является менее рациональное использование ресурсов системы по сравнению с другими технологиями. Так, например, несколько приложений, выполняющихся в управляемой среде, стремятся захватить больше ресурсов, чем приложения того же типа, но обладающие более прямым доступом к ресурсам компьютера.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 3152 дня]
  • Недовольство разработчиков вызывает тот факт, что управляемый CIL-байткод, не подвергшийся обфускации, легко может быть декомпилирован в сравнении с естественным кодом, что может привести к потере коммерческой тайны или дать возможность обхода механизмов контроля соблюдения лицензионных соглашений.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 3152 дня]
  • С технической точки зрения платформа также подвергалась критике из-за отсутствия поддержки вызовов Streaming SIMD Extensions (SSE) в управляемом коде. В Mono решили эту проблему, добавив поддержку SIMD Extensions версии 2.2 в пространство имён Mono.Simd. В состав .NET Framework 4.6 входит новый JIT-компилятор RyuJIT, поддерживающий SIMD через пространство имён Microsoft.Bcl.Simd[20].
  • Ещё одним поводом для критики является поддержка стандартов, фактически ограничивающих кросс-платформенную реализацию .NET Framework, в результате чего полноценная реализация платформы присутствует лишь для Windows. Частично подобная труднопереносимость компенсируется разработкой нескольких версий платформы для мобильных устройств, а также урезанными версиями .NET Framework для других операционных систем. Однако, несмотря на близость стандартов, принятых при разработке этих версий, конечные реализации полной совместимостью не обладают[21].
  • Новые версии платформы (3.5 и далее) вызвали новую волну недовольства тем, что они не предустанавливаются в версии Windows, предшествовавшие выходу Windows 7, что вынуждает пользователей тратить значительное время на их установку[21].

Альтернативные реализации

  • .NET Compact Framework — версия .NET Framework, предназначенная для запуска приложений на устройствах, основанных на платформе Windows CE.
  • .NET Micro Framework — реализация платформы Microsoft .NET для встраиваемого применения в 32- и 64-разрядных микроконтроллерах.
  • Mono
  • Portable.NET
  • DotGNU

Mono

Mono — проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения. Основной разработчик проекта Mono — компания Xamarin[22], ранее Novell. После заключения Microsoft договорённости с Novell[23] платформа Mono была официально признана реализацией .NET на Unix-подобных операционных системах: Linux, Mac OS X и других. (Хотя Mono успешно работает и под Microsoft Windows). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение[24]). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API[24].

.NET Core

.NET Core является кроссплатформенным (Windows, Mac, Linux) аналогом .NET Framework, с открытым исходным кодом. Он содержит среду CoreCLR — кросс-платформенную реализацию CLR, в которую входит JIT-компилятор — RyuJIT. Также .NET Core включает в себя CoreFX — набор библиотек, функциональность которых частично совпадает с BCL: API .NET Core предоставляет подмножество API .NET Framework, но также и предоставляет ряд собственных API.

.NET Core версии 1.0 выпущен 27 июня 2016 года[25], вместе с Microsoft Visual Studio 2015 Update 3, в которой поддерживается разработка под .NET Core.

См. также

Напишите отзыв о статье ".NET Framework"

Примечания

  1. [www.opennet.ru/opennews/art.shtml?num=41045 Компания Microsoft анонсировала открытие платформы .Net и её портирование для Linux] (рус.)
  2. Стив Резник, Ричард Крейн, Крис Боуэн. Вступление // Основы Windows Communication Foundation для .NET Framework 3.5 = Windows Communication Foundation for .NET Framework 3.5 / Пер. с англ. Слинкина А. А.. — М.: ДМК Пресс, 2008. — С. 16. — 480 с. — ISBN 978-5-94074-465-8.
  3. 1 2 3 4 5 6 [news.cnet.com/2100-1001-235651.html Redmond maps plans for life after the PC] (англ.)
  4. [www.computerworld.com.au/article/261958/-z_programming_languages_c The A-Z of Programming Languages: C#] (англ.)
  5. 1 2 3 4 5 [www.windowsitpro.com/article/windows-2000/an-early-look-at-microsoft-s-next-generation-windows-services An Early Look at Microsoft’s Next Generation Windows Services] (англ.)
  6. [www.osp.ru/cw/2000/25/5618/ Windows разделят на услуги]
  7. [web.archive.org/web/20000815055022/www.microsoft.com/net/whitepaper.asp Microsoft .NET: Realizing the Next Generation Internet] (англ.)
  8. [web.archive.org/web/20000815094324/www.microsoft.com/presspass/features/2000/jul00/07-11.NETframework.asp Microsoft .NET Framework Unites Programming Languages For Web-Based Future] (англ.)
  9. [web.archive.org/web/20001027031350/msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml MSDN Online Downloads. .NET Framework SDK Beta 1] (англ.)
  10. [web.archive.org/web/20010502071039/beta.visualstudio.net/NonSecuredContent.aspx?ContentID=374#setupissues .NET Framework SDK: Late-Breaking Known Issues] (англ.)
  11. 1 2 [www.zabalnet.com/overview-highlight-principal-design-features.html Principal Design Features of .NET Framework] (англ.)
  12. [msdn.microsoft.com/ru-ru/library/8z6watww(v=vs.110).aspx Требования к системе для .NET Framework (4 и выше)]
  13. [msdn.microsoft.com/ru-ru/library/8z6watww(v=vs.100).aspx Требования к системе для .NET Framework (2,0 — 4)]
  14. [msdn.microsoft.com/ru-ru/library/8z6watww(v=vs.90).aspx Требования к системе для .NET Framework (1,0 — 3,5)]
  15. 1 2 3 4 [support.microsoft.com/lifecycle/search/?sort=PN&alpha=.NET+Framework Сведения о жизненном цикле различных версий .NET Framework]
  16. [www.cnews.ru/news/line/index.shtml?2008/09/30/320602 CNews: Microsoft анонсировала Visual Studio 2010 и .NET Framework 4.0]
  17. [blogs.msdn.com/somasegar/archive/2009/05/18/visual-studio-2010-and-net-fx-4-beta-1-ships.aspx Visual Studio 2010 and .NET FX 4 Beta 1 ships!]
  18. [msdn.microsoft.com/ru-ru/library/dd537609.aspx Task Parallel Library — библиотека параллельных задач]
  19. [blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx Announcing .NET Framework 4.6]. Microsoft (20 July 2015).
  20. [blogs.msdn.com/b/clrcodegeneration/archive/2014/10/31/ryujit-ctp5-getting-closer-to-shipping-and-with-better-simd-support.aspx RyuJIT CTP5: Getting closer to shipping, and with better SIMD support] (англ.) (30 October 2014).
  21. 1 2 [www.zabalnet.com/discussion-criticism-microsoft-net.html Criticism Of Microsoft .NET Framework] (англ.)
  22. [www.xamarin.com Mobile App Development & App Creation Software — Xamarin]
  23. [www.novell.com/ru-ru/linux/microsoft/openletter.html Совместное письмо Novell и Microsoft Сообществу Open Source]
  24. 1 2 [mono-project.com/FAQ:_Licensing FAQ: Licensing — Mono]
  25. [arstechnica.com/information-technology/2016/06/net-core-1-0-released-now-officially-supported-by-red-hat/ .NET Core 1.0 released, now officially supported by Red Hat]. Condé Nast (27 июня 2016).

Литература

Ссылки

  • [www.microsoft.com/net/ Microsoft .NET Homepage]
  • [msdn.microsoft.com/ru-ru/netframework/default.aspx Центр разработчиков .NET]
  • [msdn.microsoft.com/library/ms171868.aspx Новые возможности .NET Framework 4]
  • [msdn.microsoft.com/ru-ru/library/ms229335.aspx Библиотека классов .NET Framework 4]
  • [download.microsoft.com/download/1/F/F/1FFD7C7E-9A88-4DD4-9717-B25675D64D15/NETFx4RTM.htm Документация .NET Framework 4]
  • [www.microsoft.com/downloads/ru-ru/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=ru Центр загрузки Microsoft .NET Framework 4]
  • [win-server.ru/p/20 Устранение ошибок при установке .NET Framework] — решение типичных проблем.
  • [www.mono-project.com/ Mono homepage]
  • [www.gotmono.com/ The Mono Community]
  • [www.nullenvoid.com/mono/wiki/ Mono Wiki]
  • [www.dotnetspace.com/ DotNetSpace] — Asp.Net 2.0 Articles and code examples.
  • [www.ecma-international.org/publications/standards/Ecma-335.htm Ecma-335]
  • [www.ecma-international.org/publications/standards/Ecma-334.htm Ecma-334]
  • [www.ecma-international.org/publications/standards/Ecma-372.htm Ecma-372]
  • [bdn.borland.com/article/0,1410,32056,00.html Running .NET on Linux or Windows]
  • [monobrasil.softwarelivre.org MonoBrasil A Brazilian Mono WebSite]
  • [www.aspnetmania.com/ ASP.NET Mania] — сайт о .NET на русском языке.
  • [habrahabr.ru/search/?target_type=posts&order_by=relevance&q=.NET*&flow= Хабр] — сайт, содержащий крупный раздел о .NET.
  • [www.gotdotnet.ru/ Got Dot Net] — сайт о .NET на русском языке.
  • [www.rsdn.ru/ RSDN] — сайт, содержащий крупный раздел о .NET.
  • [boxedapp.ru/blog/2008/06/17/dotnet_embedding/ BoxedApp] — блог-пост о том, из чего состоит .net рантайм, и как его внедрить в приложение.
  • [mindberg.blogspot.com/2006/08/net.html Введение в .NET] — о причине появления .NET, отличие .NET-программ от обычных, перспективы.
  • [bit.pirit.info Форум по .Net] — русскоязычный форум, посвящённый программированию на Visual Basic 6.0 и .Net, ASP.Net.
  • [www.vbfaq.ru/ Visual Basic FAQ] — База готовых кодов на Visual Basic. Часто задаваемые вопросы.

Отрывок, характеризующий .NET Framework

Увидав русского генерала, он по королевски, торжественно, откинул назад голову с завитыми по плечи волосами и вопросительно поглядел на французского полковника. Полковник почтительно передал его величеству значение Балашева, фамилию которого он не мог выговорить.
– De Bal macheve! – сказал король (своей решительностью превозмогая трудность, представлявшуюся полковнику), – charme de faire votre connaissance, general, [очень приятно познакомиться с вами, генерал] – прибавил он с королевски милостивым жестом. Как только король начал говорить громко и быстро, все королевское достоинство мгновенно оставило его, и он, сам не замечая, перешел в свойственный ему тон добродушной фамильярности. Он положил свою руку на холку лошади Балашева.
– Eh, bien, general, tout est a la guerre, a ce qu'il parait, [Ну что ж, генерал, дело, кажется, идет к войне,] – сказал он, как будто сожалея об обстоятельстве, о котором он не мог судить.
– Sire, – отвечал Балашев. – l'Empereur mon maitre ne desire point la guerre, et comme Votre Majeste le voit, – говорил Балашев, во всех падежах употребляя Votre Majeste, [Государь император русский не желает ее, как ваше величество изволите видеть… ваше величество.] с неизбежной аффектацией учащения титула, обращаясь к лицу, для которого титул этот еще новость.
Лицо Мюрата сияло глупым довольством в то время, как он слушал monsieur de Balachoff. Но royaute oblige: [королевское звание имеет свои обязанности:] он чувствовал необходимость переговорить с посланником Александра о государственных делах, как король и союзник. Он слез с лошади и, взяв под руку Балашева и отойдя на несколько шагов от почтительно дожидавшейся свиты, стал ходить с ним взад и вперед, стараясь говорить значительно. Он упомянул о том, что император Наполеон оскорблен требованиями вывода войск из Пруссии, в особенности теперь, когда это требование сделалось всем известно и когда этим оскорблено достоинство Франции. Балашев сказал, что в требовании этом нет ничего оскорбительного, потому что… Мюрат перебил его:
– Так вы считаете зачинщиком не императора Александра? – сказал он неожиданно с добродушно глупой улыбкой.
Балашев сказал, почему он действительно полагал, что начинателем войны был Наполеон.
– Eh, mon cher general, – опять перебил его Мюрат, – je desire de tout mon c?ur que les Empereurs s'arrangent entre eux, et que la guerre commencee malgre moi se termine le plutot possible, [Ах, любезный генерал, я желаю от всей души, чтобы императоры покончили дело между собою и чтобы война, начатая против моей воли, окончилась как можно скорее.] – сказал он тоном разговора слуг, которые желают остаться добрыми приятелями, несмотря на ссору между господами. И он перешел к расспросам о великом князе, о его здоровье и о воспоминаниях весело и забавно проведенного с ним времени в Неаполе. Потом, как будто вдруг вспомнив о своем королевском достоинстве, Мюрат торжественно выпрямился, стал в ту же позу, в которой он стоял на коронации, и, помахивая правой рукой, сказал: – Je ne vous retiens plus, general; je souhaite le succes de vorte mission, [Я вас не задерживаю более, генерал; желаю успеха вашему посольству,] – и, развеваясь красной шитой мантией и перьями и блестя драгоценностями, он пошел к свите, почтительно ожидавшей его.
Балашев поехал дальше, по словам Мюрата предполагая весьма скоро быть представленным самому Наполеону. Но вместо скорой встречи с Наполеоном, часовые пехотного корпуса Даву опять так же задержали его у следующего селения, как и в передовой цепи, и вызванный адъютант командира корпуса проводил его в деревню к маршалу Даву.


Даву был Аракчеев императора Наполеона – Аракчеев не трус, но столь же исправный, жестокий и не умеющий выражать свою преданность иначе как жестокостью.
В механизме государственного организма нужны эти люди, как нужны волки в организме природы, и они всегда есть, всегда являются и держатся, как ни несообразно кажется их присутствие и близость к главе правительства. Только этой необходимостью можно объяснить то, как мог жестокий, лично выдиравший усы гренадерам и не могший по слабости нерв переносить опасность, необразованный, непридворный Аракчеев держаться в такой силе при рыцарски благородном и нежном характере Александра.
Балашев застал маршала Даву в сарае крестьянскои избы, сидящего на бочонке и занятого письменными работами (он поверял счеты). Адъютант стоял подле него. Возможно было найти лучшее помещение, но маршал Даву был один из тех людей, которые нарочно ставят себя в самые мрачные условия жизни, для того чтобы иметь право быть мрачными. Они для того же всегда поспешно и упорно заняты. «Где тут думать о счастливой стороне человеческой жизни, когда, вы видите, я на бочке сижу в грязном сарае и работаю», – говорило выражение его лица. Главное удовольствие и потребность этих людей состоит в том, чтобы, встретив оживление жизни, бросить этому оживлению в глаза спою мрачную, упорную деятельность. Это удовольствие доставил себе Даву, когда к нему ввели Балашева. Он еще более углубился в свою работу, когда вошел русский генерал, и, взглянув через очки на оживленное, под впечатлением прекрасного утра и беседы с Мюратом, лицо Балашева, не встал, не пошевелился даже, а еще больше нахмурился и злобно усмехнулся.
Заметив на лице Балашева произведенное этим приемом неприятное впечатление, Даву поднял голову и холодно спросил, что ему нужно.
Предполагая, что такой прием мог быть сделан ему только потому, что Даву не знает, что он генерал адъютант императора Александра и даже представитель его перед Наполеоном, Балашев поспешил сообщить свое звание и назначение. В противность ожидания его, Даву, выслушав Балашева, стал еще суровее и грубее.
– Где же ваш пакет? – сказал он. – Donnez le moi, ije l'enverrai a l'Empereur. [Дайте мне его, я пошлю императору.]
Балашев сказал, что он имеет приказание лично передать пакет самому императору.
– Приказания вашего императора исполняются в вашей армии, а здесь, – сказал Даву, – вы должны делать то, что вам говорят.
И как будто для того чтобы еще больше дать почувствовать русскому генералу его зависимость от грубой силы, Даву послал адъютанта за дежурным.
Балашев вынул пакет, заключавший письмо государя, и положил его на стол (стол, состоявший из двери, на которой торчали оторванные петли, положенной на два бочонка). Даву взял конверт и прочел надпись.
– Вы совершенно вправе оказывать или не оказывать мне уважение, – сказал Балашев. – Но позвольте вам заметить, что я имею честь носить звание генерал адъютанта его величества…
Даву взглянул на него молча, и некоторое волнение и смущение, выразившиеся на лице Балашева, видимо, доставили ему удовольствие.
– Вам будет оказано должное, – сказал он и, положив конверт в карман, вышел из сарая.
Через минуту вошел адъютант маршала господин де Кастре и провел Балашева в приготовленное для него помещение.
Балашев обедал в этот день с маршалом в том же сарае, на той же доске на бочках.
На другой день Даву выехал рано утром и, пригласив к себе Балашева, внушительно сказал ему, что он просит его оставаться здесь, подвигаться вместе с багажами, ежели они будут иметь на то приказания, и не разговаривать ни с кем, кроме как с господином де Кастро.
После четырехдневного уединения, скуки, сознания подвластности и ничтожества, особенно ощутительного после той среды могущества, в которой он так недавно находился, после нескольких переходов вместе с багажами маршала, с французскими войсками, занимавшими всю местность, Балашев привезен был в Вильну, занятую теперь французами, в ту же заставу, на которой он выехал четыре дня тому назад.
На другой день императорский камергер, monsieur de Turenne, приехал к Балашеву и передал ему желание императора Наполеона удостоить его аудиенции.
Четыре дня тому назад у того дома, к которому подвезли Балашева, стояли Преображенского полка часовые, теперь же стояли два французских гренадера в раскрытых на груди синих мундирах и в мохнатых шапках, конвой гусаров и улан и блестящая свита адъютантов, пажей и генералов, ожидавших выхода Наполеона вокруг стоявшей у крыльца верховой лошади и его мамелюка Рустава. Наполеон принимал Балашева в том самом доме в Вильве, из которого отправлял его Александр.


Несмотря на привычку Балашева к придворной торжественности, роскошь и пышность двора императора Наполеона поразили его.
Граф Тюрен ввел его в большую приемную, где дожидалось много генералов, камергеров и польских магнатов, из которых многих Балашев видал при дворе русского императора. Дюрок сказал, что император Наполеон примет русского генерала перед своей прогулкой.
После нескольких минут ожидания дежурный камергер вышел в большую приемную и, учтиво поклонившись Балашеву, пригласил его идти за собой.
Балашев вошел в маленькую приемную, из которой была одна дверь в кабинет, в тот самый кабинет, из которого отправлял его русский император. Балашев простоял один минуты две, ожидая. За дверью послышались поспешные шаги. Быстро отворились обе половинки двери, камергер, отворивший, почтительно остановился, ожидая, все затихло, и из кабинета зазвучали другие, твердые, решительные шаги: это был Наполеон. Он только что окончил свой туалет для верховой езды. Он был в синем мундире, раскрытом над белым жилетом, спускавшимся на круглый живот, в белых лосинах, обтягивающих жирные ляжки коротких ног, и в ботфортах. Короткие волоса его, очевидно, только что были причесаны, но одна прядь волос спускалась книзу над серединой широкого лба. Белая пухлая шея его резко выступала из за черного воротника мундира; от него пахло одеколоном. На моложавом полном лице его с выступающим подбородком было выражение милостивого и величественного императорского приветствия.
Он вышел, быстро подрагивая на каждом шагу и откинув несколько назад голову. Вся его потолстевшая, короткая фигура с широкими толстыми плечами и невольно выставленным вперед животом и грудью имела тот представительный, осанистый вид, который имеют в холе живущие сорокалетние люди. Кроме того, видно было, что он в этот день находился в самом хорошем расположении духа.
Он кивнул головою, отвечая на низкий и почтительный поклон Балашева, и, подойдя к нему, тотчас же стал говорить как человек, дорожащий всякой минутой своего времени и не снисходящий до того, чтобы приготавливать свои речи, а уверенный в том, что он всегда скажет хорошо и что нужно сказать.
– Здравствуйте, генерал! – сказал он. – Я получил письмо императора Александра, которое вы доставили, и очень рад вас видеть. – Он взглянул в лицо Балашева своими большими глазами и тотчас же стал смотреть вперед мимо него.
Очевидно было, что его не интересовала нисколько личность Балашева. Видно было, что только то, что происходило в его душе, имело интерес для него. Все, что было вне его, не имело для него значения, потому что все в мире, как ему казалось, зависело только от его воли.
– Я не желаю и не желал войны, – сказал он, – но меня вынудили к ней. Я и теперь (он сказал это слово с ударением) готов принять все объяснения, которые вы можете дать мне. – И он ясно и коротко стал излагать причины своего неудовольствия против русского правительства.
Судя по умеренно спокойному и дружелюбному тону, с которым говорил французский император, Балашев был твердо убежден, что он желает мира и намерен вступить в переговоры.
– Sire! L'Empereur, mon maitre, [Ваше величество! Император, государь мой,] – начал Балашев давно приготовленную речь, когда Наполеон, окончив свою речь, вопросительно взглянул на русского посла; но взгляд устремленных на него глаз императора смутил его. «Вы смущены – оправьтесь», – как будто сказал Наполеон, с чуть заметной улыбкой оглядывая мундир и шпагу Балашева. Балашев оправился и начал говорить. Он сказал, что император Александр не считает достаточной причиной для войны требование паспортов Куракиным, что Куракин поступил так по своему произволу и без согласия на то государя, что император Александр не желает войны и что с Англией нет никаких сношений.
– Еще нет, – вставил Наполеон и, как будто боясь отдаться своему чувству, нахмурился и слегка кивнул головой, давая этим чувствовать Балашеву, что он может продолжать.
Высказав все, что ему было приказано, Балашев сказал, что император Александр желает мира, но не приступит к переговорам иначе, как с тем условием, чтобы… Тут Балашев замялся: он вспомнил те слова, которые император Александр не написал в письме, но которые непременно приказал вставить в рескрипт Салтыкову и которые приказал Балашеву передать Наполеону. Балашев помнил про эти слова: «пока ни один вооруженный неприятель не останется на земле русской», но какое то сложное чувство удержало его. Он не мог сказать этих слов, хотя и хотел это сделать. Он замялся и сказал: с условием, чтобы французские войска отступили за Неман.
Наполеон заметил смущение Балашева при высказывании последних слов; лицо его дрогнуло, левая икра ноги начала мерно дрожать. Не сходя с места, он голосом, более высоким и поспешным, чем прежде, начал говорить. Во время последующей речи Балашев, не раз опуская глаза, невольно наблюдал дрожанье икры в левой ноге Наполеона, которое тем более усиливалось, чем более он возвышал голос.
– Я желаю мира не менее императора Александра, – начал он. – Не я ли осьмнадцать месяцев делаю все, чтобы получить его? Я осьмнадцать месяцев жду объяснений. Но для того, чтобы начать переговоры, чего же требуют от меня? – сказал он, нахмурившись и делая энергически вопросительный жест своей маленькой белой и пухлой рукой.
– Отступления войск за Неман, государь, – сказал Балашев.
– За Неман? – повторил Наполеон. – Так теперь вы хотите, чтобы отступили за Неман – только за Неман? – повторил Наполеон, прямо взглянув на Балашева.
Балашев почтительно наклонил голову.
Вместо требования четыре месяца тому назад отступить из Номерании, теперь требовали отступить только за Неман. Наполеон быстро повернулся и стал ходить по комнате.
– Вы говорите, что от меня требуют отступления за Неман для начатия переговоров; но от меня требовали точно так же два месяца тому назад отступления за Одер и Вислу, и, несмотря на то, вы согласны вести переговоры.
Он молча прошел от одного угла комнаты до другого и опять остановился против Балашева. Лицо его как будто окаменело в своем строгом выражении, и левая нога дрожала еще быстрее, чем прежде. Это дрожанье левой икры Наполеон знал за собой. La vibration de mon mollet gauche est un grand signe chez moi, [Дрожание моей левой икры есть великий признак,] – говорил он впоследствии.
– Такие предложения, как то, чтобы очистить Одер и Вислу, можно делать принцу Баденскому, а не мне, – совершенно неожиданно для себя почти вскрикнул Наполеон. – Ежели бы вы мне дали Петербуг и Москву, я бы не принял этих условий. Вы говорите, я начал войну? А кто прежде приехал к армии? – император Александр, а не я. И вы предлагаете мне переговоры тогда, как я издержал миллионы, тогда как вы в союзе с Англией и когда ваше положение дурно – вы предлагаете мне переговоры! А какая цель вашего союза с Англией? Что она дала вам? – говорил он поспешно, очевидно, уже направляя свою речь не для того, чтобы высказать выгоды заключения мира и обсудить его возможность, а только для того, чтобы доказать и свою правоту, и свою силу, и чтобы доказать неправоту и ошибки Александра.
Вступление его речи было сделано, очевидно, с целью выказать выгоду своего положения и показать, что, несмотря на то, он принимает открытие переговоров. Но он уже начал говорить, и чем больше он говорил, тем менее он был в состоянии управлять своей речью.
Вся цель его речи теперь уже, очевидно, была в том, чтобы только возвысить себя и оскорбить Александра, то есть именно сделать то самое, чего он менее всего хотел при начале свидания.
– Говорят, вы заключили мир с турками?
Балашев утвердительно наклонил голову.
– Мир заключен… – начал он. Но Наполеон не дал ему говорить. Ему, видно, нужно было говорить самому, одному, и он продолжал говорить с тем красноречием и невоздержанием раздраженности, к которому так склонны балованные люди.
– Да, я знаю, вы заключили мир с турками, не получив Молдавии и Валахии. А я бы дал вашему государю эти провинции так же, как я дал ему Финляндию. Да, – продолжал он, – я обещал и дал бы императору Александру Молдавию и Валахию, а теперь он не будет иметь этих прекрасных провинций. Он бы мог, однако, присоединить их к своей империи, и в одно царствование он бы расширил Россию от Ботнического залива до устьев Дуная. Катерина Великая не могла бы сделать более, – говорил Наполеон, все более и более разгораясь, ходя по комнате и повторяя Балашеву почти те же слова, которые ои говорил самому Александру в Тильзите. – Tout cela il l'aurait du a mon amitie… Ah! quel beau regne, quel beau regne! – повторил он несколько раз, остановился, достал золотую табакерку из кармана и жадно потянул из нее носом.
– Quel beau regne aurait pu etre celui de l'Empereur Alexandre! [Всем этим он был бы обязан моей дружбе… О, какое прекрасное царствование, какое прекрасное царствование! О, какое прекрасное царствование могло бы быть царствование императора Александра!]
Он с сожалением взглянул на Балашева, и только что Балашев хотел заметить что то, как он опять поспешно перебил его.
– Чего он мог желать и искать такого, чего бы он не нашел в моей дружбе?.. – сказал Наполеон, с недоумением пожимая плечами. – Нет, он нашел лучшим окружить себя моими врагами, и кем же? – продолжал он. – Он призвал к себе Штейнов, Армфельдов, Винцингероде, Бенигсенов, Штейн – прогнанный из своего отечества изменник, Армфельд – развратник и интриган, Винцингероде – беглый подданный Франции, Бенигсен несколько более военный, чем другие, но все таки неспособный, который ничего не умел сделать в 1807 году и который бы должен возбуждать в императоре Александре ужасные воспоминания… Положим, ежели бы они были способны, можно бы их употреблять, – продолжал Наполеон, едва успевая словом поспевать за беспрестанно возникающими соображениями, показывающими ему его правоту или силу (что в его понятии было одно и то же), – но и того нет: они не годятся ни для войны, ни для мира. Барклай, говорят, дельнее их всех; но я этого не скажу, судя по его первым движениям. А они что делают? Что делают все эти придворные! Пфуль предлагает, Армфельд спорит, Бенигсен рассматривает, а Барклай, призванный действовать, не знает, на что решиться, и время проходит. Один Багратион – военный человек. Он глуп, но у него есть опытность, глазомер и решительность… И что за роль играет ваш молодой государь в этой безобразной толпе. Они его компрометируют и на него сваливают ответственность всего совершающегося. Un souverain ne doit etre a l'armee que quand il est general, [Государь должен находиться при армии только тогда, когда он полководец,] – сказал он, очевидно, посылая эти слова прямо как вызов в лицо государя. Наполеон знал, как желал император Александр быть полководцем.
– Уже неделя, как началась кампания, и вы не сумели защитить Вильну. Вы разрезаны надвое и прогнаны из польских провинций. Ваша армия ропщет…
– Напротив, ваше величество, – сказал Балашев, едва успевавший запоминать то, что говорилось ему, и с трудом следивший за этим фейерверком слов, – войска горят желанием…
– Я все знаю, – перебил его Наполеон, – я все знаю, и знаю число ваших батальонов так же верно, как и моих. У вас нет двухсот тысяч войска, а у меня втрое столько. Даю вам честное слово, – сказал Наполеон, забывая, что это его честное слово никак не могло иметь значения, – даю вам ma parole d'honneur que j'ai cinq cent trente mille hommes de ce cote de la Vistule. [честное слово, что у меня пятьсот тридцать тысяч человек по сю сторону Вислы.] Турки вам не помощь: они никуда не годятся и доказали это, замирившись с вами. Шведы – их предопределение быть управляемыми сумасшедшими королями. Их король был безумный; они переменили его и взяли другого – Бернадота, который тотчас сошел с ума, потому что сумасшедший только, будучи шведом, может заключать союзы с Россией. – Наполеон злобно усмехнулся и опять поднес к носу табакерку.
На каждую из фраз Наполеона Балашев хотел и имел что возразить; беспрестанно он делал движение человека, желавшего сказать что то, но Наполеон перебивал его. Например, о безумии шведов Балашев хотел сказать, что Швеция есть остров, когда Россия за нее; но Наполеон сердито вскрикнул, чтобы заглушить его голос. Наполеон находился в том состоянии раздражения, в котором нужно говорить, говорить и говорить, только для того, чтобы самому себе доказать свою справедливость. Балашеву становилось тяжело: он, как посол, боялся уронить достоинство свое и чувствовал необходимость возражать; но, как человек, он сжимался нравственно перед забытьем беспричинного гнева, в котором, очевидно, находился Наполеон. Он знал, что все слова, сказанные теперь Наполеоном, не имеют значения, что он сам, когда опомнится, устыдится их. Балашев стоял, опустив глаза, глядя на движущиеся толстые ноги Наполеона, и старался избегать его взгляда.
– Да что мне эти ваши союзники? – говорил Наполеон. – У меня союзники – это поляки: их восемьдесят тысяч, они дерутся, как львы. И их будет двести тысяч.
И, вероятно, еще более возмутившись тем, что, сказав это, он сказал очевидную неправду и что Балашев в той же покорной своей судьбе позе молча стоял перед ним, он круто повернулся назад, подошел к самому лицу Балашева и, делая энергические и быстрые жесты своими белыми руками, закричал почти:
– Знайте, что ежели вы поколеблете Пруссию против меня, знайте, что я сотру ее с карты Европы, – сказал он с бледным, искаженным злобой лицом, энергическим жестом одной маленькой руки ударяя по другой. – Да, я заброшу вас за Двину, за Днепр и восстановлю против вас ту преграду, которую Европа была преступна и слепа, что позволила разрушить. Да, вот что с вами будет, вот что вы выиграли, удалившись от меня, – сказал он и молча прошел несколько раз по комнате, вздрагивая своими толстыми плечами. Он положил в жилетный карман табакерку, опять вынул ее, несколько раз приставлял ее к носу и остановился против Балашева. Он помолчал, поглядел насмешливо прямо в глаза Балашеву и сказал тихим голосом: – Et cependant quel beau regne aurait pu avoir votre maitre! [A между тем какое прекрасное царствование мог бы иметь ваш государь!]
Балашев, чувствуя необходимость возражать, сказал, что со стороны России дела не представляются в таком мрачном виде. Наполеон молчал, продолжая насмешливо глядеть на него и, очевидно, его не слушая. Балашев сказал, что в России ожидают от войны всего хорошего. Наполеон снисходительно кивнул головой, как бы говоря: «Знаю, так говорить ваша обязанность, но вы сами в это не верите, вы убеждены мною».
В конце речи Балашева Наполеон вынул опять табакерку, понюхал из нее и, как сигнал, стукнул два раза ногой по полу. Дверь отворилась; почтительно изгибающийся камергер подал императору шляпу и перчатки, другой подал носовои платок. Наполеон, ne глядя на них, обратился к Балашеву.
– Уверьте от моего имени императора Александра, – сказал оц, взяв шляпу, – что я ему предан по прежнему: я анаю его совершенно и весьма высоко ценю высокие его качества. Je ne vous retiens plus, general, vous recevrez ma lettre a l'Empereur. [Не удерживаю вас более, генерал, вы получите мое письмо к государю.] – И Наполеон пошел быстро к двери. Из приемной все бросилось вперед и вниз по лестнице.


После всего того, что сказал ему Наполеон, после этих взрывов гнева и после последних сухо сказанных слов:
«Je ne vous retiens plus, general, vous recevrez ma lettre», Балашев был уверен, что Наполеон уже не только не пожелает его видеть, но постарается не видать его – оскорбленного посла и, главное, свидетеля его непристойной горячности. Но, к удивлению своему, Балашев через Дюрока получил в этот день приглашение к столу императора.
На обеде были Бессьер, Коленкур и Бертье. Наполеон встретил Балашева с веселым и ласковым видом. Не только не было в нем выражения застенчивости или упрека себе за утреннюю вспышку, но он, напротив, старался ободрить Балашева. Видно было, что уже давно для Наполеона в его убеждении не существовало возможности ошибок и что в его понятии все то, что он делал, было хорошо не потому, что оно сходилось с представлением того, что хорошо и дурно, но потому, что он делал это.
Император был очень весел после своей верховой прогулки по Вильне, в которой толпы народа с восторгом встречали и провожали его. Во всех окнах улиц, по которым он проезжал, были выставлены ковры, знамена, вензеля его, и польские дамы, приветствуя его, махали ему платками.
За обедом, посадив подле себя Балашева, он обращался с ним не только ласково, но обращался так, как будто он и Балашева считал в числе своих придворных, в числе тех людей, которые сочувствовали его планам и должны были радоваться его успехам. Между прочим разговором он заговорил о Москве и стал спрашивать Балашева о русской столице, не только как спрашивает любознательный путешественник о новом месте, которое он намеревается посетить, но как бы с убеждением, что Балашев, как русский, должен быть польщен этой любознательностью.
– Сколько жителей в Москве, сколько домов? Правда ли, что Moscou называют Moscou la sainte? [святая?] Сколько церквей в Moscou? – спрашивал он.
И на ответ, что церквей более двухсот, он сказал:
– К чему такая бездна церквей?
– Русские очень набожны, – отвечал Балашев.
– Впрочем, большое количество монастырей и церквей есть всегда признак отсталости народа, – сказал Наполеон, оглядываясь на Коленкура за оценкой этого суждения.
Балашев почтительно позволил себе не согласиться с мнением французского императора.
– У каждой страны свои нравы, – сказал он.
– Но уже нигде в Европе нет ничего подобного, – сказал Наполеон.
– Прошу извинения у вашего величества, – сказал Балашев, – кроме России, есть еще Испания, где также много церквей и монастырей.
Этот ответ Балашева, намекавший на недавнее поражение французов в Испании, был высоко оценен впоследствии, по рассказам Балашева, при дворе императора Александра и очень мало был оценен теперь, за обедом Наполеона, и прошел незаметно.
По равнодушным и недоумевающим лицам господ маршалов видно было, что они недоумевали, в чем тут состояла острота, на которую намекала интонация Балашева. «Ежели и была она, то мы не поняли ее или она вовсе не остроумна», – говорили выражения лиц маршалов. Так мало был оценен этот ответ, что Наполеон даже решительно не заметил его и наивно спросил Балашева о том, на какие города идет отсюда прямая дорога к Москве. Балашев, бывший все время обеда настороже, отвечал, что comme tout chemin mene a Rome, tout chemin mene a Moscou, [как всякая дорога, по пословице, ведет в Рим, так и все дороги ведут в Москву,] что есть много дорог, и что в числе этих разных путей есть дорога на Полтаву, которую избрал Карл XII, сказал Балашев, невольно вспыхнув от удовольствия в удаче этого ответа. Не успел Балашев досказать последних слов: «Poltawa», как уже Коленкур заговорил о неудобствах дороги из Петербурга в Москву и о своих петербургских воспоминаниях.
После обеда перешли пить кофе в кабинет Наполеона, четыре дня тому назад бывший кабинетом императора Александра. Наполеон сел, потрогивая кофе в севрской чашке, и указал на стул подло себя Балашеву.
Есть в человеке известное послеобеденное расположение духа, которое сильнее всяких разумных причин заставляет человека быть довольным собой и считать всех своими друзьями. Наполеон находился в этом расположении. Ему казалось, что он окружен людьми, обожающими его. Он был убежден, что и Балашев после его обеда был его другом и обожателем. Наполеон обратился к нему с приятной и слегка насмешливой улыбкой.
– Это та же комната, как мне говорили, в которой жил император Александр. Странно, не правда ли, генерал? – сказал он, очевидно, не сомневаясь в том, что это обращение не могло не быть приятно его собеседнику, так как оно доказывало превосходство его, Наполеона, над Александром.
Балашев ничего не мог отвечать на это и молча наклонил голову.
– Да, в этой комнате, четыре дня тому назад, совещались Винцингероде и Штейн, – с той же насмешливой, уверенной улыбкой продолжал Наполеон. – Чего я не могу понять, – сказал он, – это того, что император Александр приблизил к себе всех личных моих неприятелей. Я этого не… понимаю. Он не подумал о том, что я могу сделать то же? – с вопросом обратился он к Балашеву, и, очевидно, это воспоминание втолкнуло его опять в тот след утреннего гнева, который еще был свеж в нем.