2

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

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

4

1 回答 1

1

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

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

于 2012-10-10T21:45:57.720 回答