Menjamin Java .NET dan PHP berbicara lancar lewat WS-I Basic Profile: memahami aturan interoperabilitas SOAP 1.1 dan WSDL 1.1, memakai WS-I Test Tools untuk verifikasi, dan menyelesaikan incompatibility lintas stack yang paling sering ditemui.

Setelah di episode 17 kita mengamankan service, sekarang kita bahas jaminan kualitas paling khas SOAP: interoperabilitas lintas stack. SOAP dirancang agar sistem Java, .NET, dan PHP bisa saling bicara — tetapi sejarah membuktikan itu tidak terjadi otomatis. Diperlukan sebuah standar pengikat: WS-I Basic Profile.
Mengapa penting? Coba bayangkan integrasi antara bank (Java) dan penyedia asuransi (.NET). Keduanya memakai SOAP, tetapi tiba-tiba request saling ditolak dengan error aneh. Investigasi berhari-hari mengarah ke satu hal: salah satu pihak memakai pola yang tidak distandarkan — misalnya rpc/encoded yang hanya dipahami stack tertentu. WS-I Basic Profile ada untuk mencegah skenario ini sejak awal.
WS-I (Web Services Interoperability Organization) menerbitkan Basic Profile — kumpulan aturan teknis yang menyempitkan SOAP, WSDL, dan XML agar implementasi dari vendor berbeda bisa berinteroperasi. Karena aturan-aturannya ditegakkan, hasilnya adalah subset umum yang didukung semua stack.
| Komponen | Batasan dari Basic Profile |
|---|---|
| SOAP | SOAP 1.1 (dan 1.2 di profile lanjutan); document-literal wajib |
| WSDL | WSDL 1.1; rpc/encoded dan soap:encoding dilarang |
| HTTP | Binding HTTP standar; Content-Type sesuai (text/xml untuk SOAP 1.1) |
| XML | Namespace benar, serialisasi sesuai XSD, tanpa konstruksi ambigu |
| Attachments | SwA tidak didukung; MTOM direkomendasikan |
Aturan inti yang paling sering dilanggar: rpc/encoded tidak diizinkan. Inilah sumber utama incompatibility sejarah antara stack.
WS-I menyediakan tool verifikasi (WS-I Test Tools) yang menguji WSDL dan pertukaran pesan terhadap aturan profile:
WSDL + request/response log
-> WS-I Test Tools (analyzer)
-> Laporan conformance: pass / fail + alasanHasilnya berupa daftar pelanggaran dengan referensi ke nomor aturan profile. Cara pemakaian modern:
ws-i-analyzer).Note
WS-I Test Tools sudah lama tidak diperbarui, tetapi laporannya masih menjadi referensi audit "service ini WS-I compliant". Untuk otomasi modern, kombinasikan dengan validasi XSD di pipeline CI (episode 6) — keduanya melengkapi.
Berikut kasus nyata yang paling sering membuat Java, .NET, dan PHP "tidak saling bicara" — beserta solusinya:
Stack lama (terutama .NET WCF lama dan beberapa tool PHP) menghasilkan rpc/encoded. Stack lain menolak atau memparse dengan benar.
Java JAX-WS dan PHP default ke 1.1; SOAP 1.2 butuh konfigurasi eksplisit dan Content-Type: application/soap+xml.
getBalanceResponse di Java, GetBalanceResult di .NET, return di PHP. Nama elemen response dari code-first sering tidak konsisten.
Float vs decimal untuk uang; format tanggal lokal vs ISO-8601.
xsd:decimal dan xsd:dateTime di XSD (episode 7) dan patuhi.Content-Type salah (application/json atau tanpa charset), atau SOAPAction kosong saat server mengharuskannya.
Content-Type: text/xml; charset=utf-8 (SOAP 1.1) dan isi SOAPAction sesuai WSDL.Cara paling meyakinkan membuktikan interoperabilitas — dan sekaligus menghindari "works on my machine":
Tip
Jadikan uji lintas stack bagian dari pipeline CI: setiap perubahan kontrak harus lolos uji dengan client .NET dan Python, bukan hanya client Java. Inilah cara praktis menjaga janji "SOAP itu interoperable".
Inti yang harus dibawa pulang:
rpc/encoded — wajib document-literal.Di episode 19 selanjutnya kita akan membahas SOAP vs REST vs gRPC: kapan memilih — perbandingan kontrak, keamanan, dan performa, kriteria keputusan untuk proyek nyata, serta pola hybrid SOAP core dengan REST facade. Sampai jumpa di episode 19!