2012-04-16 2 views
1

최근에 C#을 사용하여 웹 서비스 클라이언트를 작성했습니다. 웹 서비스 구성 요소가 강력하고 쉽기 때문에 (Gsoap 또는 Axis IMO보다 훨씬 쉽게 작업 할 수 있기 때문에) C#을 선택했습니다.C# 웹 서비스 응답 배열

내 C# 응용 프로그램은 백그라운드에서 실행되며 다른 응용 프로그램 (웹 응용 프로그램, PLC 및 데이터베이스 포함)이 저장하고 사용할 수있는 데이터를 반환해야합니다.

내 반응은 다음과 같이 보일 :

[ 
[ 
    string 
    int 
    [] 
] 
string 
[] 
int 
] 

...

요점은 반환 값이 간단하지 않은 것입니다. 내 질문은 응용 프로그램의 다른 부분에서이 데이터를 다시 형식화하고 소비하는 가장 좋은 방법은 무엇입니까?

내 선택 사항은 다음과 같습니다

  1. XML 내가 두 경로를 체크 아웃 한이 데이터를 직렬화 할 수있는 좋은 방법을 발견하지 않았습니다

  • JSON. 누구든지 어떤 권고를 제공 할 수 있습니까?

    최악의 경우 StringBuilder를 사용하여 XML을 작성하는 공통 루틴을 작성해야 할 수도 있지만, 아직 알지 못하는 뭔가가 있기를 바래요. (C#을 처음 접했을 때) 제 인생을 편하게 만듭니다. .

  • +0

    웹 서비스 클라이언트가 나머지 앱의 데이터를 직렬화하여 소비합니까? 나머지 앱은 처리 중이십니까? 그렇다면 왜 직렬화하고 역 직렬화합니까? 당신은 객체 모델의 데이터를 표현하고 그 객체들을 다시 전달할 수 있습니까? – JMD

    +0

    어떤 종류의 웹 서비스입니까? ASMX 또는 WCF? –

    +0

    @JMD 내 응용 프로그램의 나머지 부분은 C# (PHP와 C의 혼합)이 아니기 때문에 C# 객체가 작동하지 않습니다. –

    답변

    2

    JSON을 사용할 수 있습니다.

    는 데이터와 확인을 직렬화 할 JavaScriptSerializer 클래스를 사용하여이 코드를 (나는 지금 내 dev에 기계가 아니에요) 테스트하지 않았습니다 http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

    var data = new { name = "someValue", id = 1 }; 
    
    var json = new System.Web.Script.Serialization.JavaScriptSerializer(); 
    
    return json.Serialize(data); 
    

    ,하지만 나는 그것을 확신 귀하의 필요에 맞게 조정할 수 있습니다.

    +0

    이것은 훌륭하게 작동한다. 전에이 접근법을 시도했지만 Services.Web.Extensions가 작동하지 않는 것처럼 보였습니다. 나는 또 다른 주사를 주고이 게시물을 발견 : http://stackoverflow.com/questions/1987733/system-web-extensions-assembly-cannot-be-resolved 고마워요! –

    1

    반환 값에 대한 DTO 클래스를 만들고 JSON 또는 XML 직렬화를 사용하는 이유는 무엇입니까? 매우 편리합니다.