Проверка подлинности msmq замедляет шифрование
При отправке зашифрованного сообщения msmq похоже, что аутентификация замедляет скорость (от 2500 мсг / сек до 150 мсг / сек).
По-видимому, это относится как к System.Messaging.MessageQueue, так и к клиенту Wcf с привязкой msmqIntegration.
Мое требование для зашифрованного транспорта, я могу обойтись без аутентификации. Я бы предпочел клиента 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);
Если я включу аутентификацию, отправка снова станет медленной!
Спасибо за любую помощь!
1 ответ
WindowsDomain
аутентификация означает аутентификацию Kerberos. Это обязательно протокол нескольких агентов (использующий что-то вроде 4+ разных отправляемых сообщений). Так как вы используете блокировку .Send()
метод. Это ограничит вашу скорость (из-за нескольких путей задержки), если вы не добавите асинхронность / параллелизм.
Вы можете обнаружить, что переход на простой Certificate
аутентификации будет достаточно.
В результате сервер будет выполнять сообщение без учетных данных пользователя, но будет проходить проверку подлинности (вы знаете, кто отправил сообщение, но вы не можете повысить права этого пользователя).