2014-02-09 3 views
0

광산의 다른 컴퓨터를 WCF (수신기)으로 실행되는 전용 Windows 서비스에 연결하는 데 문제가 발생했습니다. 해당 컴퓨터에는 외부 모뎀이 연결되어있어 외부로의 연결을 방해하는 경우가 있지만 컴퓨터는 위에서 언급 한 수신기 서비스를 사용하여 WCF을 통해 연결해야합니다. WCF는 SMB 프로토콜을 지원합니까? 또는 반드시 TCP를 통해 실행되지 않는 다른 프로토콜?

내가 필요로하는 모든 연결 (다른 컴퓨터 힘든) 내 네트워크 내부, 그리고 내가 착각하고 있지 않다 가정 (Windows 공유 (파일을 복사하는 등 ') 작업을 수행 보인다과는 SMB 프로토콜을 사용하기 때문에

) 가능한 경우 해당 프로토콜 또는 TCP을 실행하지 않는 다른 프로토콜을 사용하여 작동하는 연결을 사용하는 것이 좋습니다. MSDN에서 어떤 도움도 찾을 수 없지만 누군가가 이전에 비슷한 것을 시도해 보았거나 유사한 문제가 발생하여 해결 방법을 찾았습니다.

일부 코드 (제 생각 엔 꽤 일반) :

private const string ServiceEndointURL = "net.tcp://localhost:6789/MyService"; 

아래에 사용 : IService가 정의 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = true)] public class MyApplication : IService :

[ServiceContract(Name = "MyService")] 
public interface IService 
{ 
    [OperationContract] 
    bool HandleMessage(Message message); 
} 

다른 쪽 ("클라이언트") :

string ListenerURL = "net.tcp://xx.xx.xx.xx:6789/MyService"; 
     ChannelFactory<IService> factory = new ChannelFactory<IService> 
      (new MyNetBindings(), ListenerURL); 
     IService channel = l_oFactory.CreateChannel(); 
     ((IContextChannel)channel).OperationTimeout = new TimeSpan(0, 1, 1); 

편집 : externa l 모뎀이 해당 컴퓨터의 기본 게이트웨이 위치를 차지하고 있습니다. 아마도 연결이 필요하지 않을 수 있습니다. 원본 게이트웨이와 메트릭이 낮은 영구 경로를 수동으로 추가 할 때 다시 작동하는 것처럼 보입니다. 자동으로 해결할 수있는 방법은 없나요?

미리 감사드립니다.

답변

0

이렇게 ... SMB은 전송 프로토콜이 아닙니다. SMB 자체는 주로 TCP을 사용하지만 UDP에서도 실행될 수 있습니다. WCFUDP 이상으로 사용하려면 (더 info here) 할 수 있지만 더 잘 작동하는지 의심 스럽습니다.

내 생각에 WCF이나 네트워크에 문제가있는 것 같습니다. 대신 그 문제를 해결해야합니다.

+0

의견을 보내 주셔서 감사합니다. 위키 백과에서 읽은 것처럼 실제로 다른 전송 계층에서 실행될 수 있습니다. 어쩌면 나는 물건을 섞고 있는데, 나의 이해는이 물건에 관해서 깊지 않다. 그러나 실제로 TCP를 통한 WCF는 외부 모뎀을 연결 한 상태에서 다른 컴퓨터로 파일을 복사해도 문제가 없습니다. 나는 왜 그것을 모르고 올바른 방향으로 해결해야할지 모르겠다. 어떻게 해결할 수 있을지 더 많은 아이디어를 얻게되어 기쁘다. 감사합니다. – AndroidNewbie

+0

@AndroidNewbie 질문을하고 WCF 구성, 사용중인 코드 및 오류 세부 정보를 표시해야합니다. – i3arnon

+0

내 질문에 편집 됨 – AndroidNewbie