msmq 身份验证会减慢加密速度

msmq authentication slows encryption

发送加密的 msmq 消息时,身份验证似乎降低了速度(从 2500 msg/sec 到 150 msgs/sec)。

System.Messaging.MessageQueue 和具有 msmqIntegration 绑定的 Wcf 客户端似乎都是这种情况。

我的要求是加密传输,我可以不认证。我更喜欢 WCF 客户端,因为可以从 app.config.

更改设置

msmqIntegrationBinding 是否可以在不进行身份验证的情况下进行传输加密?

    <msmqIntegrationBinding>
        <binding name="VisionAirMessagingBinding"
            timeToLive="12:00:00"
            maxReceivedMessageSize="4100000"
            receiveErrorHandling="Move"
            retryCycleDelay="00:30:00"
            useMsmqTracing="false"
            serializationFormat="Stream">
            <security mode="Transport">
                <transport msmqAuthenticationMode="WindowsDomain"
                    msmqEncryptionAlgorithm="RC4Stream"
                    msmqProtectionLevel="EncryptAndSign"
                    msmqSecureHashAlgorithm="Sha1"/>
                    </security>
                </binding>

我发现身份验证会减慢我的速度,方法是在使用 System.

q1.Send(new Message 
{
    BodyStream = new MemoryStream(
        Encoding.ASCII.GetBytes("ABCDEFGHIJKLMNOPQRSTUVXYZ")),
        Label = i.ToString(),
        //UseAuthentication = true,
        UseEncryption = true
}, msmqTx);

如果我打开身份验证,发送又变慢了!

感谢任何帮助!

WindowsDomain authentication表示Kerberos认证。它必然是一个多代理协议(使用类似 4 + 不同的消息被发送)。由于您使用的是阻塞 .Send() 方法。如果您不投入一些 asynchronicity/concurrency.

,这将限制您的速率(由于多个延迟路径)

您可能会发现切换到简单的 Certificate 身份验证就足够了。

结果是服务器将在没有用户凭据的情况下执行消息,但会经过身份验证(你知道是谁发送了消息,但你不能提升到该用户的权限)。