【问题标题】:WCF: Why to use System.ServiceModel.Channels.Message class?WCF:为什么要使用 System.ServiceModel.Channels.Message 类?
【发布时间】:2012-10-10 19:24:57
【问题描述】:

我有一个一般性问题。为什么有时我们在创建 WCF 服务时要使用 System.ServiceModel.Channels.Message 类而不是一些具体的类?

例如:

1) 我们可以使用以下内容:

public Person GetPersonById(int id)
{
    Person person = Employees.CreateEmployees().First(e => e.Id == id);
    return person;
}

2) 但我们也可以使用以下内容:

public Message GetPersonById(Message id)
{
    string firstName = Employees.CreateEmployees().First(e => e.Id == id.GetBody<int>()).FirstName;
    Message response = Message.CreateMessage(id.Version, ReplyAction, firstName);
    return response;
}

有什么区别?在这两种情况下我会得到相同的结果吗?

【问题讨论】:

    标签: wcf message


    【解决方案1】:

    简短的回答 - 它是更高级别的抽象。
    例如,如果您的服务必须在不实际更改其合同的情况下发送可扩展的消息类型列表,或者想象一个负载平衡 WCF 代理。

    同样在消息处理管道中,如果没有这种抽象,就不可能创建处理消息的通用机制。

    【讨论】:

    • 不是我的问题,但对答案感兴趣....你能给出一些代码 sn-p 示例或更多解释吗?
    • 谢谢阿列克谢。请你告诉我,我发布的 2 个代码 sn-ps 有什么区别?为什么要使用 1) 而不要使用 2),反之亦然?
    • 如果您需要对消息进行一些低级别的工作 - 转到消息,否则 - 使用强类型模型。作为你们俩的一个很好的例子:从反射器中的 WIF 打开 Microsoft.IdentityModel.SecurityTokenService.SecurityTokenService 类。这是处理消息的低级工作的一个很好的例子。
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多