Dalam konteks ini, kata "rintisan" digunakan sebagai pengganti "tiruan", tetapi demi kejelasan dan ketepatan, penulis seharusnya menggunakan "tiruan", karena "tiruan" adalah semacam rintisan, tetapi untuk pengujian. Untuk menghindari kebingungan lebih lanjut, kita perlu mendefinisikan apa itu rintisan.
Dalam konteks umum, rintisan adalah bagian dari program (biasanya fungsi atau objek) yang merangkum kompleksitas pemanggilan program lain (biasanya terletak di mesin lain, VM, atau proses - tetapi tidak selalu, itu juga bisa lokal. obyek). Karena program sebenarnya yang akan dipanggil biasanya tidak terletak di ruang memori yang sama, pemanggilannya memerlukan banyak operasi seperti pengalamatan, melakukan pemanggilan jarak jauh yang sebenarnya, menyusun / membuat serial data / argumen yang akan diteruskan (dan sama dengan hasil potensial), bahkan mungkin berurusan dengan otentikasi / keamanan, dan sebagainya. Perhatikan bahwa dalam beberapa konteks, stub juga disebut proxy (seperti proxy dinamis di Java).
Tiruan adalah jenis rintisan yang sangat spesifik dan terbatas, karena tiruan adalah pengganti fungsi atau objek lain untuk pengujian. Dalam prakteknya kita sering menggunakan tiruan sebagai program lokal (fungsi atau objek) untuk menggantikan program jarak jauh di lingkungan pengujian. Dalam kasus apapun, tiruan tersebut dapat mensimulasikan perilaku aktual dari program yang diganti dalam konteks terbatas.
Jenis rintisan yang paling terkenal jelas untuk pemrograman terdistribusi, ketika perlu memanggil prosedur jarak jauh ( RPC ) atau objek jarak jauh ( RMI , CORBA ). Sebagian besar framework / library pemrograman terdistribusi mengotomatiskan pembuatan rintisan sehingga Anda tidak perlu menulisnya secara manual. Stub dapat dibuat dari definisi antarmuka, ditulis dengan IDL misalnya (tetapi Anda juga dapat menggunakan bahasa apa pun untuk menentukan antarmuka).
Biasanya, di RPC, RMI, CORBA, dan seterusnya, ada yang membedakan stub sisi klien , yang sebagian besar menangani penyusunan / serialisasi argumen dan melakukan pemanggilan jarak jauh, dan stub sisi server , yang sebagian besar menangani unmarshaling / deserializing argumen dan benar-benar menjalankan fungsi / metode jarak jauh. Jelas, stub klien terletak di sisi klien, sedangkan stub sever (sering disebut kerangka) terletak di sisi server.
Menulis rintisan yang efisien dan umum yang baik menjadi cukup menantang saat berurusan dengan referensi objek. Sebagian besar kerangka kerja objek terdistribusi seperti RMI dan CORBA menangani referensi objek terdistribusi, tetapi itu adalah sesuatu yang dihindari sebagian besar pemrogram di lingkungan REST misalnya. Biasanya, dalam lingkungan REST, pemrogram JavaScript membuat fungsi rintisan sederhana untuk merangkum pemanggilan AJAX (serialisasi objek didukung oleh JSON.parse
dan JSON.stringify
). Proyek Swagger Codegen menyediakan dukungan ekstensif untuk secara otomatis menghasilkan rintisan REST dalam berbagai bahasa.