Net framework 5, а также среды Visual Studio 2012 и C#


Объекты, созданные одним доменом приложений, недоступны для кода дру-



Download 6,27 Mb.
Pdf ko'rish
bet448/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   444   445   446   447   448   449   450   451   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Объекты,
созданные одним доменом приложений, недоступны для кода дру-
гих доменов.
Когда код домена приложений создает объект, домен становится 
«хозяином» этого объекта. Иначе говоря, время жизни объекта ограничивается 
временем существования самого домена. Код другого домена может получить 
доступ к объекту, только используя семантику 
продвижения по ссылке
(marshal-
by-reference) или 
по значению
(marshal-by-value). Тем самым обеспечивается 
четкое разделение кода в домене приложений, так как код в одном домене не 
может напрямую ссылаться на объект, созданный в другом домене. Такая изо-
ляция позволяет легко выгружать домены приложений из процесса без влияния 
на работу других доменов.
‰
Домены приложений можно выгружать.
CLR не поддерживает выгрузку от-
дельных сборок. Однако можно заставить CLR выгрузить домен приложений 
со всеми содержащимися в нем в данный момент сборками.


610
Глава.22 .Хостинг.CLR.и.домены.приложений
‰
Домены приложений можно индивидуально защищать.
При создании домену 
приложений можно назначить набор разрешений, определяющий максимальные 
права запущенных в нем сборок. Это позволяет хосту загружать код и быть уве-
ренным, что этот код не испортит или не прочитает важные структуры данных, 
используемые самим доменом.
‰
Домены приложений можно индивидуально настраивать.
Каждый домен име-
ет целый набор конфигурационных параметров. Они в основном определяют, 
как среда CLR должна загружать сборки в домен. Существуют и параметры, 
относящиеся к путям поиска, перенаправлению привязки к версиям, теневому 
копированию и оптимизации загрузчика.
ВниМание
Windows.предоставляет.замечательную.возможность.запускать.каждое.приложение.
в.собственном.адресном.пространстве .Это.гарантирует,.что.код.одного.приложения.
не.получит.доступа.к.коду.и.данным.другого .Изоляция.процессов.предотвращает.
появления.брешей.в.системе.безопасности,.повреждение.данных.и.другие.непри-
ятности,.обеспечивая.надежность.Windows.и.работающих.в.этой.операционной.си-
стеме.приложений .К.сожалению,.создание.процесса.в.Windows.—.операция.очень.
ресурсоемкая .Win32-функция.CreateProcess.выполняется.медленно,.а.виртуализация.
адресного.пространства.процесса.требует.много.памяти 
Однако.если.приложение.полностью.состоит.из.гарантированно.безопасного.
управляемого.кода,.который.к.тому.же.не.вызывает.неуправляемый.код,.можно.за-
пустить.несколько.управляемых.приложений.в.одном.Windows-процессе .Их.домены.
обеспечат.изоляцию,.необходимую.для.защиты,.конфигурирования.и.завершения.
отдельных.приложений 
На рис. 22.1 показан отдельный Windows-процесс, в котором работает один 
COM-сервер CLR, управляющий двумя доменами приложений (кстати, не суще-
ствует жестких ограничений на количество доменов приложений, которые могут 
выполняться в одном Windows-процессе). У каждого такого домена есть собственная 
куча загрузчика, ведущая учет обращений к типам с момента создания домена (эти 
типы были подробно рассмотрены в главе 4). Каждому типу в куче загрузчика со-
ответствует таблица методов, строки которой указывают на код метода (если этот 
метод хоть раз исполнялся, его код уже скомпилирован JIT-компилятором).
Кроме того, в каждый домен приложений загружены сборки. В первый (он же 
основной) загружены три сборки: 
MyApp exe

TypeLib dll
и 
System dll
, во второй — две 
сборки: 
Wintellect dll
и 
System dll
.
Обратите внимание, что сборка 
System dll
загружается в оба домена. Если в обоих 
доменах используется один тип из 
System dll
, в их кучах загрузчика будут размещены 
объекты одинаковых типов; память, выделенная под эти объекты, не используется 
доменами совместно. Более того, когда код домена вызывает определенные в типе 
методы, IL-код метода JIT-компилируется, а результирующий машинный код 
привязывается к каждому домену в отдельности, то есть он не используется ими 
совместно.


611
Домены.приложений
Windows-процесс
Домен приложений
Домен приложений
Сборки, нейтральные по отношению к доменам
Исполнительное ядро
MSCorEE.dll (оболочка совместимости) Clr.dll (среда CLR)

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   444   445   446   447   448   449   450   451   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish