0

发送加密的 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>

我发现通过在使用系统时注释掉以下内容,身份验证会减慢我的速度。

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

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

感谢您的帮助!

4

1 回答 1

0

WindowsDomain身份验证意味着 Kerberos 身份验证。它必然是一个多代理协议(使用类似 4+ 不同的消息发送)。由于您使用的是阻塞.Send()方法。如果您不投入一些异步/并发性,这将限制您的速率(由于多个延迟路径)。

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

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

于 2015-09-01T17:08:19.827 回答