2011-10-25 3 views
1

저는 C# 응용 프로그램 (클라이언트)을 가지고 있고 서버가 있습니다. 이제 서버는 문자열을 클라이언트에 보내고 모든 종류의 메시지를 전송합니다. 클라이언트에 보내는 메시지와 서버가 꽤 비슷해 보이는 지금은 StreamWriter을 사용하고 있습니다. 문자열을 UTF-8로 인코딩하고데이터 (메시지)를 서버에 보내는 가장 좋은 방법은 무엇입니까

"[email protected]@@@SOMEDATA1<><>SOMEDATA2<><>SOMEDATA3 

이 몇 가지 문제가 발생, 나를 생각하게 : 다음 지금

public void SendMessage(String p) 
{ 
    if (p != "") 
    { 
     string StringMessage = HttpUtility.UrlEncode(p, System.Text.Encoding.UTF8); 

     try 
     { 
      swSender.WriteLine(StringMessage); 
      swSender.Flush(); 
     } 
     catch (IOException e) 
     { 
      //do some stuff 
     } 
    } 
} 

보내, 내가 보내는 문자열이 같은 것입니다. 큰 응용 프로그램이 데이터를 보내거나받는 방식입니까? 꽤 바보 같기 때문에. 그렇다면 큰 응용 프로그램이 메시지를 보내는 방법에 대한 예제를 제공 할 수 있습니까?

또한 :

if(Subject="something") 
    do something 
else if(subject="something else") 
    do something else 

가 어떻게이 문제를 해결할 수 있습니다 메시지를 보내는 나의 방법은 예를 들어

경우 나 중첩 된 큰 만들 수 있습니다?

+1

자체 설명 데이터를 보냅니다. Xml. Soap 및 다른 interop 프로토콜의 코너 스톤. WCF를 고려하십시오. –

+0

자기 설명 데이터가 무엇을 의미합니까? exmaple을 게시 할 수 있습니까? –

답변

3

그것은 모두가 크게 응용 프로그램의 필요에 따라 사용하려고합니다.
일반적으로 말하자면 : 자신의 프로토콜을 발명하는 것은 좋은 생각이 아닙니다.

클라이언트에서 서버로 메시지를 보내는 데는 몇 가지 방법이 있습니다.
WCF에 대한 내용을 읽거나 .NET Remoting보다 .NET 2.0에있는 경우 제안 할 것입니다.
또한 HTTP 메시지를 보내려는 경우 프레임 워크가 있기 때문에 HTTP 메시지를 보내려는 경우가 있습니다.

+2

상호 운용성도 요구 사항 중 하나 인 경우 WCF Rest 서비스가 친구입니다 –

+0

모델이 서버에서 데이터를 가져 오는 WCF 클라이언트에 연결되어 있어야합니까? 또는 WCF 클라이언트가 모델 자체로 작동해야합니까? –

+0

모델이 클라이언트가 아니며 아무 것도 연결되어 있지 않습니다.모델은 비즈니스 오브젝트의 정의입니다. 당신은 그 사이에 Model 객체를 전달할 클라이언트와 서버를 모두 생성해야합니다. – Svarog

0

HttpUtility.HtmlEncode 방법을

대신를 urlencode()

+1

내 문제를 해결하는 데 어떻게 도움이 될까요? 인코딩에 대해 전혀 말하지 않고 인코딩하는 방법이 중요하지 않습니다. 문제는 내가 데이터를 이런 식으로 보낼 필요가 있는지 확신 할 수 없다는 것입니다. –

+0

죄송합니다. 귀하의 질문을 정확하게 이해하지 못했습니다. – Serghei

1

한 가지 방법은 XML-RPC를 사용하는 것입니다. 나는 this for .NET을 사용했다. 나는 그것을 수정 w/o 지시를 따랐고 클라이언트/서버 30mins 내 다른 좋아하는 그것을 수정하려면 10 일 안에있어. 본질적으로 함수를 정상적으로 호출하고 서버의 코드 실행을 차단하는 라이브러리의 마법을 통해 결과를 반환합니다. RPC = 원격 프로 시저 호출.

asp.net을 사용하는 경우 Linux에서 fastcgi 또는 apache를 사용하는 경우에도 IIS라는 지침을 사용하십시오. IIS라는 레이블이 붙어있어서 실수였던 것을 무시했습니다. .NET Remoting 옵션 (서버가 asp.net이 아닌 다른 응용 프로그램 인 경우)이 사용 가능합니다.

웹 클라이언트를 배우고 json 문자열을 서버에 게시하는 것은 좋지 않습니다. 그런 다음 응답을 json으로 읽습니다. XML-RPC는 꽤 표준적이고 제안되었습니다.

+0

아마도 잘못 되었겠지만 클라이언트에서 서버의 fucntions에 전화를 걸면 좋을 것 같아요. 어쨌든 고맙겠습니다. 그것. –

+0

@BlueGene : 일반적으로 사용자 로그인/인증이 필요한 항목에 대해 인증 기능 (또는 긴 API 키의 매개 변수)이 있습니다. OAuth는 널리 사용되는 방법입니다. 리모트 호출은 지금까지는 인증을 요구하지 않았지만 암호화는 https 뒤에 URL을 던져 현명한 공격을하는 것에 대해 걱정할 필요가 없습니다. 그러나 .NET 및 자체 서명 된 인증서 .NET을 사용하는 경우 불평하고 뭔가를 해제해야합니다. ServicePointManager.ServerCertificateValidationCallback을 찾아 항상 true를 반환하는 함수를 할당하십시오. –

관련 문제