WCF:为什么要使用System.ServiceModel.Channels.Message类?

时间:2012-10-10 19:24:57

标签: wcf message

我有一个普遍的问题。为什么有时我们应该在创建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;
}

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

1 个答案:

答案 0 :(得分:1)

简短回答 - 它是更高层次的抽象 例如,如果您的服务必须低于可扩展的消息类型列表而不实际更改其合同或想象负载平衡WCF代理。

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