2012-09-17 6 views
0

원형 차트를 생성하기위한 WCF 웹 서비스를 만들고 싶습니다. 예를 들어 WCF 웹 서비스에 두 개의 배열을 전달하고 전달 된 배열에 해당하는 파이 차트를 반환합니다. 이 같은서비스에서 원형 차트 반환

뭔가 :

getPieChart(double[] yAxix, string[] xAxix){ 
    return Chart1.Series["Default"].Points.DataBindXY(xAxix, yAxix); 
} 

이 달성 할 수 있습니까? 그렇다면 코드를 작성하여이 문제를 해결하십시오.

+1

나는 WCF 서비스에서 수행하는 것보다 클라이언트 측 (즉, ASP.Net 응용 프로그램)에 "차트"생성 논리를 추가하는 편이 더 좋습니다. –

+0

입력 Alex에게 감사드립니다. 그러나 WCF 웹 서비스를 생각한 이유가 여러 응용 프로그램에서 로그인을 생성하는 동일한 차트를 원합니다. –

+0

마지막 코멘트를 이해하지 못했습니다. "여러 응용 프로그램에서 로그인 생성"? –

답변

2

서비스에서 반환하는 유형이 serializable 인 경우에만 가능합니다. 귀하의 경우에는 어떤 유형을 반환하는지 확실하지 않으므로 확실하지 않습니다.

HOWEVER 나는 알렉스와 의견에 동의합니다. ASP.NET 구성 요소의 웹 서버에서 차트를 생성하거나 클라이언트 브라우저에서 차트 구성 요소로 생성해야합니다.

+0

반환 유형은 입력 매개 변수에 따라 생성 된 원형 차트의 이미지가 될 것입니다 –

1

권장하지는 않지만 WCF 서비스에서 UI 요소를 반환해야한다고 주장하면 WCF를 통해 렌더링 된 이미지를 보내는 것으로 갈 것입니다. System.Web.DataVisualization 네임 스페이스의 차트를 사용한다고 가정하면 SaveImage 메서드를 사용하고 WCF를 통해 결과를 보낼 수 있습니다. 클라이언트는 해당 이미지를 표시 할 수 있습니다.

바인딩에 따라 이미지 같은 것을 전송하는 데 적합한 기술을 사용할 수 있습니다. 는 HTTP 바인딩을 사용하면 MTOM encoding 사용을 고려할 수 있습니다

MTOM은 원시 바이트로 SOAP 메시지와 함께 큰 바이너리 첨부 파일을 전송하는 작은 메시지를 허용하는 메커니즘입니다.

귀하의 작업은이 같은 것을 볼 수 있었다 : 위의 사항 경우

object series = GetSeriesFromSomeLocation(); 
byte[] chartBytes; 
proxy.GetChart(series, out chartBytes); 
// Construct an Image object based on the chartBytes, using a stream 
// Show the image in your UI control 

확실하지 :

public bool GetChart(object series, out byte[] chartBytes) 
{ 
    var chart = CreateCoolChart(series); 
    MemoryStream ms = new MemoryStream(); 
    chart.SaveImage(ms); 
    chartBytes = ms.ToArray(); 
    return true; // Success! 
} 

이 클라이언트는이 (의사 코드) 같은 일부 코드가됩니다 코드는 완전히 정확하지만 아이디어를 제공해야합니다.

+0

예 차트를 System.Web.DataVisualization에서 가져 오십시오 .Charting 더 자세히 설명해 주시겠습니까? –

+0

시작하기 위해 약간의 샘플 (의사) 코드를 추가했습니다. 행운을 빕니다! – Jeroen

+0

도움을 주신 Jeroen에게 감사의 말씀을 전하고 진행 상황을 계속 업데이트 할 것입니다. –