Bu bağlamda, "saplama" kelimesi "sahte" yerine kullanılır, ancak açıklık ve kesinlik adına, yazar "sahte" kullanmalıdır, çünkü "sahte" bir tür taslaktır, ancak test etmek içindir. Daha fazla kafa karışıklığını önlemek için, saplamanın ne olduğunu tanımlamamız gerekir.
Genel bağlamda, saplama, başka bir programı (genellikle başka bir makinede, sanal makinede veya işlemde bulunur - ancak her zaman olmamakla birlikte, yerel bir program da olabilir) çağırmanın karmaşıklığını kapsayan bir program parçasıdır (tipik olarak bir işlev veya nesne) nesne). Çağrılacak asıl program genellikle aynı bellek alanında bulunmadığından, onu çağırmak, adresleme, gerçek uzaktan çağrının gerçekleştirilmesi, aktarılacak verileri / bağımsız değişkenleri sıralama / serileştirme (ve potansiyel sonuçla aynı) gibi birçok işlemi gerektirir, hatta belki kimlik doğrulama / güvenlikle uğraşmak, vb. Bazı bağlamlarda, stub'ların proxy olarak da adlandırıldığını unutmayın (Java'daki dinamik proxy'ler gibi).
Sahte, çok özel ve kısıtlayıcı bir saplama türüdür, çünkü sahte, test için başka bir işlevin veya nesnenin yerine geçer. Pratikte, test ortamında uzaktaki bir programı değiştirmek için yerel programlar (işlevler veya nesneler) olarak taklitleri sıklıkla kullanırız. Her durumda, sahte, değiştirilen programın gerçek davranışını kısıtlı bir bağlamda simüle edebilir.
En ünlü saplama türleri, uzak prosedürleri ( RPC ) veya uzak nesneleri ( RMI , CORBA ) çağırmaya ihtiyaç duyulduğunda açıkça dağıtılmış programlama içindir . Çoğu dağıtılmış programlama çerçevesi / kitaplığı, saplama oluşturmayı otomatikleştirir, böylece bunları manuel olarak yazmak zorunda kalmazsınız. Stub'lar, örneğin IDL ile yazılmış bir arayüz tanımından oluşturulabilir (ancak arayüzleri tanımlamak için herhangi bir dili de kullanabilirsiniz).
Tipik olarak, RPC, RMI, CORBA ve benzerlerinde, çoğunlukla argümanların sıralanması / serileştirilmesi ve uzaktan çağrının gerçekleştirilmesi ile ilgilenen istemci tarafı saplamaları ve çoğunlukla unmarshaling / deserialize etme ile ilgilenen sunucu tarafı saplamaları ayırt edilir. argümanlar ve aslında uzak işlevi / yöntemi çalıştırır. Açıkçası, istemci saplamaları istemci tarafında bulunurken sunucu saplamaları (genellikle iskeletler olarak adlandırılır) sunucu tarafında bulunur.
İyi verimli ve genel taslaklar yazmak, nesne referanslarıyla uğraşırken oldukça zor hale gelir. RMI ve CORBA gibi çoğu dağıtılmış nesne çerçevesi, dağıtılmış nesne referanslarıyla ilgilenir, ancak bu, örneğin çoğu programcının REST ortamlarında kaçındığı bir şeydir. Tipik olarak, DİNLENME ortamlarda, JavaScript programcılar AJAX çağırmaları kapsüllemek için basit saplama işlevleri (nesne seri ile desteklenmektedir yapmak JSON.parse
ve JSON.stringify
). Swagger Codegen projesi otomatik olarak çeşitli dillerde DİNLENME koçanları üretmek için geniş bir destek sağlar.