2012-06-29 2 views
0

.NET Remoting을 사용하여 클라이언트와의 연결을 설정하는 서버 측 코드가 있습니다. 일반적으로, 나는 클라이언트와 서버 사이에 전달 된 객체와의 인터페이스를 사용하는 것이 표준이며 더 안전한 대안이라는 것을 이해한다. 그러나 내가 설정하고있는 간단한 통신을 위해 필요한 클래스를 정의하는 문제를 겪을 필요가 없다. 인터페이스..NET Remoting 규약

그래서 다음 코드에서는 클라이언트에 문자열을 반환하기 때문에 필자는 필연적이라고 느끼지 않지만 일부는 그렇지 않을 수도 있으므로 여기에 내 질문을 게시하고 있습니다. 나는 일반 대회를 지키거나 내가하고있는 방식대로 지켜야합니까? 아래에 표시된 코드가 원격 서버를 설정하는 올바른 방법입니까?

은 (내가 대신 WCF의 원격을 사용하고 이유를 묻지 마세요. 내 상사가 특히 원격를 요청하고 내가 왜 몰라.)

class HttpServer 
{ 

    [STAThread] 
    public static Boolean startService() 
    { 
     HttpChannel channel = new HttpChannel(80); 

     ChannelServices.RegisterChannel(channel); 
     Type ddcServerType = Type.GetType("DDCEngine.DDCServer"); 
     RemotingConfiguration.RegisterWellKnownServiceType(ddcServerType, "DDCServer", WellKnownObjectMode.Singleton); 
     return true; 
    } 
} 

public class DDCServer : MarshalByRefObject 
{ 
    public string Hello() 
    { 
     string r = "hello"; 
     return r; 
    } 

    [Description("Sets a new IO Point List in the DDC.")] 
    public string SetIOPointList(string host, DDCService.pointInformation[] pointList) 
    { 

     string result; 

     DDCService.LGeDDCClient ddc = new DDCService.LGeDDCClient("LGeDDC", host); 

     try 
     { 
      result = ddc.SetIOPoint(pointList); 
     } 
     catch (Exception ex) 
     { 
      result = ex.ToString(); 
     } 
     return result; 
    } 
+0

나는이 모든 것이 간단하고 괜찮은 것 같지만, 당신에게는 사장님이 있습니다. 향후 변경 사항을 고려하고이를 확장하기 위해 어떤 기회가 있는지 확인하십시오. 그렇다면 처음부터 제대로하는 것이 좋습니다. –

답변

1

문제가 있다는 것입니다 인터페이스를 사용하지 않는로 그런 다음 클라이언트에 서버 코드를 포함시켜야합니다. 이런 간단한 문제는 아니지만 서버 인터페이스가 복잡해 지거나 서버 구현이 복잡 해지면 문제가 될 수 있습니다.

배포 문제가됩니다. 서버 구현에서 무언가를 변경할 때마다 새 서버 구현을 모든 클라이언트에 복사해야합니다. 인터페이스를 사용하는 경우 인터페이스를 변경하는 경우 클라이언트를 업데이트해야하는 유일한 시간입니다. 서버 구현 변경 사항은 클라이언트에 영향을 미치지 않습니다. 최소한 클라이언트가 서버와 상호 작용하는 방식에는 영향을 미치지 않습니다.

또한 보안 문제가 발생할 수 있습니다. 서버 코드에 독점 정보가있는 경우 해당 코드가 모든 클라이언트에 공개됩니다. 그러나 인터페이스를 사용하는 경우 서버 코드를 포함 할 필요가 없습니다.

서버의 인터페이스를 정의하지 않으려면 앞이 더 쉽게 보일 수 있습니다. 그러나 장기적으로 인터페이스를 사용하는 것이 더 안전하고 수정하기 쉽고 배포가 쉽습니다. 특히 여러 클라이언트가있는 경우 더욱 그렇습니다.

모두 당신이 사장에게 왜 Remoting을 요청해야하는지 물어보아야합니다. 그러나하기 전에 WCF와 Remoting의 차이점을 읽어보십시오. WCF는 분명 더 강력한 기술입니다.