Я не понимаю Доменов приложения

Просто создайте внутри себя диктовку и верните ее из функции:

def get_dic(file):
    phone = {}
    names = None
    for line in file.readlines():
        if line[0] == '#':
            names = line.strip()
            phone[names] = ""
        else:
            phone[names] += line.strip()
    return phone

argentina = get_dic(open(sys.argv[1],'r'))
79
задан Peter Mortensen 10 May 2010 в 21:09
поделиться

3 ответа

AppDomains лучше всего визуализировал как процесс очень легкого веса.

может быть AppDomains N на.Net Process, но вообще говоря, существует только один. Реальное преимущество AppDomains, они обеспечивают границу изоляции в рамках Вашего процесса. Объекты могут только говорить друг с другом через границу AppDomain через дистанционную работу или сериализацию.

также возможно выполнить 2 AppDomains на совершенно других уровнях безопасности в рамках процесса. Это может позволить Вам запускать свое главное приложение в Полном Доверии при выполнении Недоверяемых Плагинов на намного более низком доверительном уровне.

Это твердо к слою, сказали да или нет тому, уважает ли поток AppDomain. Для единственного потока возможно быть в другом AppDomains N. Такая ситуация возможна, если объект в одном AppDomain выполняет удаленный вызов к объекту в другом AppDomain. Поток должен будет перейти между AppDomains для завершения.

недостаток AppDomains является главным образом сложностью. Дистанционная работа может занять определенное время для получения головы вокруг, и правильно установка AppDomain может быть нетривиальным процессом.

можно хотеть посмотреть через документацию MSDN относительно AppDomains. Трудно найти succint учебное руководство, которое описывает их, потому что у них есть множество сложных функций. Это предоставляет хороший обзор, который, если он не отвечает на Ваш вопрос непосредственно, по крайней мере, укажет на Вас в правильном месте.

http://msdn.microsoft.com/en-us/library/cxk374d9.aspx

, Этот документ больше не сохраняется, относится к этому для обновленной версии: https://msdn.microsoft.com/en-us/library/2bh4z9hs (v=vs.110) .aspx

99
ответ дан Bahman Fakhr Sabahi 24 November 2019 в 10:06
поделиться

Ответ JaredPar хорош, кроме он не отмечает смысл существования для AppDomains - который является, что можно только РАЗГРУЗИТЬ блок путем разгрузки его AppDomain. Если Вы - продолжительный процесс ОС, и Вы ожидаете должными быть загружаться и затем позже разгружаться блоки по любой причине тогда, Вам нужен AppDomain. Формирующим прототип примером здесь является ASP.NET, который загружает блоки кода приложения по требованию и затем может разгрузить их позже, когда приложения активно больше не используются.

стоимость Вы платите за способность разгрузиться, то, что независимость - необходимо связаться через границу AppDomain, не Может выполнить вызов простого метода. Необходимо управлять жизненным циклом AppDomain. И т.д.

, Если просто необходимо динамично загрузить блоки и не думать, что необходимо будет разгрузить их во время жизни единственного процесса тогда, Вы, вероятно не делаете потребность выполнить несколько AppDomains. Хорошим примером здесь могло бы быть большое приложение, которое поддерживает сменную модель, где он пронюхивает сменные блоки в "и т.д." каталог и загружает их всех. Однако, если сменные образцовые призывы к разгрузке плагинов... хорошо.

существуют сценарии изолированной части. Как, предположите, что Вы хотите загрузить 2 различных версии блока одновременно. Можно столкнуться с ловушками, если Вы не выделяете их с AppDomains. Но это будет довольно редко.

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

, Конечно, приложения могли полагаться на процесс ОС, когда Вы хотите разгрузить блок. Другими словами, у Вас могло быть 3 или 4 выполнения процессов сотрудничества, каждый с его собственным набором блоков, и когда Вы хотите разгрузить блок, просто закрыть процесс, который размещает тот блок. Но AppDomain предлагает механизм более высокого перфекта, чтобы сделать это, не требуя, чтобы процесс остановился/начал или межпроцессный comms, который более тяжел все еще, чем перекрестный-AppDomain comms, описанный ранее. Я подразумеваю, что это - все еще дистанционная работа, но это медленнее и больше контекстного переключения.

91
ответ дан Cheeso 24 November 2019 в 10:06
поделиться

Некоторые вещи можно сделать с AppDomains:

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

Проще говоря, это - граница безопасности и почти граница процесса. Насколько производительность идет, несколько AppDomains в рамках процесса не представляет значительные издержки. Запуск отдельного процесса вместо AppDomain является намного более дорогостоящим.

27
ответ дан jdehaan 24 November 2019 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: