Стандартное поведение среды выполнения .NET - PullRequest
0 голосов
/ 28 февраля 2019

Я портирую свои библиотеки, которые ранее были сегментированы по аспектам, таким же образом, как библиотеки .NET Framework (например, SystemEx, SystemEx.Data, SystemEx.Configuration).

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

Однако в мире .NET Standard 2.0 все эти портированные библиотеки теперь зависят только от «NETStandard.Library», который является фиксированным API прокси-серверов типов, которые в конечном итоге перенаправляются типом, когда эта библиотекапотребляется в реальном времени выполнения.С точки зрения пространства кода все эти библиотеки имеют одну общую зависимость.В результате я испытываю желание объединить их все в одну монолитную библиотеку для легкого управления Nuget.Однако я не уверен в поведении во время выполнения / последствиях этого.

ВОПРОС 1 :

Когда библиотека .NET Standard используется в a.Приложение NET Core, как во время выполнения выполняет пересылку типов?

A - «Переадресация типов JIT»: DLL зависимой платформы загружается, только если она необходима для выполнения ,в противном случае он никогда не загружается, даже если пользовательская библиотека ссылалась на него во время компиляции.

B - «Пересылка типов во время загрузки»: все библиотеки зависимых библиотек, на которые ссылаются из пользовательской библиотеки .NET Standard, загружаются при загрузке.время просто потому, что является зависимостью пользовательской библиотеки, хотя большинство из них не будет использоваться при выполнении приложения.

C - Другое, просьба сообщить подробности.

ВОПРОС 2 : Существуют ли какие-либо ограничения производительности, памяти или другие ограничения, связанные с применением «монолитного подхода» и «аспектно-сегментированного подхода» для разработки стандартных библиотек .NET?

...