Tempat saya bekerja sedang mencoba untuk membuat beberapa aturan dasar, dan perdebatan yang kita miliki sekarang adalah perpustakaan lokal vs layanan web untuk penggunaan kembali kode. Layanan web tampaknya menjadi pilihan populer di sebagian besar perusahaan, dan itulah yang cenderung dilakukan oleh sebagian besar pengembang.
Saya tidak bisa melihat bagaimana Anda dapat menggunakan layanan web secara efektif untuk pekerjaan serius apa pun. Bagaimana saya dapat dengan aman melakukan beberapa panggilan layanan jika saya tidak dapat menggunakan transaksi?
Katakanlah saya memiliki pekerjaan cron yang mengambil pelanggan dari database kami yang memenuhi persyaratan tertentu yang harus diberitahukan kepada mereka. Mereka mengirim faks, email, dan tiket dibuat untuk melacak masalah secara internal. Itu adalah 3 panggilan layanan berbeda yang akan terjadi untuk setiap pelanggan dalam satu loop.
Jika kesalahan terjadi di mana saja di sana, mungkin saja, misalnya, faks dan email dikirim ke pelanggan, tetapi tiket tidak dibuat. Atau lebih buruk lagi, pekerjaan cron ini dapat mengandung bug yang menyebabkannya gagal pada titik yang sama setiap waktu, dan berulang kali mengirim email ke pelanggan yang sama. Jika perpustakaan itu semuanya lokal, semuanya hanya bisa dibungkus dalam transaksi, dan tidak ada yang terjadi. Tapi kami menggunakan layanan web dalam contoh ini.
Perhatikan bahwa metode email dan faks benar-benar memasukkan data ke dalam tabel antrian yang didukung database, yang pada gilirannya ditangani oleh proses pekerjaan cron yang terpisah. Jadi panggilan ke metode layanan "kirim email" dan "kirim faks" bisa dibatalkan efek sampingnya jika diperlukan.
Sebuah opsi adalah menempatkan seluruh potongan kode ini dalam layanan web itu sendiri, sehingga layanan web itu sendiri akan memanggil metode pembuatan email, faks, dan tiket dalam suatu transaksi. Tapi kemudian kami membuat metode layanan web hanya untuk penggunaan transaksi; tidak ada alasan yang sah bahwa kita akan benar-benar perlu memanggil metode ini dari mana saja kecuali skrip cron yang satu ini.
Bagaimana biasanya Anda menangani metode ini?