我可以使用WCF DataMember传递数组

时间:2011-12-10 17:50:18

标签: wcf

假设我的WCF接口声明如下:

[ServiceContract]
public interface IManagementConsole
{
    [OperationContract]
    ConsoleData GetData(int strategyId);

[DataContract]
public class ConsoleData
{
    .....
    [DataMember]
    public int[] GetConnectionsStats { get; set; }
}

在我的程序中,我只分配值:

....
ConsoleData data = new ConsoleData();
....
data.GetConnectionsStats = Program.GetConnectionsStats();

问题是 - 这会起作用吗?数组实际上是一个指针?我想可能指针将通过WCF而不是传递数组数据?

2 个答案:

答案 0 :(得分:1)

没有什么可以阻止您将数组从客户端传递到服务器以及从服务器传递到客户端。请记住,在实际发送和接收之前,数据被序列化以便通过线路传输。所以,没有指针。数据在发送方侧被序列化,并在接收方侧反序列化。

在您显示的示例中,有一个服务操作,它返回一个包含整数数组的对象。当客户端调用GetData方法时,服务器将使用配置的绑定序列化ConsoleData合同并通过线路发送。

在客户端,将通过反序列化收到的内容来重建此数据的副本。

答案 1 :(得分:0)

WCF不传递数组指针。它提供了从应用程序中创建服务的能力,它通过使用Xml有效负载通过反序列化等传输数据的方法的底层公开来交换消息。

您将实施一项实施IManagementInterface服务的服务,而该服务将实施您的GetData方法。

这会返回您的ConsoleData对象供您使用,并且会包含属性GetConnectionStats,该属性包含您在GetData方法中设置的数据。

所以简而言之。您在服务中初始化的阵列将作为数据传输到您的应用程序,然后将其反序列化为其格式供您使用。