Вопросы по доменам приложений .NET - PullRequest
3 голосов
/ 13 октября 2010

Я знаю, что после запуска приложения .NET CLR автоматически создает 3 домена приложений. Это системный домен, общий домен и домен по умолчанию.

Системный домен:

  • Создание общих доменов и доменов по умолчанию
  • Предоставление функций загрузки и выгрузки доменов приложений
  • Загрузка mscorlib.dll в общий домен
  • Ведение учета всех других доменов
  • Ведение внутренних строковых литералов
  • Предварительное создание исключений определенных типов, таких как исключение нехватки памяти, исключение переполнения стека и т. Д.

Общий домен:

  • Содержит нейтральный для домена код.
  • Содержит базовые типы, такие как String, enum, Int32 и т. Д.

Домен по умолчанию:

  • . В нем выполняется код приложения .NET.

Вот пара вопросов о них:

  • Как связаны эти 3 домена?Есть ли иерархия или что-то?Исходя из обязанностей системного домена, я думаю, что домены приложений в процессе должны быть организованы как дерево логически (или, возможно, физически в памяти), корнем дерева является системный домен, и вседругие домены являются его дочерними.

  • Что означает «интернированная строка»?Некоторые примеры могут быть лучше.

  • AppDomain предназначен для изоляции, а междоменную связь сделать не так просто.Поэтому мне интересно, поскольку базовые типы содержатся в общем домене, а не в домене по умолчанию или в любом другом домене приложений, который может выполнять код, поэтому я считаю, что CLR должен обрабатывать общий домен однозначно, чтобы обеспечить простую междоменную связь.Это правда?

Спасибо.

1 Ответ

3 голосов
/ 13 октября 2010

Я бы добавил этот комментарий, а не ответ, но мне пока не разрешено комментировать.Извините.

Доступ к памяти через кросс-доменные приложения (в отличие от удаленного взаимодействия) затруднен и сделан таким образом.

Если вам нужен междоменный синглтон, я нашел такой маленькийкамень

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