Почему сервер .NET Remoting не может отправить событие интернет-клиентам - PullRequest
0 голосов
/ 05 марта 2010

Как вы знаете, .NET Remoting имеет некоторые ограничения, одним из которых является то, что сервер не может отправлять события интернет-клиентам через NAT / firewall.

Это доказательство: http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/6a91626a-3c44-45a1-b0f8-dbf4042f51e4/

И сегодня у меня есть план по улучшению .NET Remoting, чтобы сервер мог отправлять события интернет-клиентам. Я не исследую .NET Remoting глубоко, поэтому я не знаю причину, почему .NET Remoting имеет эту проблему. Кто-нибудь может дать мне некоторые объяснения?

И я не знаю, смогу ли я решить эту проблему или нет?

Пожалуйста, помогите мне. Благодаря.

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

.NET Remoting имеет свои ограничения, такие как события, и внешние клиенты за пределами другой сети не могут получить внутренний доступ к серверу в другой сети из-за использования сокетов для связи друг с другом в сети, поскольку сериализация / десериализация MarshalByRef Объекты привязаны к самой сети и, следовательно, не могут быть доступны извне с установленным межсетевым экраном ... И это довольно старый способ, однако есть четыре способа справиться с этим, несмотря на обходные пути чтобы получить события на месте ...

  • Используйте стороннюю компанию, которая обходит ограничения брандмауэра, например DotNetRemoting или GenuineChannels . Использовали GenuineChannels, есть некоторые вопросы о самой компании и о ее звучании, в беде, когда я приобрел их компонент, но были внутренние проблемы ... Существует кривая обучения сторонних компонентов, поскольку она не следует обычные соглашения об удаленном взаимодействии. Механизм обработки событий является мощным и работает, но он не поддается логике, предписанной Microsoft, когда Remoting вышла с .NET 1.1.
  • Я написал статью о CodeProject , которая может помочь обойти ограничение среды Remoting .. перенаправляя трафик с внешнего IP-адреса во внутреннюю сеть ..., которая может помочь вам получить вокруг ограничения структуры межсетевого экрана в вашем случае ...
  • Измените исходные коды Mono для платформы Remoting, чтобы снять ограничение и реализовать события ... но AFAIK, есть загвоздка с сериализацией / десериализацией объектов MarshalByRef, поскольку они не на 100% совместимы с сериализацией / десериализацией Remoting.
  • Идите в ногу со временем и изучайте / используйте WCF (Windows Communication Framework), который заменяет старую платформу Remoting ...

Если приложение унаследовано, возможно, стоит сначала поэкспериментировать с моим кодом перенаправления трафика и проверить, работает ли оно в вашем случае ... то есть отправлять / получать события ...

1 голос
/ 05 марта 2010

.NET Remoting не дает БЕЗОПАСНОСТИ или контроля, если вы используете .NET Remoting, ожидайте, что все ваши системы будут скомпрометированы.Его следует использовать только в процессе, чтобы разрешить межграничную связь между доменами приложений.

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

...