【问题标题】:IEnumerable<T> as return type for WCF methodsIEnumerable<T> 作为 WCF 方法的返回类型
【发布时间】:2014-02-25 20:32:51
【问题描述】:

如果我定义了一个带有字符串和日期时间属性的测试对象,并使用它在 WCF 中返回 IEnumerable(T) 集合

[OperationContract]
IEnumerable<Test> GetTestNotes();

当从客户端调用服务时,我看到它正在将 IEnumerable 转换为 Test[]:

public Test[] GetTestNotes() {
    return base.Channel.GetTestNotes();
} 

而且我能够获取数据。

问题是:使用 IEnumerable(T) 接口而不是具体的 List(T) 接口有多可靠?

使用这些 WCF 服务的我的客户端不仅在 .NET 中,而且在 JAVA 中。

【问题讨论】:

    标签: c# .net wcf interface


    【解决方案1】:

    如果您使用 Visual Studio 生成的服务引用,您可以选择用于集合的类型。右键单击 Service References 下的服务并选择 Configure Service Reference...。您应该会看到以下选项:

    但是,这仍然不允许您选择IEnumerable&lt;T&gt;。如果您想更严格地控​​制客户端界面的外观,最好的办法是在单独的程序集中定义合同,然后在客户端和服务器上引用这些程序集。

    【讨论】:

    • 很高兴了解配置服务参考选项。我实际上想知道使用 IEnumerable(T) 是否会在以后给我任何序列化问题。在我的简单概念证明中,它在使用 .Net 客户端(控制台应用程序)时运行良好。但是想知道 IEnumerable(T) 是否适用于 Java 客户端?
    • @sunny24365 在内部,该服务使用 SOAP (XML) 序列化。你在接口上声明什么类型纯粹是为了客户端的利益。 WCF 足够聪明,可以按照服务期望的方式序列化 IEnumerable&lt;T&gt;
    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多