0

我开发了一个 WCF 服务,它接受基于请求类型的请求和进程。但是,我遇到了我认为更多的是设计问题。大多数请求和响应都非常快速和简单,发送和接收少量数据,因此这对于标准缓冲传输模式非常有用。但是,有一些请求类型可能会返回(从服务到客户端)大量数据,在这种情况下,我必须将 MaxRecievedMessageSize 设置得非常高或切换到流传输模式。

我已经说服自己搁置个人请求并为流式请求创建新的合同/绑定/等是正确的方向。但是现在我面临的挑战是我喜欢传递一个请求对象(包含有关请求、其类型等的内容),这是一个数据合同。但是,如果我要转换为流传输模式,我会受到传递消息合同的限制。

我可以扩展数据契约并将扩展类称为消息契约吗?例如:

[DataContract]    
public class RequestObject

[MessageContract]
ExtendedRequestObject : RequestObject

如果我不能走这条路,那么确保架构仍然有意义的最佳方法是什么?我喜欢必须始终传递一个对象并能够对该对象进行验证,而不是拥有大量具有多个参数的方法/函数等?

4

1 回答 1

2

我找不到来源,但这似乎很奇怪而且不可能。如何处理基类的 DataMembers?

继承似乎没有必要,聚合怎么样:

[MessageContract]
class ExtendedRequestObject
{
    [MessageBodyMember]  RequestObject Request;

}
于 2012-10-08T18:24:25.127 回答