当发送加密的msmq消息时,似乎认证会降低速度(从2500 msg / sec到150 msgs / sec)。
System.Messaging.MessageQueue和带有msmqIntegration绑定的Wcf客户端似乎都是这种情况。
我的要求是加密传输,我可以不经过身份验证。我更喜欢WCF客户端,因为可以从app.config更改设置。
msmqIntegrationBinding有没有办法在没有身份验证的情况下进行传输加密?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ivGridMyApp"
android:layout_width="match_parent"
android:layout_height="100dp" /></LinearLayout>
我发现在使用系统时,通过注释掉以下内容,身份验证会减慢我的速度。
<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>
如果我打开身份验证,发送会再次变慢!
感谢您的帮助!
答案 0 :(得分:0)
WindowsDomain
身份验证表示Kerberos身份验证。它必然是一个多代理协议(使用诸如发送的4+个不同消息之类的东西)。由于您使用的是阻止.Send()
方法。这会限制你的速率(由于多个延迟路径),如果你没有引入某些异步性和并发性。
您可能会发现切换到简单的Certificate
身份验证就足够了。
结果是服务器将在没有用户凭据的情况下执行消息,但将进行身份验证(您知道是谁发送了消息,但您无法提升到该用户的权限)。