0

我想创建一个用于生成饼图的 WCF Web 服务。例如,我将两个数组传递给 WCF Web 服务,它会返回一个与传递的数组相对应的饼图。

像这样的东西:

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

这可以实现吗?如果是,请帮助我提供实现此目标的代码。

4

2 回答 2

2

它可以实现,但前提是您从服务返回的类型是可序列化的。就您而言,我不确定,因为不确定您要返回的类型。

但是,我同意 Alex 在评论中的观点 - 您应该在 ASP.NET 组件的 Web 服务器上生成图表,或者让客户端浏览器使用某种图表组件生成它。

于 2012-09-17T07:57:54.077 回答
1

虽然不推荐,但如果您坚持这样做(即从 WCF 服务返回 UI 元素),我可能会通过 WCF 发送渲染图像。假设您正在使用System.Web.DataVisualization命名空间中的图表,您可以使用该SaveImage方法并通过 WCF 发送结果。客户端可以显示该图像。

根据您的绑定,您可能希望使用适合发送图像等内容的技术。对于 HTTP 绑定,您可能需要考虑使用MTOM 编码

MTOM 是一种将带有 SOAP 消息的大型二进制附件作为原始字节传输的机制,允许使用更小的消息。

您的操作可能如下所示:

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!
}

客户端将有一些这样的代码(伪代码):

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

不确定上面代码中的细节是否完全正确,但它应该给你一个想法。

于 2012-09-17T08:11:52.703 回答