C# 收益返回是否跨服务边界工作?

C# 收益返回是否跨服务边界工作?,c#,wcf,C#,Wcf,我有一个WCF服务与此合同和实施: [OperationContract] IEnumerable<string> GetData(int value); public IEnumerable<string> GetData(int value) { int i = 0; while (i++ < value) { Console.WriteLine($"retu

我有一个WCF服务与此合同和实施:

[OperationContract]
IEnumerable<string> GetData(int value);

public IEnumerable<string> GetData(int value)
{
           int i = 0;
            while (i++ < value)
            {
                Console.WriteLine($"returning {i}th item");
                yield return $" Item:{i}";
            }
        }
}
[运营合同]
IEnumerable GetData(int值);
公共IEnumerable GetData(int值)
{
int i=0;
while(i++<值)
{
WriteLine($“返回第{i}项”);
收益返回$“项:{i}”;
}
}
}

当客户端调用GetData时,收益率似乎不起作用。所有的物品都一次性归还,而不是一件一件地归还。

的确如此。因为数据是通过线路序列化的,所以序列化程序调用该方法,具体化结果并将其写入字节流以通过网络发送

如果您将该类与客户机放在同一个程序集中,并直接调用它,而不是通过服务管道调用它,那么它就可以工作了

不使用序列化连接确实很有意义,其中之一是您的另一个端点可能根本不是.NET,并且可能不知道
IEnumerable
在执行顺序方面是一个特殊的雪花