2010-03-05 3 views
0

.NET Remoting에는 몇 가지 제한이 있습니다. 그 중 하나는 서버가 NAT/방화벽을 통해 인터넷 클라이언트에 이벤트를 보낼 수 없다는 것입니다. http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/6a91626a-3c44-45a1-b0f8-dbf4042f51e4/.NET Remoting 서버가 인터넷 클라이언트에 이벤트를 보낼 수없는 이유

그리고 오늘, 난 그 서버가 인터넷 클라이언트에 이벤트를 보낼 수 있도록 .NET Remoting을 개선 할 계획을 가지고 :

는 증거이다. .NET Remoting을 깊이 연구하지 않기 때문에 .NET Remoting이이 문제를 갖고있는 이유를 알 수 없습니다. 누구든지 나에게 몇 가지 설명을 줄 수 있니?

그리고이 문제를 해결할 수 있을지 모르겠다.

도와주세요. 감사.

답변

2

.NET Remoting에는 다른 네트워크 외부의 외부 클라이언트가 네트워크에서 서로 통신하기 위해 소켓을 사용하기 때문에 다른 네트워크 외부의 서버에 내부적으로 액세스 할 수없는 이벤트와 같은 제한 사항이 있습니다./MarshalByRef 개체의 비 직렬화는 네트워크 자체에 묶여 있으므로 방화벽을 적절하게 사용하여 외부에서 액세스 할 수 없습니다 ... 그러나 이벤트를 얻으려면 workarounds이 있음에도 불구하고 상당히 오래된 것입니다. 장소 ...

  • 은 방화벽 제한 등 DotNetRemoting 또는 GenuineChannels 주위에 얻는 제 3 자 사용합니다. GenuineChannels를 사용해 본 적이 있습니다. 회사 구성 요소를 구입할 때 회사 자체 및 문제의 소리, 문제가있는 부분에 대해 몇 가지 질문이 있지만 내부 구성 요소는 있습니다 ... 따르지 않는 타사 구성 요소에 대한 학습 곡선이 있습니다. Remoting의 일반적인 관습 이벤트 처리 메커니즘은 강력하고 작동하지만 Remoting이 .NET 1.1과 함께 제공 될 때 Microsoft에서 다루지 않는 논리를 무시합니다.
  • Remoting 프레임 워크의 제한 사항을 해결하는 데 도움이 될 수있는 CodeProject에 대한 기사를 작성했습니다. 외부 IP 주소에서 내부 네트워크로 트래픽을 리디렉션하는 것으로 방화벽 방어의 한계를 극복하는 데 도움이 될 수 있습니다. 구조체에 ...
  • 제한을 제거하고 이벤트를 구현하기 위해 Remoting 프레임 워크의 Mono 소스를 수정하십시오. 그러나 AFAIK, MarshalByRef 객체의 직렬화/비 직렬화에 걸림돌이 있습니다. Remoting의 serialization/deserialization과 호환됩니다.
  • 현대 시간으로 이동하여 응용 프로그램이 기존 인 경우, 내 트래픽을 실험하는 동안 가치가있을 수도 이전 원격 프레임 워크를 대체 WCF (Windows 통신 프레임 워크) ...

을 사용/배우 코드를 먼저 리다이렉트하고 자신의 케이스에서 작동하는지 확인하십시오 ... 즉, 이벤트를 보내거나받습니다 ...

+0

제 프로젝트에서이 문제를 해결하는 가장 좋은 해결책을 선택하도록 도와주세요. 서버가 인터넷 클라이언트에게 이벤트를 보낼 수 없다는 점을 제외하면 모든 것이 좋습니다. 감사. –

1

.NET Remoting은 보안 또는 제어 기능을 제공하지 않으므로 .NET Remoting을 사용하면 모든 시스템이 손상 될 수 있습니다. App-Domain 경계 통신을 허용하려면 프로세스 내에서만 사용해야합니다.

대신 WCF를 사용하십시오. WCF는 방화벽을 통과 할 수있는 표준 및 사용자 지정 전송을 제공합니다. 학습 곡선에서 시작하면서 미래가있는 것으로 시작하십시오.

관련 문제