Framework class library что это

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

Сегодня мы более подробно рассмотрим, каждый из этих компонентов.
CLR

На компьютере храниться в виде файла динамической библиотеки mscoree.dll, в проекте данная сборка подключается автоматически.

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

Какие задачи решает CLR?

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

На рисунке видно, что версии среды 3.0, 3.5 — не существует. Поэтому важно понимать, что версия платформы и версия среды — это разные вещи.

CTS (Common Type System) – система общих типов.

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

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

Важно знать то, что CTS предоставляет разработчикам 5 типов. О них я уже писал ранее, но повторюсь ещё раз.

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

Какие задачи решает CTS?

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

Например: в CTS описан тип Int32, который храниться в библиотеки mscorlib.dll. И хотя в языке c# он будет иметь ключевое слово int, а допустим в Visual Basic — Integer. Все эти ключевые слова, всего лишь псевдонимы, к одному и тому же типу Int32.

И ещё важно понимать, что, не смотря на то, что для c# указано ключевое слово int, мы так же можем использовать и Int32.

// int a = 5;
// System.Int32 b = 10;
CLS

Как видно из описания, понимание CLS требуется в основном разработчикам компиляторов, рядовым разработчикам данная информация вряд ли пригодиться.

В итоге мы получаем примерно вот такую структуру:

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

Основной или главной сборкой данной библиотеки является файл динамической библиотеки — mscorlib.dll

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

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

В принципе можно сказать, что Framework Class Library включает в себя библиотеку базовых классов BCL, которая, по сути, является её ядром.

.NET Framework = CLR + FCL

Такую официальную формулировку так же приводят: MSDN, Wiki и многие другие авторы книг.

Но мы знаем, что FCL включает в себя библиотеки базовых классов. И правильнее формулировка должна звучать так:

.NET Framework = CLR + Libraries (FCL, BCL)
Но тут конечно можно долго спорить.

Источник

представление базовых типов данных и исключений;

инкапсуляция структур данных;

доступ к данным о загруженных типах;

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

Соглашения об именах

Например, пространство имен Microsoft.Word соответствует этому правилу.

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

Дополнительные сведения о пространствах имен и именах типов см. в разделе Система общих типов CTS.

Пространство имен System

КатегорияИмя классаОписаниеТип данных в Visual BasicТип данных в C#Тип данных С++/CLIТип данных F#
Целое числоByte8-разрядное целое число без знака.Bytebyteunsigned charbyte
SByte8-битовое целое число со знаком.

Не является CLS-совместимым.

SBytesbytechar или signed charsbyte
Int1616-разрядное знаковое целое число.Shortshortshortint16
Int3232-разрядное знаковое целое число.Integerintint или longint
Int6464-разрядное целое число со знаком.Longlong__int64int64
UInt1616-разрядное целое число без знака.

Не является CLS-совместимым.

UShortushortunsigned shortuint16
UInt3232-разрядное целое число без знака.

Не является CLS-совместимым.

UIntegeruintunsigned int или unsigned longuint32
UInt6464-разрядное целое число без знака.

Не является CLS-совместимым.

ULongulongunsigned __int64uint64
Число с плавающей запятойHalfЧисло с плавающей запятой половинной точности (16-разрядное).
SingleЧисло с плавающей запятой с обычной точностью (32-разрядное).Singlefloatfloatfloat32 или single
DoubleЧисло с плавающей запятой с двойной точностью (64-разрядное).Doubledoubledoublefloat или double
LogicalBooleanЛогическое значение (true или false).Booleanboolboolbool
ДругойCharСимвол Юникода (16-разрядный).Charcharwchar_tchar
Decimal128-разрядное десятичное значение.DecimaldecimalDecimaldecimal
IntPtrЦелое число со знаком, размер которого зависит от базовой платформы (32-разрядное значение при 32-разрядной платформе и 64-разрядное значение при 64-разрядной платформе).nintunativeint
UIntPtrЦелое число без знака, размер которого зависит от базовой платформы (32-разрядное значение при 32-разрядной платформе и 64-разрядное значение при 64-разрядной платформе).

Не является CLS-совместимым.

nuintunativeint
ObjectКорень иерархии объектов.ObjectobjectObject^obj
StringНеизменяемая строка символов Юникода фиксированной длины.StringstringString^string

В дополнение к базовым типам данных пространство имен System содержит более 100 классов — от классов для обработки исключений до классов, которые работают с основными механизмами среды выполнения, такими как домены приложений и сборщик мусора. Пространство имен System также содержит много пространств имен второго уровня.

Источник

.NET class library overview

Represent base data types and exceptions.

Encapsulate data structures.

Access information about loaded types.

Provide data access, rich client-side GUI, and server-controlled, client-side GUI.

Naming conventions

.NET types use a dot syntax naming scheme that connotes a hierarchy. This technique groups related types into namespaces so they can be searched and referenced more easily. The first part of the full name—up to the rightmost dot—is the namespace name. The last part of the name is the type name. For example, System.Collections.Generic.List represents the List type, which belongs to the System.Collections.Generic namespace. The types in System.Collections.Generic can be used to work with generic collections.

For example, the namespace Microsoft.Word conforms to this guideline.

The use of naming patterns to group related types into namespaces is a useful way to build and document class libraries. However, this naming scheme has no effect on visibility, member access, inheritance, security, or binding. A namespace can be partitioned across multiple assemblies and a single assembly can contain types from multiple namespaces. The assembly provides the formal structure for versioning, deployment, security, loading, and visibility in the common language runtime.

For more information on namespaces and type names, see Common Type System.

System namespace

CategoryClass nameDescriptionVisual Basic data typeC# data typeC++/CLI data typeF# data type
IntegerByteAn 8-bit unsigned integer.Bytebyteunsigned charbyte
SByteAn 8-bit signed integer.

Not CLS-compliant.

SBytesbytechar or signed charsbyte
Int16A 16-bit signed integer.Shortshortshortint16
Int32A 32-bit signed integer.Integerintint or longint
Int64A 64-bit signed integer.Longlong__int64int64
UInt16A 16-bit unsigned integer.

Not CLS-compliant.

UShortushortunsigned shortuint16
UInt32A 32-bit unsigned integer.

Not CLS-compliant.

UIntegeruintunsigned int or unsigned longuint32
UInt64A 64-bit unsigned integer.

Not CLS-compliant.

ULongulongunsigned __int64uint64
Floating pointHalfA half-precision (16-bit) floating-point number.
SingleA single-precision (32-bit) floating-point number.Singlefloatfloatfloat32 or single
DoubleA double-precision (64-bit) floating-point number.Doubledoubledoublefloat or double
LogicalBooleanA Boolean value (true or false).Booleanboolboolbool
OtherCharA Unicode (16-bit) character.Charcharwchar_tchar
DecimalA decimal (128-bit) value.DecimaldecimalDecimaldecimal
IntPtrA signed integer whose size depends on the underlying platform (a 32-bit value on a 32-bit platform and a 64-bit value on a 64-bit platform).nintunativeint
UIntPtrAn unsigned integer whose size depends on the underlying platform (a 32- bit value on a 32-bit platform and a 64-bit value on a 64-bit platform).

Not CLS-compliant.

nuintunativeint
ObjectThe root of the object hierarchy.ObjectobjectObject^obj
StringAn immutable, fixed-length string of Unicode characters.StringstringString^string

In addition to the base data types, the System namespace contains over 100 classes, ranging from classes that handle exceptions to classes that deal with core runtime concepts, such as application domains and the garbage collector. The System namespace also contains many second-level namespaces.

Источник

Оглавление

В этом номере мы начнем знакомство с библиотекой классов, рассмотрим основные составляющие ее пространства имен и классы и приведем некоторые примеры их использования.

Класс Console и консольные приложения

Console.WriteLine(«.NET Console application»)
Console.ReadLine()

Методы SetIn, SetOut и SetError позволяют переопределить стандартные потоки ввода, вывода и ошибок. Эти методы ожидают аргумент типа TextWriter, который описывает поток.

Пространство имен System

Framework class library что это. Смотреть фото Framework class library что это. Смотреть картинку Framework class library что это. Картинка про Framework class library что это. Фото Framework class library что это

Кратко рассмотрим каждый из этих методов:

Ниже мы расскажем, как используется класс Type.

Класс Type и пространство имен Reflection

Класс Type содержит методы типа GetMethods() и GetProperties(), которые могут использоваться для получения информации о членах класса. Используя классы, реализованные в пространстве имен Reflection, мы можем получать сведения, например, о параметрах методов (используя класс System.Reflection. MethodInfo) и даже вызывать методы с помощью метода Invoke().

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

Imports System
Imports System.Reflection

Dim I As Integer
Dim T As Type

T = I.GetType()
Console.WriteLine(«Name = » & T.Name)
Console.WriteLine(«Module = » & T.Module.ToString())
Console.WriteLine(«Namespace = » & T.Namespace)

Кратко рассмотрим основные возможности, предоставляемые пространством имен Reflection, а затем проиллюстрируем некоторые из них примерами.

В следующем примере показано, как получить список типов, определенных в данном модуле.

Imports System
Imports System.Reflection

Dim I As Integer
Dim T As Type
Dim Types() As Type
Dim M As [Module]

T = I.GetType()
M = T.Module
Types = M.GetTypes()
For Each T In Types
Console.WriteLine(T.FullName)
Next

Ниже показана выводимая данным кодом информация:

Imports System
Imports System.Reflection
Module Cons

Dim T As Type
Dim MI As MemberInfo
Dim Types() As Type
Dim Members() As MemberInfo
Dim M As [Module]
Dim PI As PropertyInfo
Dim PText As String
T = Type.GetType(«System.Array»)
Console.WriteLine(» <0>: <1>«, GetTypeDescription(T), T)


‘ Показать все конструкторы

Private Function GetTypeDescription(ByVal aType As Type) As String
Dim str As String = Nothing

If aType.IsClass Then
str = «Class»
End If

If aType.IsInterface Then
str = «Interface»
End If

If aType.IsValueType Then
str = «Struct»
End If

If aType.IsArray Then
str = «Array»
End If

Return str
End Function ‘GetTypeDescription

Ниже показана информация, выводимая нашим примером для класса System.Array:

Теперь мы знаем названия параметров и их тип:

Для того чтобы получить доступ к сборке (в нашем примере мы использовали сборку по умолчанию (- mscorlib.dll), всегда загруженную в память), надо обратиться к этой сборке. Вот как это сделать:

Imports System.Reflection
Imports System.IO
Imports Microsoft.Win32
Imports Microsoft.VisualBasic

Dim Asm As [Assembly]
Dim Mdls As [Module]()
Dim Mdl As [Module]
Asm = [Assembly].LoadFrom(GetNetFrameworkPath() + _
«system.windows.forms.dll»)
Mdls = Asm.GetModules
Mdl = Mdls(0)

Function GetNetFrameworkPath() As String

Registry.LocalMachine.OpenSubKey(«SOFTWARE\Microsoft\.NETFramework»)
GetNetFrameworkPath = CType(Key.GetValue(«InstallRoot»), String) + _
CType(Key.GetValue(«Version»), String) + «\»

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

Источник

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

Модель приложения

API для конкретной рабочей нагрузки. Ниже приводится несколько примеров.

ASP.NET

Иногда ASP.NET используется как общий термин, который относится как к исходной платформе ASP.NET, так и к ASP.NET Core. Значение термина в заданном экземпляре определяется контекстом. Обратитесь к ASP.NET 4.x в тех ситуациях, когда важно избежать путаницы, поскольку термин ASP.NET может относиться к обеим реализациям.

ASP.NET Core

Кроссплатформенная, высокопроизводительная, основанная на открытом исходном коде реализация ASP.NET.

сборка

Файл .dll или .exe, который содержит коллекцию API-интерфейсов, вызываемых приложениями или другими сборками.

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

Библиотека базовых классов.

Набор библиотек, которые составляют пространства имен System.* (и в некоторой степени Microsoft.*). BCL — это универсальная платформа низкого уровня, которая является основой платформ приложений более высокого уровня, например ASP.NET Core.

Следующие термины часто относятся к одной коллекции API, которая называется BCL:

Общеязыковая среда выполнения.

Среда CLR обрабатывает выделение памяти и управление ею. Среда CLR также является виртуальной машиной, которая не только выполняет приложения, но и создает, а также компилирует код с помощью JIT-компилятора.

Core CLR

CoreRT

В отличие от среды CLR CoreRT не является виртуальной машиной, поэтому она не включает средства для создания и выполнения кода «на лету», так как в ней отсутствует JIT. Но она поддерживает сборку мусора и возможности идентификации типа среды выполнения (RTTI) и отражения. Ее система типов разработана таким образом, что метаданные для отражения не требуется. Отсутствие необходимости в метаданных обеспечивает наличие цепочки инструментов AOT, которая может связать лишние метаданные и (что более важно) определить код, который приложение не использует. CoreRT находится в разработке.

кроссплатформенный

Возможность разрабатывать и выполнять приложение, которое можно использовать в разных операционных системах, например в Linux, Windows и iOS, без необходимости переписывать его специально для каждой из них. Это позволяет повторно использовать код и обеспечивает согласованность приложений на разных платформах.

экосистема

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

платформа

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

Слово «платформа» имеет разное значение в следующих терминах.

Библиотеки платформы

Сборка мусора

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

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

библиотека

Слова «библиотека» и платформа часто используются как синонимы.

Mono обычно используется с JIT-компилятором, но также располагает полным статическим компилятором (заблаговременная компиляция), который используется на таких платформах, как iOS.

«.NET» всегда пишется полностью прописными буквами. Написание «.Net» не используется.

.NET 5 и более поздних версий

Интерфейс командной строки.NET

.NET Core

.NET Framework

.NET Native

Цепочка инструментов компилятора, которая создает машинный код в режиме AOT в отличие от режима JIT.

Компиляция происходит на компьютере разработчика, аналогично тому, как работает компилятор и компоновщик C++. Она удаляет неиспользуемый код и тратит больше времени на его оптимизацию. Она извлекает код из библиотек и объединяет их в исполняемый файл. Результатом является один модуль, который представляет все приложение.

.NET Standard

Создание образов в машинном коде.

Эту технологию можно считать постоянным JIT-компилятором. Как правило, он компилирует код на компьютере, где код выполняется. Но компиляция обычно происходит во время установки.

пакет

Пакет NuGet —, или просто «пакет»—, — это ZIP-файл, содержащий одну или несколько сборок с одинаковым именем, а также дополнительные метаданные, такие как имя автора.

ZIP-файл имеет расширение .nupkg и может содержать ресурсы, такие как файлы .dll и .xml для нескольких целевых платформ и версий. При установке в приложении или библиотеке выбор соответствующих ресурсов осуществляется в зависимости от целевой платформы, указанной приложением или библиотекой. Ресурсы, которые определяют интерфейс, находятся в папке ref, а ресурсы, которые определяют реализацию, находятся в папке lib.

platform

Операционная система и оборудование, на котором она выполняется, например Windows, macOS, Linux, iOS и Android.

Ниже приведены примеры использования в предложениях.

исполняющая среда

Словосочетание «среда выполнения» имеет разное значение в некоторых контекстах:

Относится к тем же библиотекам, что и BCL. Однако другие среды выполнения, например среда выполнения ASP.NET Core, имеют разные общие платформы с дополнительными библиотеками, которые создаются на основе BCL.

Общая платформа

Существуют и другие общие платформы. Общая платформа ASP.NET Core ссылается на библиотеки, включенные в среду выполнения ASP.NET Core, которые включают BCL и дополнительные API для использования веб-приложениями.

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

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

целевая платформа

Моникер целевой платформы.

Универсальная платформа Windows.

workload

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *