当发送加密的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);
如果我打开认证,发送又变慢了!
谢谢你的帮助!
WindowsDomain
认证方式为Kerberos认证。它必须是一个多代理协议(使用4个以上不同的消息发送)。因为您正在使用阻塞.Send()
方法。这将限制您的速率(由于多个延迟路径),如果您不抛出一些异步性/并发性。
您可能会发现切换到简单的Certificate
认证就足够了。
结果是服务器将在没有用户凭据的情况下执行消息,但将进行身份验证(您知道谁发送了消息,但您无法提升到该用户的权限)。