Глобальная сборка и удаленное взаимодействие - PullRequest
0 голосов
/ 30 декабря 2010

У меня некоторая путаница в отношении сборки и удаленного взаимодействия, поэтому я хочу уточнить с вами два момента.

1) Remoting используется для связи между двумя приложениями на одном и том же или на другом компьютере, поэтому мой вопрос: есть ли необходимость в удаленном взаимодействии, если оба приложения находятся на одном компьютере, так как мы можем использовать приватную сборку или глобальную сборку для непосредственного взаимодействия с Клиентское приложение, тогда какова цель удаленного взаимодействия, если обе сборки или приложения находятся на одном компьютере.

2) Если сборка является общедоступной, т. Е. Глобальная сборка, и клиентские приложения вызывают эту сборку в то время, когда они работают в одном или другом домене приложения? Если то же самое в том случае, если многие приложения используют одну и ту же глобальную сборку, то будет ли создано столько экземпляров этой глобальной сборки? Если нет, то, когда мы используем глобальную сборку, то внутренне они используют удаленное взаимодействие для этого.

Обновление:

1) Если я использую сборку, присутствующую в глобальном кэше, запускается ли она в том же домене приложения, что и домен клиента, вызывающего это приложение, или в другом домене приложения.

2) Если несколько приложений используют одну и ту же сборку глобального кэша, то выполняется ли эта сборка в каком-либо другом домене приложений или в одном домене приложений клиентских приложений, поэтому в этом случае приложения i4 4 используют одну сборку, запущенную в 4 AppDomain.

3) Если сборка глобального кэша выполняется в другом домене приложения, то используют ли они внутреннее удаленное взаимодействие для связи с клиентом.

Обратите внимание, что здесь речь идет о домене приложения, а не о процессе, в котором выполняется все приложение.


Я не получил должного разъяснения. Пожалуйста, ответьте на мой вопрос шаг за шагом

1) Если я использую сборку, присутствующую в глобальном кэше, независимо от того, выполняется ли она в том же домене приложения, что и домен клиента, вызывающего это приложение, или в другом домене приложения.

2) Если несколько приложений используют одну и ту же сборку глобального кэша, то выполняется ли эта сборка в каком-либо другом домене приложений или в одном домене приложений клиентских приложений, поэтому в этом случае приложения i4 4 используют одну сборку, которую они запускают в 4 AppDomain.

3) Если сборка глобального кэша выполняется в другом домене приложения, то используют ли они внутреннее удаленное взаимодействие для связи с клиентом.

Обратите внимание, что здесь речь идет о домене приложения, а не о процессе, в котором выполняется все приложение.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 декабря 2010

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

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

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

0 голосов
/ 30 декабря 2010

Позвольте мне попробовать и посмотреть, смогу ли я объяснить это с помощью примера

У меня есть сборка "common.dll", установленная в GAC на компьютере "A"

Теперь,У меня есть 2 приложения «Приложение 1» и «Приложение 2», которые оба используют «common.dll». Примечание: «Использование» здесь строго связано с разделением определения типов в common.dll, а не их СОСТОЯНИЕ

Оба«Приложение 1» и «Приложение 2» выполняются в своих собственных процессах (для простоты предположим, что оба приложения консоли).Следовательно, если Приложение 1 хочет передать информацию в Приложение 2 - это не тривиально, поскольку включает межпроцессное взаимодействие.

Вот где приходит «удаленное взаимодействие». Это позволяет «Приложению 1» отправлять сообщения в «Приложение 2»так что они могут обмениваться информацией во время выполнения друг с другом.

Удаленное взаимодействие - это, по сути, слой классов в .NET Framework, который скрывает от вас мельчайшие детали межпроцессного взаимодействия.

Примечание. В данный момент WCF заменяет удаленное взаимодействие, и рекомендуется использовать WCF для всех потребностей связи вне процесса

...