Iniziamo con qualcosa che mi viene chiesto spesso...
Esistono varie soluzioni:
- base64 - codifico tutto in base64 e lo mando in un campo stringa o byte normale
- DIME - utilizzo WSE1.0, WSE2.0 o SOAP Toolkit 3.0 che supportano DIME e faccio fare tutto a loro
- MTOM - al momento è in fase di approvazione da parte del W3C (è una Candidate Recommendation) e non è supportato da nessun toolkit
Tutte hanno pro:
- con base64 la definizione del servizio è indipendente dal contenuto
- con DIME e i toolkit fanno tutto loro, basta usare la collezione degli attachments...
- MTOM sarà il futuro, verrà implementato in WSE3.0 e in Indigo
e anche dei contro:
- base64 non definisce chiaramente cos'è attachments e cos'è messaggio
- DIME è destinato a morire, anche se WSE3.0 e WSE2.0 potranno essere usati side-by-side
- MTOM al momento è in evoluzione e nessun toolkit lo supporta ufficialmente
Per quanto riguarda la sicurezza, base64 e MTOM possono utilizzare WS-Security, con DIME dobbiamo fare tutto noi...
Io alla fine se devo fare qualcosa di quick&dirty tutto in .NET uso WSE2.0 e DIME, poi ci penserò.
Se la soluzione è a più ampio respiro, per ora uso base64, poi passerò a MTOM quando sarà una Recommendation del W3C, e soprattutto quando i toolkit permetteranno di usarlo senza mal di testa...