Belajar SOAP - Interoperability & WS-I Basic Profile
Series/Belajar SOAP/Episode 18
Episode 18 of 23

Belajar SOAP - Interoperability & WS-I Basic Profile

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Apa Itu WS-I Basic Profile

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.

KomponenBatasan dari Basic Profile
SOAPSOAP 1.1 (dan 1.2 di profile lanjutan); document-literal wajib
WSDLWSDL 1.1; rpc/encoded dan soap:encoding dilarang
HTTPBinding HTTP standar; Content-Type sesuai (text/xml untuk SOAP 1.1)
XMLNamespace benar, serialisasi sesuai XSD, tanpa konstruksi ambigu
AttachmentsSwA tidak didukung; MTOM direkomendasikan

Aturan inti yang paling sering dilanggar: rpc/encoded tidak diizinkan. Inilah sumber utama incompatibility sejarah antara stack.

Verifikasi dengan WS-I Test Tools

WS-I menyediakan tool verifikasi (WS-I Test Tools) yang menguji WSDL dan pertukaran pesan terhadap aturan profile:

Alur verifikasi WS-I
WSDL + request/response log
  -> WS-I Test Tools (analyzer)
  -> Laporan conformance: pass / fail + alasan

Hasilnya berupa daftar pelanggaran dengan referensi ke nomor aturan profile. Cara pemakaian modern:

  1. Simpan WSDL beserta contoh request dan response (dari SoapUI atau log).
  2. Jalankan analyzer (tool CLI/Java WS-I Test Tools, atau tool modern seperti ws-i-analyzer).
  3. Perbaiki pelanggaran sampai lulus.

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.

Incompatibility Lintas Stack yang Paling Umum

Berikut kasus nyata yang paling sering membuat Java, .NET, dan PHP "tidak saling bicara" — beserta solusinya:

1. rpc/encoded vs document/literal

Stack lama (terutama .NET WCF lama dan beberapa tool PHP) menghasilkan rpc/encoded. Stack lain menolak atau memparse dengan benar.

  • Solusi: tulis ulang WSDL ke document-literal. Ini perubahan besar — lakukan bersamaan dengan versioning (episode 10).

2. Perbedaan namespace SOAP 1.1 vs 1.2

Java JAX-WS dan PHP default ke 1.1; SOAP 1.2 butuh konfigurasi eksplisit dan Content-Type: application/soap+xml.

  • Solusi: samakan versi SOAP di kedua pihak; jangan campur. Jika mitra kaku, ikuti versi mitra.

3. Naming hasil generate

getBalanceResponse di Java, GetBalanceResult di .NET, return di PHP. Nama elemen response dari code-first sering tidak konsisten.

  • Solusi: contract-first (episode 3) — WSDL menentukan nama elemen sekali, semua client patuh.

4. Tipe data numerik dan tanggal

Float vs decimal untuk uang; format tanggal lokal vs ISO-8601.

  • Solusi: deklarasikan xsd:decimal dan xsd:dateTime di XSD (episode 7) dan patuhi.

5. Header HTTP yang tidak standar

Content-Type salah (application/json atau tanpa charset), atau SOAPAction kosong saat server mengharuskannya.

  • Solusi: gunakan Content-Type: text/xml; charset=utf-8 (SOAP 1.1) dan isi SOAPAction sesuai WSDL.

Pola Pengujian Interop

Cara paling meyakinkan membuktikan interoperabilitas — dan sekaligus menghindari "works on my machine":

100%
  1. Contract-first: satu WSDL sebagai sumber kebenaran.
  2. Generate client di semua stack dari WSDL yang sama.
  3. Jalankan skenario uji identik di semua client (happy path + fault path + edge case).
  4. Jika semua lulus — interoperabilitas terbukti; jika tidak, salah satu pihak melanggar profile dan WSDL yang harus diperbaiki.

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".

Penutup

Inti yang harus dibawa pulang:

  • WS-I Basic Profile menyempitkan SOAP 1.1 + WSDL 1.1 + HTTP ke subset yang dijamin interoperable.
  • Pelanggaran terbesar sepanjang sejarah: rpc/encoded — wajib document-literal.
  • Verifikasi conformance dengan WS-I Test Tools; validasi XSD di CI sebagai pelengkap.
  • Incompatibility umum: version SOAP, naming hasil generate, tipe data, dan header HTTP.
  • Buktikan interop dengan generate client di semua stack dari satu WSDL dan uji skenario identik di CI.

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!

Belajar SOAP - Interoperability & WS-I Basic Profile | Belajar SOAP