带有消息表示的WCF和protobuf

时间:2015-04-21 14:03:07

标签: c# wcf protobuf-net

我有一个抽象基类可以使用protobuf序列化:

[ProtoContract]
class DataPacket
{
  [ProtoMember(1)]
  public byte[] Data {set;get;}
  [ProtoMember(2)]
  public byte[] Sign {set;get;}
  [ProtoMember(3)]
  public long UserId {set;get;}
  [ProtoMember(4)]
  public DateTime Stamp {set;get;}
}

挑战在于让WCF表示每个收到的消息的每个发送和检查签名。一个静态类中有两个静态方法:

bool Verify(DataPacket pack) 

void Sign(DataPacket pack)

因此,如果验证方法返回false,我们需要抛出Exception else - 默认WCF行为。 有可能解决吗?

1 个答案:

答案 0 :(得分:0)

您可以将数据包包装在邮件合同中并强制执行签名:

[MessageContract]
public class {
    [MessageBodyMember(ProtectionLevel = ProtectionLevel.Sign)]
    public byte[] Packet { get; set; }
}

WCF将自动处理它(计算签名并将其嵌入到SOAP信封中)。当然,Protobuf(de)序列化取决于你。