2011-02-24 7 views
14

메시지를 클라이언트로 보내기 전에 메시지의 크기를 테스트 할 수있는 방법이 있습니까? 사물의 서비스 측면에서 최대 메시지 크기 할당량을 처리하고 싶습니다.WCF 메시지 크기

+2

당신은 당신이 뭘 하려는지에 대한 자세한 정보를 제공 할 수 있습니까? 메시지 관리자가 충분할 수도 있지만, 어떤 메시지 엔코더가 사용되는지 알지 못하면 정확한 크기를 알 수 없습니다. 또한 많은 메모리를 할당하고 메시지를 두 번 직렬화하면 메모리와 CPU가 매우 비쌉니다. – MattC

답변

1

사용자 정의 MessageEncoder을 작성하여 서비스 측에서 사용하고 인코딩 된 메시지 크기가 WriteMessage 개인지 확인할 수 있습니다.

하는 방식으로 방법을 this guide에 따라 오버라이드 (override) :

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) 
{ 
    var result = this.text.WriteMessage(message, maxMessageSize, bufferManager, messageOffset); 

    // Encoded message check logic. 
    Console.WriteLine("Message sent. Length=" + result.Count); 

    return result; 
} 

public override void WriteMessage(Message message, Stream stream) 
{ 
    var position = stream.Position; 

    this.text.WriteMessage(message, stream); 

    // Encoded message check logic. 
    Console.WriteLine("Message sent. Length=" + (stream.Position - position)); 
}