0

円グラフを生成するための WCF Web サービスを作成したいと考えています。たとえば、2 つの配列を WCF Web サービスに渡すと、渡された配列に対応する円グラフが返されます。

このようなもの:

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

これは達成できますか?はいの場合、これを達成するためのコードを手伝ってください。

4

2 に答える 2

2

これは実現できますが、サービスから返す型がserializableである場合に限られます。あなたの場合、あなたがどのタイプを返しているのかわからないので、私にはわかりません。

ただし、コメントでアレックスに同意します-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 に答える