Paolo Pialorsi

SOA, Workflow Foundation (WF), Windows Communication Foundation (WCF) e le Architetture Distribuite

Prestazioni dei Servizi SOAP

Approfittando del fatto che fino a domattina sarò in ferie... ho fatto qualche test di prestazioni dei servizi SOAP sia su HTTP, che HTTPS che SOAP.TCP con l'ultima release di WSE2 (SP2).
Ecco i risultati che ho ottenuto:

Ho provato, in tutte le varie salse, un servizio, chiamandolo 1000 volte, per 3 volte (quindi 3000 in tutto) e vedendo il tempo medio impiegato. Il servizio restituiva un array di 20 item di tipo Customer così definiti:

<s:complexType name="Customer">
  <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
    <s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
    <s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
  </s:sequence>
</s:complexType>

Per WS-Security intendo WS-SecureConversation (scambio del token) + WS-Security con o senza encryption (ENC) e firma digitale (DSIG).

Ed ecco l'interpretazione dei risultati:

  1. Ovviamente HTTP liscio è il più veloce
  2. SOAP.TCP liscio è più lento di HTTP, ma il vantaggio di SOAP.TCP non è la velocità, ma il fatto di poter lavorare peer-to-peer e in asincrono
  3. HTTPS è risultato molto veloce, leggermente di più di quello che mi aspettassi
  4. HTTP + WS-Security con encryption è risultato circa 3 volte più lento di HTTP "liscio", ma in questi tempi va calcolato lo scambio del token di WS-SecureConversation
  5. La firma digitale - con WSE2 - è quella che determina il vero rallentamento. Usiamola quindi solo quando serve davvero.
  6. I SoapService che sfruttano la possibilità di essere configurati come HttpHandler non sono particolarmente veloci, quindi è meglio usarli solo se abbiamo bisogno del massimo controllo sul messaggio SOAP, altrimenti meglio andare all'antica con gli ASMX.