お勧めしませんが、これを行う (つまり、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
上記のコードの詳細が完全に正しいかどうかはわかりませんが、アイデアが得られるはずです。