我有一系列自托管WCF服务(使用netTcpBinding
),我希望通过使用梦幻般的 protobuf-net 序列化程序来增强它。
我按照ProtoEndpointBehavior
类(see here)的文档中的说明,使用自定义行为扩展配置了客户端和服务端点。从第一次尝试开始,我的测试运行良好,但是,我非常怀疑WCF的东西在第一次尝试时运行良好;)
有没有一种简单的方法可以断言默认DataContractSerializer
被XmlProtoSerializer
取代?
我真的很喜欢可以编码为单元测试的一部分的测试。我不希望通过不小心篡改.config
文件来无意中禁用protobuf-net库。
答案 0 :(得分:3)
如果您在wcf测试客户端中调用您的服务,您将看到<原/>标记在响应的主体
如果您将客户端配置为使用原型行为并使用"无意中禁用的protobuf"来调用服务,则由于序列化程序不同,您的答案将为null。您可以在测试中查看它
var address = new EndpointAddress( url );
var binding = GetBinding( address.Uri );
var factory = new ChannelFactory<TService>( binding, address );
factory.Endpoint.EndpointBehaviors.Add( CreateProtobufEndpointBehavior() );
var client = factory.CreateChannel();
var answer = client.GetSomeInt();
AssertAnswerIsNotNull(answer);